Анализ данных • 10 июня 2026 • 5 мин чтения

Что такое Feature Engineering и как этот процесс повышает точность ML‑модели

Рассказываем, зачем нужен Feature Engineering в машинном обучении и как его применять.

Что такое Feature Engineering

Feature Engineering — это процесс преобразования исходных данных в признаки, которые лучше всего описывают закономерности, скрытые в данных. Признаки — это отдельные измеримые свойства или характеристики объектов, которые подаются на вход модели машинного обучения: например, этажность дома, его площадь и дата продажи. Подробнее о признаках поговорим позже.

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

ML-процессы изучаются на курсе «ML-инженер с опытом». На нём за четыре месяца студенты осваивают полный жизненный цикл модели машинного обучения. После обучения специалисты получают диплом о профессиональной переподготовке.

Зачем нужен Feature Engineering

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

Главная задача Feature Engineering — уменьшить сложность пространства признаков, сохранив при этом максимум полезной информации. Он помогает модели быстрее сходиться, она требует меньше данных для обучения и становится более устойчивой к шумам. Без качественного создания признаков даже лучшие алгоритмы показывают неудовлетворительные результаты, а предсказания остаются неточными.

Типы признаков и способы их создания

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

  • Количественные (числовые) признаки. Это значения, которые можно измерять: возраст, цена, температура. Такие признаки часто требуют масштабирования, нормализации или устранения выбросов. Создание новых количественных признаков происходит через арифметические комбинации существующих. Например, отношение цены к весу.
  • Категориальные признаки. Это значения из конечного набора: цвет, город, тип кредита. Различают номинальные и порядковые признаки. Номинальные не имеют порядка — например, красный, синий, зелёный. Порядковые — имеют: низкий, средний, высокий и т. д.
  • Бинарные признаки. Частный случай категориальных, принимающий только два значения (да/нет, 0/1). Часто создаются путём пороговой обработки количественных признаков. Например, возраст старше 18 лет.
  • Временные признаки. Извлекаются из дат и времени: день недели, час суток, номер месяца, выходной или праздник. Позволяют модели улавливать сезонность и цикличность.
  • Текстовые признаки. Преобразуются через мешки слов, TF‑IDF, эмбеддинги. Требуют токенизации, стемминга или лемматизации.
  • Пространственные признаки. Координаты, расстояния до объектов, принадлежность к геозонам. Создаются с помощью геокодирования или расчёта метрик. Например, расстояние между точками доставки и складом.

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

Методы Feature Engineering

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

  • Масштабирование и нормализация. Приводит числовые признаки к одному диапазону: например, [0,1] или к нулевому среднему и единичной дисперсии. Такой метод нужен для алгоритмов, чувствительных к масштабу: SVM, KNN, нейронных сетей.
  • Биннинг (дискретизация). Преобразует непрерывную переменную в категориальную путём разбиения на интервалы. Полезен для поиска нелинейных зависимостей и уменьшения влияния выбросов.
  • Кодирование категорий. Преобразует текстовые метки в числа. One-hot encoding создаёт столбец для каждой категории, label encoding присваивает целое число. Для категорий с большим числом значений используют target encoding, frequency encoding или embedding.
  • Создание полиномиальных признаков. Генерация степеней и произведений существующих числовых признаков: x1², x1×2. Улавливает взаимодействия между переменными, но быстро увеличивает размерность.
  • Метод ядра. Повышает размерность признакового пространства или изменяет систему координат без явного вычисления новых признаков. Позволяет находить нелинейные зависимости с помощью линейных алгоритмов, например в SVM или ридж-регрессии.
  • Обработка пропусков. Заполнение средним, медианой, модой, интерполяцией или с помощью моделей: KNN, Random Forest. Также полезно создавать бинарный индикатор «Было ли пропущено значение».
  • Извлечение компонент. Снижает размерность, объединяя коррелирующие признаки в главные компоненты. Сохраняет большую часть вариации данных, удаляя шум.
  • Агрегация по группам. Создание статистик для строк, принадлежащих одному объекту. Часто используется в задачах с временными рядами или пользовательскими профилями.

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

Инструменты и библиотеки

