На табличных данных хорошие признаки дают больше, чем выбор модели. А когда модель готова, её приходится объяснять бизнесу и регулятору. Обе темы регулярно встречаются на собесе middle и senior.
Категориальные признаки
- One-hot: столбец на значение. Хорош при малой кардинальности.
- Частотное кодирование: доля значения в данных.
- Target encoding: среднее значение цели по категории. Опасен утечкой: считайте вне фолда (out-of-fold) и со сглаживанием к глобальному среднему.
enc(c) = (сумма y в c + m · глобальное_среднее) / (число объектов c + m)
- Hashing trick: фиксированное число столбцов через хеш, без словаря, ценой коллизий.
- Эмбеддинги в нейросетях и встроенная обработка в CatBoost.
Пропуски
Пропуск часто информативен. Заполняйте статистикой по трейну и добавляйте индикатор «значение отсутствует». Бустинги обрабатывают пропуски сами. Удалять строки опасно: выборка смещается, если пропуски не случайны.
Числа, даты, тексты
- Деньги и счётчики с тяжёлым хвостом логарифмируют (для линейных моделей и нейросетей).
- Даты: день недели, месяц, праздники, дни до события. Циклические признаки кодируют sin и cos, чтобы 23:00 и 00:00 были рядом.
- Агрегаты по окнам: суммы, частоты, тренды за 7, 30, 90 дней, давность последнего события.
- Тексты: TF-IDF как сильный бейзлайн, эмбеддинги языковых моделей.
TF-IDF: tf это доля слова в документе, idf = ln(N / df). Слово, встречающееся во всех документах, получает idf = 0. В 4 документах слово из одного документа получает ln 4 ≈ 1.39.
Point-in-time и feature store
Каждый признак должен считаться по данным строго до момента прогноза. Чтобы в проде признаки считались так же, как в обучении, их держат в общем коде или feature store, иначе возникает training-serving skew.
Отбор признаков
- Фильтры (корреляция, взаимная информация), обёртки (последовательный отбор), встроенные методы (L1, важности деревьев).
- Отбор это часть обучения: делайте его внутри фолдов. Иначе из 10 000 шумовых признаков найдутся 100, «подтверждённые» кросс-валидацией.
Интерпретация
Глобальные важности:
- встроенная split или gain importance деревьев: быстрая, но завышает признаки с большим числом значений;
- permutation importance: перемешать признак на валидации и посмотреть падение метрики; при коррелированных признаках важность размазывается;
- средние |SHAP|.
SHAP для одного предсказания раскладывает отклонение от базового значения на вклады признаков: base + Σ вкладов = прогноз. Основан на значениях Шепли, для деревьев есть быстрый TreeSHAP.
PDP и ICE показывают, как меняется прогноз при изменении признака. При коррелированных признаках подставляются нереалистичные комбинации.
Главная оговорка: интерпретация объясняет модель, а не мир. «Увеличим признак, и цель вырастет» требует причинного анализа.
В регулируемых областях (кредиты) используют скоркарты на логистической регрессии или бустинг с монотонными ограничениями и называют причины отказа.
Частые ошибки
- Target encoding по всему трейну, включая сам объект.
- Заполнять пропуски статистиками по всем данным вместе с тестом.
- Отбирать признаки до кросс-валидации.
- Выдавать SHAP за причинный эффект.
Что спросят на собесе
- Как кодировать категорию с тысячами значений.
- Как правильно делать target encoding.
- Как обрабатывать пропуски и даты.
- Permutation importance против встроенной важности, что такое SHAP.
- Как объяснить бизнесу отказ конкретному клиенту.