Перевод категориальных в числа: , ordinal, target encoding, , .
Ключевые тезисы
- безопасен, но взрывает размерность при высокой кардинальности.
- силён, но требует out-of-fold-схемы, иначе даёт утечку целевой переменной.
- реализует упорядоченное «из коробки».
Какую задачу решает
Большинство моделей принимают только числа, а категориальные — города, товары, статусы — числами не являются. Кодирование переводит их в числовую форму, и способ перевода определяет, что модель сможет из них извлечь.
Основная развилка — мощность категории. Для десятка значений годится : просто, честно, без утечки. Для тысяч значений (идентификаторы товаров, почтовые индексы) one-hot взрывает размерность, и приходится переходить к target encoding, которое мощнее, но требует аккуратности: считать статистику надо только по данным, недоступным текущей строке, иначе модель начнёт подсматривать ответ.
Разбейте обучение на 5 фолдов. Для строк каждого фолда считайте среднее целевой по категории по остальным четырём фолдам. Для — по всей обучающей. Дополнительно сгладьте: , где — размер категории, — параметр сглаживания (10–50). Категория из одной строки при почти полностью подтянется к глобальному среднему и не сможет закодировать ответ. Пропуск любого из этих двух шагов — и вы получите модель, которая великолепна на валидации и бесполезна в проде.
Подробный разбор
Категория с значениями превращается в бинарных столбцов, ровно один из которых равен единице. Модель не получает ложного порядка: «Москва < Казань» не возникает.
sex (2 значения) и Embarked (3 значения) дают новых бинарных столбцов. При drop_first=True — 4.
Dummy trap: сумма всех столбцов OHE всегда равна 1, поэтому вместе со свободным членом получается линейная зависимость и становится вырожденной. Для линейных моделей без один столбец удаляют; для деревьев и Ridge это не нужно.
- коэффициент, задающий вес слагаемого или скорость обновления
- истинное значение целевой переменной
- объект: вектор признаков
- число объектов в выборке
- суммирование по всем перечисленным элементам
Проблема в том, что значение самого объекта участвует в его же признаке. Модель «подглядывает» в ответ, качество на валидации взлетает, в проде падает.
- Считать кодирование out-of-fold: для объектов фолда статистика берётся по остальным фолдам.
- Или использовать упорядоченное кодирование, как в : только по «прошлым» объектам в случайной перестановке.
- Всегда добавлять сглаживание : категория из двух объектов иначе получит экстремальное значение.
| Метод | Когда применять | Риск |
|---|---|---|
| Ordinal | порядковые : низкий / средний / высокий | ложный порядок у номинальных |
| Frequency | деревья, высокая кардинальность | две разные категории с равной частотой сливаются |
| Hashing | миллионы категорий, потоковые данные | |
| , очень много категорий | нужны данные и обучение |
Для деревьев по признаку с 1000 категорий — плохая идея: каждый бинарный столбец даёт слабое разбиение, дерево вынуждено расти вглубь. Здесь выигрывают target/ordered encoding и встроенная обработка .
Где применяется
- Категории малой мощностиПол, статус, тип договора: и не думать.
- ИдентификаторыТовары, магазины, пользователи: с правильной схемой или .
- Географические данныеПочтовые индексы и города, где важна связь категории с целью.
- на таблицах категорий обучаются вместе с моделью и улавливают сходство значений.
Плюсы, минусы и альтернативы
Плюсы
- прост, безопасен и не требует настройки.
- компактен и часто резко поднимает качество на категориях высокой мощности.
- улавливают сходство между значениями, недоступное .
- Современный умеет обрабатывать категории сам.
Минусы
- взрывает размерность и делает данные разреженными.
- без правильной схемы — прямая утечка и провал в проде.
- Ordinal encoding на неупорядоченных категориях вносит ложный порядок.
- Новые значения категорий в проде требуют явной обработки.
Брать, если
- Категорий меньше 10–15 — .
- Категорий сотни и тысячи — с out-of-fold схемой или .
- Категорий десятки тысяч и есть — .
Не брать, если
- Не применяйте ordinal encoding к неупорядоченным категориям ради компактности.
- Не считайте на всей обучающей выборке разом.
Чем заменяют
Видеолекции
Тайм-кода именно на эту тему в записях нет. Но глава «Данные» разобрана в курсах целиком — с той оговоркой, что место в записи придётся искать самому.
Связанные темы
Подготовка данных · Признаки: создание, отбор, важность · Деревья и ансамбли
Feature engineering93%
Конструирование признаков · ДанныеСоздание признаков, в которых закономерность становится линейно отделимой или просто более заметной для модели.
Decision Trees85%
Решающие деревья · Классическое машинное обучениеПоследовательность вопросов «признак > порог», разбивающая пространство на прямоугольные области.
Random Forest85%
Случайный лес · Классическое машинное обучениеБэггинг деревьев со случайными подвыборками объектов и признаков: усреднение резко снижает дисперсию.
Gradient Boosting85%
Градиентный бустинг · Классическое машинное обучениеПоследовательное построение деревьев, каждое из которых исправляет ошибки предыдущего ансамбля.
XGBoost85%
XGBoost · Классическое машинное обучениеРеализация бустинга с регуляризацией в функции потерь, вторым порядком оптимизации и продуманной работой с разреженностью.
LightGBM85%
LightGBM · Классическое машинное обучениеБыстрый бустинг от Microsoft: гистограммное разбиение и рост дерева по листьям вместо по уровням.
CatBoost85%
CatBoost · Классическое машинное обучениеБустинг от Яндекса с упорядоченным кодированием категорий и упорядоченным бустингом против смещения.
SHAP85%
SHAP · Интерпретируемость моделейРаспределение вклада признаков на основе значений Шепли из теории игр — с гарантиями аддитивности и согласованности.
Data preprocessing75%
Предобработка данных · ДанныеПриведение сырых данных к виду, пригодному для обучения: типы, форматы, дубликаты, согласованность единиц измерения.
Missing values75%
Пропущенные значения · ДанныеПропуски бывают случайными и неслучайными — от механизма зависит, можно ли их просто заполнить.
Outliers75%
Выбросы · ДанныеНаблюдения, резко отличающиеся от остальных. Они бывают ошибками измерения, а бывают самым ценным сигналом.
Normalization & Standardization75%
Нормализация и стандартизация · ДанныеПриведение признаков к сопоставимым масштабам, без которого расстояния, градиенты и регуляризация работают некорректно.
ML Pipelines75%
ML-пайплайны · MLOpsОформление обучения как воспроизводимой последовательности шагов вместо разрозненных ноутбуков.
Feature selection70%
Отбор признаков · ДанныеУбираем шумные и избыточные признаки, чтобы снизить переобучение, ускорить инференс и упростить интерпретацию.
Feature engineering70%
Работа с признаками · Практика MLНа табличных данных грамотные признаки дают больший прирост, чем смена модели.
Feature importance70%
Важность признаков · Интерпретируемость моделейОценка вклада признаков в предсказания модели — первый шаг к пониманию её логики.
Permutation Importance70%
Перестановочная важность · Интерпретируемость моделейПризнак перемешивается, и измеряется падение качества модели — модельно-независимый и честный подход.
Feature Stores70%
Хранилища признаков · MLOpsЦентрализованное хранилище признаков, единое для обучения и онлайн-инференса.
Topological features70%
Топологические признаки · Топологический анализ данныхВекторизация топологии: энтропия персистентности, суммарная длина жизни, числа Бетти, persistence images.
Всё, что названо в описании, разобрано здесь же или в соседней теме — переходы под каждым определением.
One-hot
Столбец-индикатор на каждое значение. Безопасно и понятно, но размерность растёт линейно с числом категорий.
Разбор ниже: One-Hot и dummy trapTarget encoding
Замена категории агрегатом целевой переменной. Мощно, компактно и опасно утечкой.
Разбор ниже: Target encoding и утечкаСглаживание к среднему
Редкие категории подтягиваются к глобальному среднему — иначе категория из одной строки запишет в ответ.
Разбор ниже: Target encoding и утечкаOrdinal encoding
Номер вместо категории. Корректно только для упорядоченных значений — иначе модель увидит несуществующий порядок.
Разбор ниже: Остальные кодировщикиЭмбеддинги категорий
Обучаемые : нужны, когда категорий десятки тысяч и они имеют структуру.
Разбор ниже: Остальные кодировщикиПрофильная компетенция для ролей: Data Scientist, ML Engineer, Инженер рекомендаций.
Усиливает профиль: Аналитик данных.
Спрашивают на собеседовании: Яндекс — Classic ML.
Тема встречается в тесте по направлениям — ошибки приведут обратно на эту страницу.
Глава «Данные» последний раз правилась . Нашли ошибку — напишите.