Реализация Feature Engineering опирается на экосистему Python. Основные библиотеки различаются по назначению и уровню автоматизации. В таблице ниже приведены основные инструменты.

Библиотека Назначение
Pandas Базовые операции: чтение данных, группировки, преобразования типов, обработка пропусков, кодирование
NumPy Работает в связке с Pandas. Числовые операции: векторизованные вычисления, статистические функции, создание полиномов
Scikit-learn Масштабирование (StandardScaler, MinMaxScaler), биннинг (KBinsDiscretizer), кодирование (OneHotEncoder, OrdinalEncoder), полиномиальные признаки (PolynomialFeatures), PCA
Category encoders Набор различных кодеков для категориальных переменных (target encoding, leave-one-out, weight of evidence)
Tsfresh Автоматическое извлечение признаков из временных рядов (корреляции, энтропия, преобразования Фурье)
Geopandas / Shapely Работа с пространственными данными: расстояния, полигоны, близость к точкам интереса

Ошибки и подводные камни

Расскажем про самые частые проблемы, которые встречаются в проектах.

  • Утечка данных. Использование информации, которая недоступна на момент предсказания. Например, нормализация по всему датасету до разделения на train/test или расчёт статистик по целевой переменной для всей выборки.
  • Переобучение на обучающей выборке. Создание слишком сложных или специфичных признаков, которые работают только на обучении. Регулярная проверка на валидации и кросс-валидация помогают контролировать ситуацию.
  • Игнорирование выбросов. Одно аномальное значение может исказить масштабирование или создать ложную корреляцию. Важно искать и обрабатывать выбросы.
  • Размерность. Чрезмерное увеличение числа признаков ведёт к разрежению пространства и требует гораздо больше данных. Регуляризация и отбор признаков помогают бороться с этим.
  • Разрыв между тренировочными и реальными данными. Признаки, созданные на основе распределения обучающей выборки, могут не работать на новых данных. Нужно использовать стратегии кросс-валидации для расчёта таких энкодеров.

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

Практические примеры

Анатолий Бардуков

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

  • Фотосенситивность растений влияет на скорость их роста.
  • Время до праздников в ретейле регулирует покупательский спрос.
  • Расстояние до вокзала или аэропорта влияет на готовность клиента ждать такси.
  • Время суток меняет предпочтения пользователя в рекомендациях. Например, утром — новости, вечером — фильмы.
  • История покупок влияет на рекомендации товаров редкого потребления. Например, не предлагать диван, если клиент уже его купил.
Некоторые из перечисленных признаков модели машинного обучения способны вычислить самостоятельно. Но для этого нужна очень большая обучающая выборка. Поэтому ручные подсказки ускоряют процесс построения модели.
Feature engineering создаёт из сырых данных признаки, которые улучшают работу моделей. Плохие признаки не спасёт даже сложный алгоритм. Вот практические примеры применения Feature Engineering.
  • SIFT — алгоритм для изображений, который находит устойчивые ключевые точки, например углы, края, и превращает их в дескрипторы. Признаки SIFT инвариантны к масштабу, повороту и частичному изменению освещения. Применяется для сшивки панорам, идентификации объектов и 3D-моделирования.
  • Hashing trick — решает проблему кодирования огромного числа категорий без хранения словаря. Значение пропускается через хеш-функцию и попадает в один из фиксированных столбцов. Это снижает размерность, экономит память и позволяет обучать модели на миллионах разреженных признаков в режиме онлайн.
  • Semantic IDs — концепция представления объектов в виде компактных, семантически значимых идентификаторов. Они группируют товары в иерархические кластеры по их смыслу и превращают их в устойчивые идентификаторы.»
ML-процессы изучаются на курсе «ML-инженер с опытом». На нём за четыре месяца студенты осваивают полный жизненный цикл модели машинного обучения. После обучения специалисты получают диплом о профессиональной переподготовке.

Рекомендации для начинающих ML-инженеров

Анатолий Бардуков

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

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

ML-инженер в службе качества поиска
Валентина Бокова
Яндекс Практикум
Редактор
Полина Овчинникова
Яндекс Практикум
Иллюстратор

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

Поделиться
Помогите Алисе попасть в страну IT и получите в подарок гайд, полезные книги и скидку 10%