от Яндекса с упорядоченным кодированием категорий и упорядоченным бустингом против смещения.
Ключевые тезисы
- Категориальные передаются как есть — кодирование внутри модели.
- Симметричные (oblivious) деревья дают очень быстрый .
- Часто лучшее качество «из коробки» без тонкой настройки.
Какую задачу решает
берётся за то место, где чаще всего протекает, — категориальные . Обычное (замена категории средним значением цели) даёт мощный признак и одновременно утечку: значение считается по тем же строкам, на которых модель обучается, и модель начинает подсматривать ответ.
Решение — упорядоченное кодирование: для каждой строки статистика считается только по строкам, идущим раньше в случайной перестановке. Тот же принцип применён и к самому бустингу (ordered boosting), что убирает смещение в оценке . Результат — модель, которая на данных с категориями работает лучше конкурентов почти без настройки.
«город», в нём город с единственной строкой в обучении и целью 1. Обычное поставит этой строке значение 1.0 — то есть буквально запишет в признак правильный ответ. Модель радостно выучит: «если encoding равен 1.0, ответ 1», на обучении покажет идеальную метрику, а в проде развалится. для этой строки посчитает статистику только по предшествующим строкам перестановки, где данного города ещё не было, и подставит априорное значение. Отсюда и разрыв в надёжности с ручным кодированием.
Подробный разбор
берёт случайную перестановку объектов и для каждого объекта считает статистику категории только по тем, кто идёт раньше него. Значение цели самого объекта в его не попадает.
- истинное значение целевой переменной
- объект: вектор признаков
- вероятность (или плотность распределения)
- суммирование по всем перечисленным элементам
Из-за этого часто выигрывает «из коробки» на данных с большим числом категориальных : ручное кодирование обычно либо слабее, либо протекает.
В обычном бустинге остатки считаются моделью, которая уже видела эти объекты — возникает смещение (prediction shift). Ordered boosting строит для каждого объекта оценку по модели, обученной без него.
Симметричные (oblivious) деревья используют один и тот же предикат на всём уровне. Такое дерево превращается в маленькую таблицу поиска: становится в разы быстрее и легко векторизуется.
- Симметричность работает и как : модель менее склонна к .
- Обучение на и поддержка текстовых и эмбеддинг-признаков идут «из коробки».
Где применяется
- Данные с категориямиГорода, магазины, товарные категории, идентификаторы: главная зона применения.
- Быстрый качественный результатЗначения по умолчанию обычно уже сильны — хорош, когда времени на настройку мало.
- Небольшие выборкиУпорядоченные схемы снижают там, где другие бустинги его показывают.
- Быстрый Симметричные деревья исполняются очень эффективно, что важно в реальном времени.
Плюсы, минусы и альтернативы
Плюсы
- Категориальные обрабатываются штатно и без утечки.
- Отличное качество с параметрами по умолчанию.
- Ordered boosting снижает на малых данных.
- Симметричные деревья дают очень быстрый .
- Встроенная поддержка текстовых и эмбеддинг-признаков.
Минусы
- Обучение обычно медленнее .
- Больше памяти на высокой мощности.
- Симметричные деревья менее выразительны — на чисто числовых данных иногда проигрывает.
- Экосистема и число интеграций скромнее, чем у .
Брать, если
- В данных много категориальных , особенно высокой мощности.
- Нужен сильный результат без длительной настройки.
- Выборка небольшая и — реальная проблема.
Не брать, если
- Все числовые и данных очень много — обучится быстрее.
- Обучение жёстко ограничено по времени на огромных выборках.
Чем заменяют
Связанные темы
Деревья и ансамбли
Decision Trees85%
Решающие деревья · Классическое машинное обучениеПоследовательность вопросов «признак > порог», разбивающая пространство на прямоугольные области.
Random Forest85%
Случайный лес · Классическое машинное обучениеБэггинг деревьев со случайными подвыборками объектов и признаков: усреднение резко снижает дисперсию.
Gradient Boosting85%
Градиентный бустинг · Классическое машинное обучениеПоследовательное построение деревьев, каждое из которых исправляет ошибки предыдущего ансамбля.
XGBoost85%
XGBoost · Классическое машинное обучениеРеализация бустинга с регуляризацией в функции потерь, вторым порядком оптимизации и продуманной работой с разреженностью.
LightGBM85%
LightGBM · Классическое машинное обучениеБыстрый бустинг от Microsoft: гистограммное разбиение и рост дерева по листьям вместо по уровням.
SHAP85%
SHAP · Интерпретируемость моделейРаспределение вклада признаков на основе значений Шепли из теории игр — с гарантиями аддитивности и согласованности.
Encoding85%
Кодирование категорий · ДанныеПеревод категориальных признаков в числа: one-hot, ordinal, target encoding, хеширование, эмбеддинги.
Всё, что названо в описании, разобрано здесь же или в соседней теме — переходы под каждым определением.
Target encoding
Замена категории средним значением цели по ней. Мощно и опасно: прямой источник утечки.
Разбор ниже: Упорядоченное кодирование категорийOrdered target statistics
Статистика считается только по предыдущим строкам перестановки — утечки не возникает.
Разбор ниже: Упорядоченное кодирование категорийOrdered boosting
для строки считаются моделью, обученной без неё: убирает смещение прогноза.
Разбор ниже: Ordered boosting и симметричные деревьяКомбинации категорий
сам строит признаки-пересечения категорий, до которых руки обычно не доходят.
Разбор ниже: Упорядоченное кодирование категорийSymmetric trees
Все узлы уровня используют одно условие: сильная и очень быстрый .
Разбор ниже: Ordered boosting и симметричные деревьяПрофильная компетенция для ролей: Data Scientist, ML Engineer, Инженер рекомендаций.
Усиливает профиль: Аналитик данных, Продуктовый инженер.
Спрашивают на собеседовании: Яндекс — Classic ML.
Тема встречается в тесте по направлениям — ошибки приведут обратно на эту страницу.
Глава «Классическое машинное обучение» последний раз правилась . Нашли ошибку — напишите.