Что такое Feature Engineering

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

В e-commerce типичный набор сырых данных — это логи кликов, транзакции, атрибуты товаров и профили пользователей. Инженер признаков превращает их в информативные переменные:

Сырые данные → Признаки
─────────────────────────────────────────
Лог кликов        → просмотры/нед, CTR по категориям
История покупок   → R (recency), F (frequency), M (monetary)
Атрибуты товара   → категория (one-hot), бренд, ценовой бин
Сессионные данные → глубина просмотра, время на странице

Виды преобразований

Агрегация поведенческих данных

Самый важный класс признаков для рекомендаций — агрегаты поведения с временным весом. Событие «купил 14 дней назад» значит больше, чем «купил полгода назад». Типичный паттерн — скользящие окна (7 дней, 30 дней, 90 дней):

Признак Описание
purchase_cnt_30d Количество покупок за 30 дней
avg_order_value_90d Средний чек за 90 дней
days_since_last_visit Давность последнего визита
top_category_share Доля топ-категории в покупках

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

Категориальные атрибуты (бренд, категория) нельзя передать в модель напрямую. Основные подходы:
One-hot encoding — для признаков с небольшой кардинальностью (тип устройства, пол)
Target encoding — среднее значение целевой метрики по категории (подходит для брендов, категорий с тысячами значений)
Embeddings — для сущностей с очень высокой кардинальностью (товарные ID, пользователи)

Feature Engineering vs автоматические подходы

Deep learning на неструктурированных данных (тексты, изображения) самостоятельно извлекает признаки. На табличных структурированных данных ручной feature engineering по-прежнему критичен.

Совет: Всегда проверяй feature importance после обучения. В реальных e-commerce задачах 80% предсказательной силы даёт 20% признаков — остальные добавляют шум и замедляют инференс.

Типичные ошибки

  • Data leakage: признак включает информацию из будущего (например, «куплено» в момент предсказания покупки)
  • Слишком высокая кардинальность без кодирования: user_id как категориальный признак без эмбеддингов
  • Игнорирование временной динамики: усреднение всей истории вместо взвешенного по давности