6 лучших методов, используемых в разработке функций [машинное обучение]
Опубликовано: 2021-03-12Оглавление
Введение
Разработка признаков — один из наиболее важных аспектов любого проекта по науке о данных. Инжиниринг признаков относится к методам, используемым для извлечения и уточнения признаков из необработанных данных. Методы разработки признаков используются для создания правильных входных данных для модели и повышения производительности модели.
Модели обучаются и строятся на функциях, которые мы извлекаем из необработанных данных, чтобы обеспечить требуемый результат. Может случиться так, что данные, которые у нас есть, недостаточно хороши для того, чтобы модель могла что-то извлечь из них. Если мы сможем получить функции, которые находят решение нашей основной проблемы, это окажется хорошим представлением данных. Чем лучше представление данных, тем лучше будет соответствие модели, и модель будет демонстрировать лучшие результаты.
Рабочий процесс любого проекта по науке о данных — это итеративный процесс, а не одноразовый процесс. В большинстве проектов по науке о данных базовая модель создается после создания и уточнения функций из необработанных данных. После получения результатов базовой модели некоторые существующие функции могут быть изменены, а некоторые новые функции также получены из данных для оптимизации результатов модели.
Разработка функций
Методы, используемые в процессе разработки признаков, могут давать одинаковые результаты для всех алгоритмов и наборов данных. Вот некоторые из распространенных методов, используемых в процессе разработки признаков:
1. Преобразование ценности
Значения признаков можно преобразовать в какую-либо другую метрику с помощью таких параметров, как логарифмическая функция, корневая функция, экспоненциальная функция и т. д. Для этих функций существуют некоторые ограничения, и они могут использоваться не для всех типов наборов данных. Например, корневое преобразование или логарифмическое преобразование нельзя применить к объектам, которые содержат отрицательные значения.
Одной из наиболее часто используемых функций является логарифмическая функция. Логарифмическая функция может помочь уменьшить асимметрию данных, которые могут быть смещены к одному концу. Преобразование журнала имеет тенденцию нормализовать данные, что снижает влияние выбросов на производительность модели.
Это также помогает уменьшить величину значений в функции. Это полезно, когда мы используем некоторые алгоритмы, которые считают признаки с большими значениями более важными, чем другие.
2. Вменение данных
Вменение данных относится к заполнению пропущенных значений в наборе данных некоторым статистическим значением. Этот метод важен, поскольку некоторые алгоритмы не работают с пропущенными значениями, что либо ограничивает нас в использовании других алгоритмов, либо вменяет эти пропущенные значения. Предпочтительно использовать его, если процент пропущенных значений в функции меньше (около 5–10%), иначе это приведет к большему искажению в распределении данных. Существуют разные способы сделать это для числовых и категориальных признаков.
Мы можем заменить отсутствующие значения в числовых характеристиках произвольными значениями в пределах заданного диапазона или статистическими мерами, такими как среднее значение, медиана и т. д. Эти вменения должны быть сделаны осторожно, поскольку статистические меры склонны к выбросам, которые скорее ухудшат производительность модели. . Для категориальных признаков мы можем вменить отсутствующие значения с дополнительной категорией, отсутствующей в наборе данных, или просто вменить их как отсутствующие, если категория неизвестна.
Первое требует хорошего понимания предметной области, чтобы иметь возможность найти правильную категорию, в то время как второе является скорее альтернативой для обобщения. Мы также можем использовать моду для вменения категориальных признаков. Вменение данных с модой также может привести к чрезмерному представлению наиболее часто встречающейся метки, если число отсутствующих значений слишком велико.
Присоединяйтесь к онлайн- курсам по искусственному интеллекту в ведущих университетах мира — магистерским программам, программам последипломного образования для руководителей и программам повышения квалификации в области машинного обучения и искусственного интеллекта, чтобы ускорить свою карьеру.
3. Категориальное кодирование
Одним из требований многих алгоритмов является то, что входные данные должны быть числовыми по своей природе. Это оказывается ограничением для использования категориальных признаков в таких алгоритмах. Чтобы представить категориальные признаки в виде чисел, нам нужно выполнить категориальное кодирование. Вот некоторые из методов преобразования категориальных признаков в числа:
1. Однократное кодирование: – Однократное кодирование создает новый признак, который принимает значение (0 или 1) для каждой метки в категориальном признаке. Эта новая функция указывает, присутствует ли эта метка категории для каждого наблюдения. Например, предположим, что в категориальном признаке есть 4 метки, тогда при применении горячего кодирования будет создано 4 логических признака.
Такой же объем информации можно извлечь с помощью 3 признаков, как если бы все признаки содержали 0, тогда значение категориального признака было бы 4-й меткой. Применение этого метода увеличивает пространство признаков, если в наборе данных много категориальных признаков с большим количеством меток.
2. Частотное кодирование. Этот метод вычисляет количество или процентное соотношение каждой метки в категориальном признаке и сопоставляет ее с той же меткой. Этот метод не расширяет пространство признаков набора данных. Одним из недостатков этого метода является то, что если две или более меток имеют одинаковое количество в наборе данных, это даст карте одинаковый номер для всех меток. Это приведет к потере важной информации.
3. Порядковое кодирование. Этот метод, также известный как кодирование меток, сопоставляет отдельные значения категориального признака с числом в диапазоне от 0 до n-1, где n — это определенное количество меток в признаке. Этот метод не увеличивает пространство признаков набора данных. Но это создает порядковые отношения внутри меток в объекте.
4. Обработка выбросов
Выбросы — это точки данных, значения которых сильно отличаются от остальной части лота. Чтобы справиться с этими выбросами, нам нужно сначала их обнаружить. Мы можем обнаружить их с помощью визуализаций, таких как диаграмма и диаграмма рассеяния в Python, или мы можем использовать межквартильный диапазон (IQR). Межквартильный размах — это разница между первой четвертью (25-й процентиль) и третьей четвертью (75-й процентиль).
Значения, которые не попадают в диапазон (Q1 – 1,5*IQR) и (Q3 + 1,5*IQR), называются выбросами. После обнаружения выбросов мы можем обработать их, удалив их из набора данных, применив некоторое преобразование, обработав их как отсутствующие значения, чтобы вменить их с помощью некоторого метода и т. д.
5. Масштабирование функций
Масштабирование функций используется для изменения значений функций и приведения их в диапазон. Важно применять этот процесс, если мы используем такие алгоритмы, как SVM, линейная регрессия, KNN и т. д., которые чувствительны к величине значений. Чтобы масштабировать функции, мы можем выполнить стандартизацию, нормализацию, мин-макс масштабирование. Нормализация изменяет масштаб значений диапазона признаков от -1 до 1. Это отношение вычитания каждого наблюдения и среднего значения к вычитанию максимального и минимального значения этого признака. т.е. [X – среднее (X)]/[max(X) – min(X)].
При масштабировании минимум-максимум вместо среднего значения используется минимальное значение признака. Этот метод очень чувствителен к выбросам, поскольку учитывает только конечные значения функции. Стандартизация изменяет масштаб значений функции от 0 до 1. Она не нормализует распределение данных, тогда как предыдущий метод сделает это.
6. Обработка переменных даты и времени
Мы сталкиваемся со многими переменными, которые указывают дату и время в разных форматах. Мы можем получить больше функций из даты, таких как месяц, день недели / месяца, год, выходные или нет, разница между датами и т. Д. Это может позволить нам извлекать более полезную информацию из набора данных. Из функций времени мы также можем извлечь информацию, такую как часы, минуты, секунды и т. Д.
Одна вещь, которую большинство людей упускают из виду, заключается в том, что все переменные даты и времени являются циклическими функциями. Например, предположим, нам нужно проверить, какой день между средой (3) и субботой (7) ближе к воскресенью (будет равен 1). Теперь мы знаем, что суббота ближе, но в числовом выражении это будет среда, так как расстояние между 3 и 1 меньше, чем расстояние между 7 и 1. То же самое можно применить, когда формат времени находится в 24-часовом формате.
Чтобы решить эту проблему, мы можем выразить эти переменные как представление функции sin и cos. Для функции «минута» мы можем применить функцию sin и cos, используя NumPy, чтобы представить ее в циклическом виде следующим образом:
minute_feature_sin = np.sin(df['minute_feature']*(2*π/60))
minute_feature_cos = np.cos(df['minute_feature']*(2*π/60))
(Примечание: разделите на 60, потому что в часе 60 минут. Если вы хотите делать это за месяцы, разделите на 12 и так далее)
Нанеся эти функции на точечный график, вы заметите, что эти функции демонстрируют циклическую связь между собой.
Читайте также: Идеи и темы проекта машинного обучения
Заключение
В статье основное внимание уделялось важности разработки признаков, а также упоминались некоторые распространенные методы, используемые в процессе разработки признаков. Это зависит от алгоритма и имеющихся данных, чтобы решить, какие методы из всех перечисленных выше обеспечат лучшее понимание.
Но это действительно сложная уловка, и ее небезопасно предполагать, поскольку наборы данных могут быть разными, и алгоритмы, используемые для данных, также могут различаться. Лучший подход — следовать поэтапному подходу и отслеживать модели, которые были построены, вместе с их результатами, а не бездумно выполнять разработку признаков.
Если вам интересно узнать больше о машинном обучении, ознакомьтесь с программой Executive PG IIIT-B и upGrad по машинному обучению и искусственному интеллекту , которая предназначена для работающих профессионалов и предлагает более 450 часов интенсивного обучения, более 30 тематических исследований и заданий, IIIT -B статус выпускника, 5+ практических практических проектов и помощь в трудоустройстве в ведущих фирмах.
Каковы недостатки использования метода вменения данных на основе среднего медианного значения?
При использовании среднего вменения связи и корреляции между переменными не сохраняются. Но вменение среднего значения сохраняет среднее значение наблюдаемых данных. В результате, даже если бы все данные случайно отсутствовали, средняя оценка оставалась бы несмещенной. Дисперсия вмененных переменных уменьшается с использованием среднего вменения. Вменение среднего значения уменьшает стандартные ошибки, делая большинство проверок гипотез и вычислений доверительных интервалов неточными. Таким образом, ошибки типа I совершаются бессознательно.
Почему требуется извлечение признаков?
Извлечение признаков используется для поиска наименьшего и наиболее информативного набора признаков (отличных шаблонов) с целью повышения эффективности классификатора. Извлечение признаков помогает сократить количество ненужных данных в наборе данных, чтобы акцент делался только на релевантной информации и признаках. Наконец, сокращение данных облегчает машине разработку модели с меньшими усилиями, а также ускоряет процессы обучения и обобщения в процессе машинного обучения. Наиболее важным применением инженерии признаков является классификация биомедицинских сигналов, где выделение признаков является важным элементом, поскольку, если признаки не выбраны тщательно, производительность классификации может пострадать.
Есть ли минусы использования метода извлечения признаков?
Извлечение функций привело к появлению некоторых новых функций, которые не могут быть прочитаны или поняты обычными людьми. Масштабируемость — еще одна проблема, возникающая при извлечении признаков. Если наборы данных большие, некоторые методы извлечения признаков не могут быть выполнены. В частности, было бы невозможно реализовать сложные нелинейные подходы к извлечению признаков. Большинство методов полагаются на некоторую форму аппроксимации для эффективного решения проблемы выбора признаков, которая в определенных ситуациях не способна решить точную проблему.