Инженерия признаков
Инженерия признаков (англ. feature engineering) — это процесс преобразования исходных данных в набор признаков (features), которые наиболее эффективно представляют информацию, необходимую для решения задачи машинного обучения или статистического моделирования. Является одним из ключевых этапов подготовки данных (data preprocessing), наряду с очисткой, нормализацией и выбором признаков. Качество и релевантность сгенерированных признаков напрямую влияют на точность, интерпретируемость и вычислительную эффективность модели.
Цели и задачи
Основная цель инженерии признаков — улучшить производительность алгоритмов, которые обучаются на этих данных. Задачи включают:
- Увеличение информативности: создание признаков, которые выявляют скрытые закономерности, не очевидные из исходных переменных (например, отношение двух величин, разность дат).
- Снижение размерности: замена большого числа исходных признаков меньшим количеством более информативных, что уменьшает риск переобучения и ускоряет обучение.
- Улучшение интерпретируемости: преобразование данных в форму, понятную эксперту (например, группировка непрерывных значений в категории).
- Адаптация к алгоритму: приведение данных к формату, требуемому конкретным методом машинного обучения (например, кодирование категориальных переменных для линейных моделей).
Основные методы
Инженерия признаков включает несколько категорий техник, применяемых в зависимости от типа данных и задачи.
Создание новых признаков
Этот метод предполагает генерацию признаков на основе существующих с помощью математических, логических или статистических операций.
- Арифметические комбинации: сложение, вычитание, умножение, деление двух или более признаков (например, площадь прямоугольника как произведение длины и ширины).
- Агрегация: вычисление статистических показателей (сумма, среднее, медиана, стандартное отклонение, количество) для группы записей (например, средняя сумма покупок клиента за месяц).
- Разность дат: вычисление временных интервалов между событиями (например, количество дней между регистрацией и первой покупкой).
- Полиномиальные признаки: возведение признаков в степень или создание их произведений для учета нелинейных зависимостей (например, \(x^2\), \(x \cdot y\)).
Преобразование признаков
Преобразование изменяет шкалу или распределение существующих признаков, не добавляя новой информации.
- Нормализация (Min-Max scaling): приведение значений к диапазону [0, 1] или [-1, 1]. Формула: \(x' = \frac{x - \min(x)}{\max(x) - \min(x)}\).
- Стандартизация (Z-score normalization): центрирование данных относительно среднего и масштабирование к единичному стандартному отклонению. Формула: \(x' = \frac{x - \mu}{\sigma}\).
- Логарифмическое преобразование: применение логарифма (обычно натурального) для сглаживания асимметричных распределений и уменьшения влияния выбросов.
- Бокса — Кокса преобразование: семейство степенных преобразований, параметрически подбираемых для стабилизации дисперсии и приведения данных к нормальному распределению.
Кодирование категориальных признаков
Категориальные переменные (например, «цвет», «город») требуют преобразования в числовой формат.
- One-hot encoding (прямое кодирование): создание для каждой категории отдельного бинарного признака (0 или 1). Например, для признака «цвет» с категориями «красный», «синий», «зеленый» создаются три признака:
is_red,is_blue,is_green. - Label encoding (порядковое кодирование): присвоение каждой категории уникального целого числа (например, «красный»=1, «синий»=2, «зеленый»=3). Не рекомендуется для линейных моделей, так как вносит ложный порядок.
- Target encoding (целевое кодирование): замена категории на среднее значение целевой переменной для этой категории. Используется с осторожностью из-за риска переобучения.
- Frequency encoding (частотное кодирование): замена категории на частоту её встречаемости в данных.
Обработка текстовых данных
Для анализа текста (NLP) применяются специализированные методы.
- Bag of words (мешок слов): представление текста как вектора, где каждый элемент — количество вхождений слова из словаря.
- TF-IDF (Term Frequency — Inverse Document Frequency): взвешивание слов по их частоте в документе и редкости во всём корпусе. Формула: \(TF-IDF = TF \times IDF\), где \(IDF = \log(\frac{N}{df})\) (\(N\) — количество документов, \(df\) — количество документов, содержащих слово).
- Word embeddings (векторные представления слов): техники (Word2Vec, GloVe, FastText), которые отображают слова в плотные векторы фиксированной размерности, сохраняя семантические отношения.
Обработка временных рядов
Для данных, упорядоченных во времени, характерны свои признаки.
- Лаговые признаки (lags): значения переменной в предыдущие моменты времени (например, цена акции вчера).
- Скользящие статистики: среднее, медиана, стандартное отклонение за окно времени (например, 7-дневная скользящая средняя).
- Циклические признаки: преобразование временных меток (час, день недели, месяц) в синус и косинус для учета цикличности (например, \( \sin(\frac{2\pi \cdot hour}{24}) \)).
Процесс инженерии признаков
Инженерия признаков — итеративный процесс, который обычно включает следующие этапы:
- Анализ данных (EDA): визуализация распределений, корреляций, выявление выбросов и пропусков. На этом этапе формулируются гипотезы о потенциально полезных признаках.
- Генерация признаков: применение описанных методов на основе гипотез и знаний предметной области (domain knowledge).
- Валидация признаков: проверка влияния новых признаков на качество модели с помощью кросс-валидации. Используются метрики, такие как точность, F1-мера, AUC-ROC, RMSE.
- Отбор признаков (feature selection): удаление избыточных, шумных или неинформативных признаков для предотвращения переобучения и снижения вычислительной сложности. Методы включают фильтрацию (по корреляции, взаимной информации), обёртки (рекурсивное удаление признаков) и встроенные методы (L1-регуляризация, важность признаков в деревьях решений).
- Итерация: повторение шагов 1–4 до достижения приемлемого качества модели.
Значение в машинном обучении
Инженерия признаков часто считается более важной, чем выбор алгоритма. В соревнованиях по анализу данных (например, на платформе Kaggle) победители нередко добиваются успеха за счет сложных и продуманных признаков, а не за счет применения экзотических моделей. Хорошо спроектированные признаки позволяют:
- Уменьшить количество данных, необходимых для обучения.
- Повысить устойчивость модели к шуму и выбросам.
- Улучшить обобщающую способность на новых данных.
Автоматизация инженерии признаков
В последние годы разработаны инструменты для автоматической генерации признаков, такие как библиотеки Featuretools (Python) и tsfresh (для временных рядов). Они используют принципы «глубокой инженерии признаков» (deep feature synthesis), применяя последовательности операций (например, агрегацию за группой, затем разность дат) для создания тысяч потенциальных признаков. Однако автоматизация не заменяет экспертного анализа предметной области, который часто позволяет создавать наиболее информативные признаки.
Примеры
- Прогнозирование оттока клиентов: признак «количество обращений в службу поддержки за последние 30 дней» (агрегация) или «средняя сумма покупки за квартал» (агрегация по времени).
- Распознавание изображений: признаки, полученные с помощью сверточных нейронных сетей (например, границы, текстуры), или ручные признаки (гистограммы градиентов, локальные бинарные шаблоны).
- Кредитный скоринг: признак «отношение долга к доходу» (арифметическая комбинация) или «количество просрочек платежей за последние 12 месяцев» (агрегация).
Критика и ограничения
Основные недостатки инженерии признаков связаны с трудоемкостью и риском переобучения. Создание признаков требует глубоких знаний предметной области и может занимать значительную часть времени анализа данных. Слишком большое количество искусственных признаков увеличивает размерность пространства, что может привести к «проклятию размерности» и снижению производительности модели. Кроме того, некоторые созданные признаки могут быть нестабильными на новых данных или коррелировать с целевой переменной случайным образом.
Источники
- Feature Engineering for Machine Learning: Principles and Techniques for Data Scientists by Alice Zheng and Amanda Casari. O'Reilly Media, 2018.
- Applied Predictive Modeling by Max Kuhn and Kjell Johnson. Springer, 2013.
- The Elements of Statistical Learning by Trevor Hastie, Robert Tibshirani, and Jerome Friedman. Springer, 2009.
- Документация библиотеки
scikit-learn(раздел «Feature engineering»). - Featuretools: An Open Source Framework for Automated Feature Engineering by James Max Kanter and Kalyan Veeramachaneni. MIT, 2015.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →