Классическое машинное обучение

CatBoost

CatBoost

актуальноТекущий рабочий стандарт

Направления: Машинное обучение · Классический ML

от Яндекса с упорядоченным кодированием категорий и упорядоченным бустингом против смещения.

Ключевые тезисы

  • Категориальные передаются как есть — кодирование внутри модели.
  • Симметричные (oblivious) деревья дают очень быстрый .
  • Часто лучшее качество «из коробки» без тонкой настройки.

Какую задачу решает

берётся за то место, где чаще всего протекает, — категориальные . Обычное (замена категории средним значением цели) даёт мощный признак и одновременно утечку: значение считается по тем же строкам, на которых модель обучается, и модель начинает подсматривать ответ.

Решение — упорядоченное кодирование: для каждой строки статистика считается только по строкам, идущим раньше в случайной перестановке. Тот же принцип применён и к самому бустингу (ordered boosting), что убирает смещение в оценке . Результат — модель, которая на данных с категориями работает лучше конкурентов почти без настройки.

Как утекает обычное target encoding

«город», в нём город с единственной строкой в обучении и целью 1. Обычное поставит этой строке значение 1.0 — то есть буквально запишет в признак правильный ответ. Модель радостно выучит: «если encoding равен 1.0, ответ 1», на обучении покажет идеальную метрику, а в проде развалится. для этой строки посчитает статистику только по предшествующим строкам перестановки, где данного города ещё не было, и подставит априорное значение. Отсюда и разрыв в надёжности с ручным кодированием.

Подробный разбор

2 подтемы — объяснения, формулы, примеры и интерактивные графики.

берёт случайную перестановку объектов и для каждого объекта считает статистику категории только по тем, кто идёт раньше него. Значение цели самого объекта в его не попадает.

Обозначения
  • истинное значение целевой переменной
  • объект: вектор признаков
  • вероятность (или плотность распределения)
  • суммирование по всем перечисленным элементам
Априорное и вес стабилизируют оценку для редких категорий
На практике

Из-за этого часто выигрывает «из коробки» на данных с большим числом категориальных : ручное кодирование обычно либо слабее, либо протекает.

В обычном бустинге остатки считаются моделью, которая уже видела эти объекты — возникает смещение (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, хеширование, эмбеддинги.

Кому эта тема нужна

Профильная компетенция для ролей: Data Scientist, ML Engineer, Инженер рекомендаций.

Усиливает профиль: Аналитик данных, Продуктовый инженер.

Спрашивают на собеседовании: Яндекс — Classic ML.

Проверить себя

Тема встречается в тесте по направлениям — ошибки приведут обратно на эту страницу.

Следующий шагПроверить себя: Классический MLТема встречается в этом тесте 1 раз. Ошибка приведёт обратно на эту страницу — с объяснением, что именно не сошлось.Перейти →

Глава «Классическое машинное обучение» последний раз правилась . Нашли ошибку — напишите.