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

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

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

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

Цели разработки признаков:

· Подготовка правильного набора входных данных, уплотняемого с помощью алгоритмов машинного обучения.

· Повышение производительности модели машинного обучения.

Согласно опросу, Data Scientist тратит в среднем 60% времени на подготовку данных. В этой статье давайте разберемся с основными методами Feature Engineering. Если проектирование признаков выполнено правильно, прогностическая сила алгоритма машинного обучения увеличивается.

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

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

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

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

1. Вменение:

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

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

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

Столбец может содержать числовое значение или категориальное значение. Наилучший способ вменения Числового значения –использовать статистический метод median() столбца. Поскольку среднее/среднее значение столбца приводит к выбросам, мы используем медиану для вменения.

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

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

Любое наблюдение, которое слишком далеко от остальных наблюдений, приводит к выбросам. Первым шагом в работе с выбросами является их обнаружение. Лучший способ обнаружить выбросы — наглядно продемонстрировать данные, что дает возможность принять решение с высокой точностью. Мы можем использовать коробочную диаграмму, Z-оценку или расстояние Кука, чтобы определить выбросы.

Обрезка выбросов имеет смысл, когда мы имеем дело с большим количеством наблюдений. Статистические методологии, которые помогают в обнаружении выбросов, — это стандартное отклонение и процентили.

3. Операции объединения/группировки:

Биннинг может применяться как к числовым, так и к категориальным данным. Основная цель бинирования – сделать модель надежной и избежать переобучения.

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

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

Имейте в виду, что для применения Log Transform к данным у нас должны быть только положительные значения в данных. Мы также можем добавить 1 к данным перед преобразованием. Таким образом, мы гарантируем, что выходные данные Log Transform также будут положительными.

5. Одно горячее кодирование:

Горячее кодирование — один из наиболее распространенных методов кодирования в машинном обучении. Этот метод распространяет двоичное значение в столбце флагов и присваивает им 0 или 1.

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

Функция get_dummies библиотеки Pandas сопоставляет N различных значений в столбце с N-1 двоичными столбцами.

6. Операции группировки

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

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

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

III. Третий вариант — применить функцию groupby после применения горячего кодирования.

Числовые столбцы группируются с использованием суммы и среднегофункций.

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

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

Например, столбец Имя содержит имя и фамилию человека. Функция Split() используется для разделения функций.

Нас интересует только Имя, приведенный ниже код помогает нам в разделении

Разделение признаков является жизненно важным шагом в повышении производительности модели, что упрощает выполнение других методов проектирования признаков.

8. Масштабирование

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

Типы масштабирования:

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

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

Приятного обучения..!

Спасибо — Павитра Джаяшанкар