Инженерия признаков

Материал из MachineLearning.

Версия от 13:06, 11 июля 2026; Imil Baltaniazov (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск


Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 13:49, 11 июля 2026 (MSD)


Инженерия признаков (feature engineering) — процесс создания, преобразования, отбора и кодирования признаков, используемых в качестве входа для моделей машинного обучения, с целью повышения их качества и обобщающей способности. Инженерия признаков связывает воедино этапы предобработки данных и построения модели и традиционно считается одним из наиболее трудоёмких, но и наиболее влияющих на итоговое качество этапов практического машинного обучения.

Содержание

Введение

Под признаком (feature) понимается измеримая характеристика объекта, используемая моделью в качестве входа. Сырые данные — таблицы транзакций, тексты, изображения, показания датчиков — редко представлены в виде, непосредственно пригодном для подачи в модель: они могут содержать пропуски, выбросы, категориальные значения без естественного числового представления или скрывать закономерности, не выражаемые напрямую в исходных полях. Инженерия признаков — это набор приёмов, преобразующих такие сырые данные в представление, из которого модель способна эффективно извлекать закономерности.

Почему инженерия признаков важна

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

Рассмотрим два характерных примера. Удачный признак: вместо того чтобы подавать модели дату рождения клиента как есть, полезно вычислить возраст — разность между текущей датой и датой рождения. Возраст напрямую коррелирует с большинством практических целевых переменных (кредитный риск, склонность к покупке определённых товаров), тогда как исходная дата в формате «день-месяц-год» такой корреляции почти не несёт: модели пришлось бы самостоятельно открыть, что именно разность дат имеет значение.

Неудачный признак — обратный случай: включение в модель идентификатора клиента или номера транзакции в качестве числового признака. Такой признак не несёт содержательной информации о целевой переменной, но может создавать иллюзию предсказательной силы за счёт случайных совпадений в обучающей выборке (data leakage через порядковый номер, коррелирующий с временем), что приводит к переобучению и резкому падению качества на новых данных.

Другой типичный пример полезного нелинейного преобразования — логарифмирование признака с сильно скошенным (skewed) распределением, например, дохода или цены: разность между доходами 10 000 и 20 000 денежных единиц содержательно отличается от разности между 1 010 000 и 1 020 000, и логарифмическое преобразование x' = \log(x+1) переводит мультипликативные отношения в аддитивные, что облегчает работу линейных моделей и стабилизирует дисперсию признака.

Создание признаков (Feature Generation)

Создание признаков — построение новых переменных на основе сырых данных, использующее либо предметные знания (domain knowledge), либо автоматические комбинаторные схемы.

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

Использование предметных знаний позволяет строить признаки, отражающие содержательные закономерности предметной области: например, в задаче кредитного скоринга — отношение суммы долга к доходу (debt-to-income ratio), в задаче анализа веб-трафика — время, проведённое на странице, делённое на число просмотренных страниц.

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

Преобразование признаков (Feature Transformation)

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

  • Min-max нормализация линейно переводит значения признака в фиксированный интервал, обычно [0,1]:
x' = \dfrac{x - x_{\min}}{x_{\max} - x_{\min}}
  • Z-нормализация (стандартизация) центрирует признак и приводит его к единичной дисперсии:
x' = \dfrac{x - \mu}{\sigma}

где \mu и \sigma — среднее и стандартное отклонение признака на обучающей выборке.

  • Робастное масштабирование (robust scaling) использует медиану и межквартильный размах вместо среднего и стандартного отклонения, что делает преобразование устойчивым к выбросам:
x' = \dfrac{x - \mathrm{median}(x)}{IQR(x)}

Степенные и логарифмические преобразования применяются к признакам с существенно асимметричным распределением для приближения его к нормальному и стабилизации дисперсии: помимо логарифма x' = \log(x+1), используются квадратный корень, обратное преобразование 1/x. Обобщением служит семейство Box-Cox:

x'(\lambda) = \begin{cases} \dfrac{x^{\lambda} - 1}{\lambda}, & \lambda \neq 0 \\ \log x, & \lambda = 0 \end{cases}

применимое лишь к строго положительным значениям, и Yeo-Johnson — его обобщение, допускающее отрицательные и нулевые значения признака за счёт кусочного определения при x \geq 0 и x < 0. В обоих случаях параметр \lambda подбирается по обучающим данным (как правило, максимизацией правдоподобия) так, чтобы преобразованное распределение было максимально близко к нормальному.

Дискретизация (binning) переводит непрерывный признак в категориальный, разбивая диапазон значений на интервалы — равношироких (equal-width), равнонаполненных по числу наблюдений (equal-frequency) либо заданных экспертно (например, возрастные группы). Дискретизация может улучшать качество для моделей, плохо улавливающих нелинейные зависимости, ценой потери части информации о точном значении признака.

Отбор признаков (Feature Selection)

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

Фильтрующие методы (filter methods) оценивают признаки независимо от конкретной модели, на основе статистических критериев связи признака с целевой переменной: коэффициент корреляции Пирсона для количественных признаков и количественной цели, критерий хи-квадрат для категориальных признаков, взаимная информация (mutual information), способная улавливать и нелинейные зависимости. Фильтрующие методы вычислительно дёшевы, но не учитывают взаимодействие признаков между собой и специфику последующей модели.

Обёрточные методы (wrapper methods) оценивают подмножества признаков, обучая на них модель и измеряя итоговое качество. Рекурсивное исключение признаков (Recursive Feature Elimination, RFE) последовательно обучает модель, ранжирует признаки по важности (например, по весам линейной модели) и исключает наименее значимые, повторяя процедуру до достижения целевого числа признаков. Последовательный отбор (forward selection, backward elimination) наращивает или сокращает набор признаков по одному, каждый раз выбирая шаг, дающий наибольший прирост качества. Обёрточные методы точнее фильтрующих, но существенно дороже вычислительно, так как требуют многократного переобучения модели.

Встроенные методы (embedded methods) выполняют отбор признаков как часть самого процесса обучения модели. L1-регуляризация (лассо-регрессия) добавляет к функции потерь штраф на сумму модулей весов, что приводит к точному обнулению весов при малоинформативных признаках:

\mathcal{L}(\theta) = \mathcal{L}_{0}(\theta) + \lambda \sum_i |\theta_i|

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

Группа методов Примеры Учитывает модель Учитывает взаимодействие признаков Вычислительная стоимость
Фильтрующие Корреляция, хи-квадрат, взаимная информация Нет Нет (обычно) Низкая
Обёрточные RFE, последовательный отбор Да Да Высокая
Встроенные L1-регуляризация, важность в деревьях Да Частично Средняя

Кодирование категориальных признаков

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

One-hot encoding представляет категориальный признак с K уникальными значениями в виде K бинарных индикаторных признаков, каждый из которых равен единице для соответствующей категории и нулю иначе. Метод не вносит ложного порядка между категориями, но плохо масштабируется при большом числе уникальных значений (высокая кардинальность), приводя к разреженным и высокоразмерным признаковым векторам.

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

Target encoding (mean encoding) заменяет каждую категорию средним значением целевой переменной по объектам этой категории на обучающей выборке. Метод компактен и эффективен для признаков высокой кардинальности, но подвержен утечке целевой переменной и переобучению, если не применяется с должной регуляризацией — обычно сглаживанием к общему среднему и вычислением кодировки только по данным, не входящим в текущий фолд кросс-валидации (out-of-fold encoding).

WOE (Weight of Evidence), распространённый в кредитном скоринге, кодирует категорию через логарифм отношения долей «плохих» и «хороших» исходов внутри категории:

WOE_k = \log\left(\dfrac{\%\,\text{good}_k}{\%\,\text{bad}_k}\right)

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

Embedding-кодирование представляет каждую категорию вектором в непрерывном пространстве меньшей размерности, обучаемым совместно с основной моделью (типично для нейронных сетей, работающих с категориальными признаками высокой кардинальности — идентификаторами пользователей, товаров, слов). В отличие от one-hot, эмбеддинги способны улавливать содержательное сходство между категориями через близость соответствующих векторов.

Метод Подходит для высокой кардинальности Риск утечки цели Вносит ложный порядок Типичное применение
One-hot encoding Нет Нет Нет Линейные модели, признаки низкой кардинальности
Label encoding Да Нет Да Древовидные модели
Target encoding Да Да (требует регуляризации) Нет Градиентный бустинг, высокая кардинальность
WOE Да Умеренный Нет Кредитный скоринг, логистическая регрессия
Embedding Да Нет (при должной валидации) Нет Нейронные сети, очень высокая кардинальность

Обработка пропусков

Пропущенные значения — распространённая особенность реальных данных, требующая явного решения: удалить объекты или признаки с пропусками либо заполнить их (impute). Удаление оправдано, когда доля пропусков в признаке или объекте крайне высока либо когда пропуски распределены случайно и их доля мала настолько, что удаление не искажает выборку; в противном случае предпочтительно заполнение, поскольку удаление сокращает и без того ограниченный объём данных.

Простейшие стратегии заполнения — средним или медианой значением признака (медиана предпочтительна при наличии выбросов) для количественных признаков и модой (наиболее частым значением) для категориальных. Более точные стратегии учитывают связь пропущенного признака с остальными: регрессионное заполнение обучает вспомогательную модель, предсказывающую значение признака по остальным признакам объекта, а KNN-заполнение восстанавливает пропуск как среднее (или взвешенное среднее) значения признака у ближайших по остальным признакам соседей. Существенно также фиксировать сам факт пропуска отдельным бинарным индикаторным признаком — отсутствие значения нередко само по себе несёт предсказательную информацию (например, отсутствие ответа на вопрос анкеты может коррелировать с целевой переменной).

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

Обнаружение выбросов может опираться на статистические критерии — правило межквартильного размаха (IQR), относящее к выбросам значения за пределами [Q_1 - 1.5\,IQR,\; Q_3 + 1.5\,IQR], либо на z-оценку, помечающую как выброс значения с |z| > 3, — либо на визуализацию распределения признака (box-plot, гистограмма, диаграмма рассеяния).

После обнаружения возможны разные стратегии обработки: удаление объектов-выбросов, оправданное при уверенности в ошибочности значения (сбой измерения, ошибка ввода данных); капинг (winsorization) — замена экстремальных значений на ближайшую границу допустимого диапазона без полного удаления объекта; преобразование признака (логарифмирование, Box-Cox), уменьшающее относительное влияние экстремальных значений без их прямого удаления. Выбор стратегии определяется тем, являются ли выбросы артефактом измерения или содержательной, хотя и редкой, особенностью предметной области — во втором случае агрессивное удаление способно исказить модель, лишив её информации о редких, но значимых случаях.

Уменьшение размерности

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

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

t-SNE и UMAP — нелинейные методы уменьшения размерности, ориентированные в первую очередь на визуализацию многомерных данных в двух-трёх измерениях за счёт сохранения локальной структуры соседства точек; в отличие от PCA, они, как правило, не сохраняют глобальные расстояния и хуже подходят для использования результирующих компонент как признаков для последующего обучения модели, но полезны как инструмент разведочного анализа данных (EDA) и обнаружения кластерной структуры.

Инженерия для разных типов данных

Тексты. Классические признаки — частоты слов (bag-of-words), взвешенные по TF-IDF, n-граммы слов и символов; современный подход — представления, полученные из предобученных языковых моделей (эмбеддинги слов, контекстуальные эмбеддинги трансформеров), фактически переносящие задачу конструирования признаков на этап предобучения модели.

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

Временные ряды. Типичные признаки — скользящие статистики (среднее, стандартное отклонение, минимум и максимум в скользящем окне), лаговые признаки (значение ряда со сдвигом на несколько шагов назад), признаки сезонности и тренда, а также спектральные характеристики, получаемые преобразованием Фурье.

Графы. Признаки узла могут включать степень узла, меры центральности (betweenness, PageRank), локальные структурные характеристики окрестности; современные методы также используют обучаемые представления узлов, получаемые методами графовых нейронных сетей или графовых эмбеддингов (node2vec, DeepWalk).

Автоматическая инженерия признаков (AutoFE)

Автоматическая инженерия признаков стремится частично или полностью автоматизировать процесс создания и отбора признаков, традиционно требующий значительных временных затрат специалиста и глубокого понимания предметной области. Deep Feature Synthesis (Kanter & Veeramachaneni, 2015), лежащий в основе библиотеки Featuretools, автоматически строит признаки для реляционных данных, применяя последовательности агрегирующих и трансформирующих операций (сумма, среднее, число уникальных значений и другие) вдоль связей между таблицами, генерируя большое число кандидатов в признаки, из которых затем производится отбор. Иные подходы к AutoFE используют эволюционные алгоритмы или обучение с подкреплением для поиска полезных комбинаций преобразований признаков. Автоматизированные методы способны обнаруживать неочевидные комбинации, но, как правило, требуют последующего этапа отбора признаков для устранения избыточности и контроля переобучения, а также не заменяют полностью экспертное понимание предметной области, особенно при построении содержательных, предметно-обоснованных признаков.

Практические рекомендации

Чек-лист инженера по признакам:

  • проверить типы и распределения всех признаков до начала моделирования — выявить асимметрию, выбросы, пропуски;
  • начинать с простых, содержательно обоснованных признаков, прежде чем переходить к автоматической генерации большого числа кандидатов;
  • явно фиксировать факт пропуска отдельным индикаторным признаком, а не полагаться только на значение заполнения;
  • при кодировании категорий с высокой кардинальностью использовать target encoding или WOE с обязательной регуляризацией и вычислением вне текущего фолда кросс-валидации;
  • подбирать параметры любых преобразований (нормализации, Box-Cox, target encoding) исключительно по обучающей выборке, применяя затем те же параметры к валидационной и тестовой выборкам, во избежание утечки информации;
  • после генерации большого числа признаков обязательно проводить отбор — избыточные и коррелированные признаки не только не помогают, но зачастую ухудшают обобщающую способность и интерпретируемость модели;
  • руководствоваться принципом «простые признаки — лучшие»: там, где простое отношение или разность объясняют закономерность не хуже сложной комбинации, предпочтение стоит отдавать простому варианту, повышающему устойчивость и интерпретируемость модели.

См. также

Литература

  1. Zheng A., Casari A. Feature Engineering for Machine Learning: Principles and Techniques for Data Scientists. — O'Reilly Media, 2018.
  2. Kuhn M., Johnson K. Feature Engineering and Selection: A Practical Approach for Predictive Models. — CRC Press, 2019.
  3. Guyon I., Elisseeff A. An Introduction to Variable and Feature Selection // Journal of Machine Learning Research. — 2003.
  4. Box G.E.P., Cox D.R. An Analysis of Transformations // Journal of the Royal Statistical Society. Series B. — 1964.
  5. Yeo I.-K., Johnson R.A. A New Family of Power Transformations to Improve Normality or Symmetry // Biometrika. — 2000.
  6. Kanter J.M., Veeramachaneni K. Deep Feature Synthesis: Towards Automating Data Science Endeavors // IEEE DSAA. — 2015.
  7. van der Maaten L., Hinton G. Visualizing Data using t-SNE // Journal of Machine Learning Research. — 2008.
  8. McInnes L., Healy J., Melville J. UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction // arXiv:1802.03426. — 2018.
Личные инструменты