В этой статье мы рассмотрим, что такое Разработка функций, и обсудим некоторые методы, используемые для разработки функций.

Особенность

В машинном обучении и науке о данных признак — это отдельное измеримое свойство или характеристика явления, обычно представленная в виде структурированных столбцов. Например, у нас есть простая таблица данных со студентами и их оценками за экзамен по математике, как показано ниже:

          Name  Maths
  0   Chandler     71
  1   Ross         77
  2   Monica       91

Столбцы, т. е. Name и Maths, являются признаками в данных.

Что такое функциональная инженерия?

Feature Engineering — это шаг в науке о данных, на котором вы извлекаете функции из необработанных данных, чтобы облегчить анализ данных или машинное обучение.

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

Методы проектирования функций

Мы кратко обсудим различные методы, которые обычно используются для разработки признаков.

Вменение — Работа с пропущенными значениями

Когда мы работаем с данными, мы получаем много нулевых или отсутствующих значений. К этим отсутствующим значениям всегда следует относиться серьезно, поскольку они могут сильно повлиять на анализ и значительно снизить производительность наших моделей машинного обучения. Есть несколько способов справиться с этой проблемой.

Отбрасывание строк с отсутствующими значениями. Мы можем удалить строки, содержащие отсутствующие значения. Однако важно, чтобы мы смотрели и определяли, имеют ли признаки, на которых мы основываем наш анализ или модель, отсутствующие значения или нет, поскольку мы не хотим отбрасывать важные данные из-за отсутствующих значений признаков, которые даже не будет иметь для нас большое значение. Затем мы можем удалить строки для этих отсутствующих значений. Это не лучший способ решить проблему, потому что в некоторых случаях он действительно может уменьшить размер данных и принести больше вреда, чем пользы. Итак, у вас есть метод вменения, который сделает вашу работу намного лучше.

У нас есть два типа методов вменения в зависимости от типа данных.

Числовое вменение.Для отсутствующих значений числовых данных мы можем либо изменить значения на 0, либо установить их на среднее значение столбцов следующим образом:

data = data.fillna(0) #Replace NA value with 0
data = data.fillna(data.mean()) #Replace NA value with the mean value

Категорическое вменение —для отсутствующих значений категориальных данных мы можем изменить значение на наиболее часто встречающееся значение или изменить его на «другое».

data['column'].fillna(data['column'].value_counts().idxmax(), inplace=True)

Горячее кодирование

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

В горячем кодировании мы преобразуем наш столбец категориальных данных в несколько столбцов единиц и нулей. Например, если у нас есть столбец с именем «цвета», содержащий три значения, то есть [‘красный’, ‘зеленый’, ‘синий’], после метода кодирования мы получим:

red, green, blue
  1,     0,    0
  0,     1,    0
  0,     0,    1

Sklearn предоставляет нам класс для One-Hot Encoding, который можно импортировать и применять к данным всего одной строкой. Документацию можно посмотреть здесь.

Масштабирование функций — нормализация и стандартизация

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

Нормализация

При нормализации мы масштабируем все функции в фиксированном диапазоне от 0 до 1. Формула, используемая для нормализации:

Этот метод также называется нормализацией минимум-максимум.

Стандартизация

При стандартизации значения центрируются вокруг среднего значения с единичной дисперсией. Формула:

где μ — среднее значение, а σ — стандартное отклонение

Обработка выбросов

Выбросы — это значения, которые либо слишком высоки, либо слишком малы по сравнению с общими данными. Такие значения влияют на асимметрию данных, а также влияют на предсказание модели. Поэтому очень важно обрабатывать выбросы. Некоторые из методов заключаются в следующем:

  • Удалите значения. Один из способов борьбы с выбросами — удалить их из общего распределения, но этот метод не всегда самый эффективный, поскольку при этом могут быть потеряны важные данные.
  • Вменение: мы могли бы просто рассматривать выбросы как пропущенные значения и выполнять вменение, как обсуждалось ранее.
  • Ограничение максимальных/минимальных значений.В этом методе мы можем заменить максимальные/минимальные значения некоторыми произвольными максимальными/минимальными значениями, которые укажут, что выше или ниже этого значения переменная будет вести себя аналогично способ.

Преобразование журнала

Чтобы обрабатывать искаженные данные (чтобы сделать их более нормальными), мы используем логарифмическое преобразование. Этот метод имеет более чем одно преимущество, поскольку он также уменьшает нашу проблему с выбросами за счет уменьшения эффекта, создаваемого выбросом.

Важно помнить, что этот метод нельзя реализовать непосредственно для данных с отрицательным значением, так как это вызовет ошибку. Таким образом, либо следует использовать другой подход, либо можно добавить 1, чтобы изменить значения данных на положительные, т. Е. Log (x + 1).

Разделение функций

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

Name                     Age
Mr. Rob Stark             25
Mr. Balian de Ibelin      30
Miss Mary Jane            23
Mrs. Caitylin Stark       50

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

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

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

Вывод

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

Предыдущая статья

Об Ахмаде Сачале

О красном буфере