Выполнение проектирования функций в наборе данных

Следующим шагом после изучения закономерностей в данных является разработка функций. Любая операция, выполняемая над функциями / столбцами, которая может помочь нам сделать прогноз на основе данных, может быть названа проектированием функций. Это будет включать следующее на высоком уровне:

  1. добавление новых функций
  2. устранение некоторых функций, которые рассказывают одну и ту же историю
  3. объединение нескольких функций вместе
  4. разбиение функции на несколько функций

Добавление новых функций

Предположим, вы хотите спрогнозировать продажи мороженого, перчаток или зонтика. Что общего в этих предметах? Продажи всех этих товаров зависят от «погоды» и «местоположения». Мороженое продается больше летом или в более жарких регионах, перчатки продаются больше в холодную погоду (зимой) или в более холодных регионах, и нам определенно нужен зонт в дождь. Итак, если у вас есть исторические данные о продажах для всех этих товаров, то, что поможет вашей модели лучше изучить закономерности, будет добавление погоды и областей продаж на каждом уровне данных.

Устранение некоторых функций, которые рассказывают одну и ту же историю

В целях пояснения я составил образец набора данных, в котором есть данные о телефонах разных производителей, что-то вроде приведенного ниже. Давайте проанализируем эти данные и выясним, почему мы должны удалить / исключить некоторые столбцы -

  1. Если внимательно присмотреться, в этом наборе данных есть столбец для названия бренда, столбец для названия модели и еще один столбец с названием Телефон (который в основном содержит название бренда и модели). Поэтому, если мы видим эту ситуацию, столбец Phone нам не нужен, потому что данные в этом столбце уже присутствуют в других столбцах, а разделенные данные в этом случае лучше, чем агрегированные данные.
  2. Есть еще один столбец, который не добавляет никаких значений к набору данных - Масштаб памяти. Все значения памяти выражены в «ГБ», поэтому нет необходимости сохранять дополнительный столбец, который не отображается. любые вариации в наборе данных, потому что они не помогут нашей модели изучить различные шаблоны.

Объединение нескольких функций для создания новых функций

Это означает, что мы можем использовать 2–3 функции или строки и создать новую функцию, которая лучше объясняет данные. Например, в приведенном выше наборе данных некоторые из функций, которые мы можем создать, могут быть такими: количество телефонов каждой марки, процентная доля каждого телефона соответствующей марки, количество телефонов, доступных с разным объемом памяти, цена за единицу памяти и т. Д. Это поможет модели понять данные на детальном уровне.

Разбиение функции на несколько функций

Самый распространенный пример в этом сегменте - дата и адрес. Дата в основном состоит из года, месяца и дня, скажем, в форме «28.07.2019». Таким образом, если мы разделим столбец даты на 2019, 7 или 28 июля, это поможет нам проще объединить таблицы с различными другими таблицами, а также будет легко манипулировать данными, потому что теперь вместо формат даты, нам приходится иметь дело с числами, которые намного проще.

Для того же упрощения обработки данных и упрощения объединения данных мы разбиваем данные адреса (721 Main St., Apt 24, Dallas, TX-75432) на - название улицы (721 Main St.), номер квартиры / номер дома ( Апт 24), город (Даллас), штат (Техас / Техас), почтовый индекс (75432).

Теперь, когда мы знаем, что такое разработка функций, давайте рассмотрим некоторые методы, с помощью которых мы можем выполнять разработку функций. Существуют различные методы разработки функций, но я расскажу о некоторых из наиболее распространенных методов и приемов, которые я использую в своих обычных задачах.

  1. Задержки - это означает создание столбцов для предыдущих записей временных меток (продажи за 1 день назад, продажи за 1 месяц и т. д. в зависимости от варианта использования). Эта функция поможет нам понять, например, какие продажи iPhone были проданы 1 день назад, 2 дня назад и т. Д. Это важно, потому что большинство алгоритмов машинного обучения рассматривают данные построчно, и если у нас нет записи предыдущих дней в той же строке, модель не сможет эффективно создавать шаблоны между записями текущей и предыдущей дат.
  2. Подсчет категорий. Это может быть что угодно, например, количество телефонов каждой марки, количество людей, покупающих iPhone 11pro, количество разных возрастных групп людей, покупающих Samsung Galaxy по сравнению с iPhone.
  3. Сумма / Среднее / Медиана / Кумулятивная сумма / Агрегированная сумма - любых числовых характеристик, таких как зарплата, продажи, прибыль, возраст, вес и т. д.
  4. Методы категориального преобразования (замена значений, быстрое кодирование, кодирование меток и т. д.). Эти методы используются для преобразования категориальных функций в соответствующие числовые закодированные значения, поскольку некоторые алгоритмы (например, xgboost) делают не выделять категориальных признаков. Правильная техника зависит от количества категорий в каждом столбце, количества категориальных столбцов и т. Д. Чтобы узнать больше о различных методах, проверьте этот блог и этот блог.
  5. Методы стандартизации / нормализации (min-max, стандартный масштабатор и т. д.). Могут быть некоторые наборы данных, в которых есть числовые функции, но они представлены в разных масштабах (кг, $, дюйм, кв. фут. ., так далее.). Поэтому для некоторых методов машинного обучения, таких как кластеризация, важно, чтобы у нас были все числа в одном масштабе (мы подробнее обсудим кластеризацию в следующих блогах, но пока понимайте это как создание групп точек данных в пространстве на основе сходство). Чтобы узнать больше об этом разделе, посетите эти блоги - Feature Scaling Analytics Vidhya, Handling Numerical Data O'Reilly, Standard Scaler / MinMax Scaler.

Это некоторые из самых общих методов создания новых функций, но большая часть разработки функций во многом зависит от мозгового штурма набора данных на картинке. Например, если у нас есть набор данных для сотрудников, а если у нас есть набор данных общих транзакций, разработка функций будет выполняться по-разному.

Мы можем создавать эти столбцы вручную с помощью различных функций pandas. Помимо этого, существует пакет под названием FeatureTools, который также можно использовать для создания новых столбцов путем объединения наборов данных на разных уровнях.

Это подводит нас к (отчасти) концу этапов предварительной обработки данных. После предварительной обработки данных нам нужно начать изучение различных методов машинного обучения для постановки нашей задачи. Мы обсудим это в следующих блогах. Надеюсь, вы нашли этот блог интересным и полезным! :)