CatBoost, LightGBM, XGBoost

Сравнительная таблица

Свойство XGBoost LightGBM CatBoost
Разработчик DMLC Microsoft Яндекс
Рост дерева По уровням (level-wise) По листьям (leaf-wise) По уровням (symmetric)
Категориальные признаки Нужен OHE вручную Встроенная поддержка Встроенная поддержка (ordered TS)
Скорость обучения Средняя Высокая (GOSS) Средняя
Регуляризация L1/L2 + pruning min_data_in_leaf L2 + depth
Бустинг второго порядка Да Да Да

XGBoost

Реализует бустинг второго порядка с явной регуляризацией по числу листьев и норме прогнозов. Оптимальный прогноз в листе и impurity для построения сплитов выведены аналитически (см. страницу про градиентный бустинг).

Основные идеи:

  • Pruning: отсекаем листья, прирост от которых ниже порога \(\gamma\).
  • Регуляризация: штраф за малое число объектов в листе (\(\lambda\)).
  • Прогноз в листе нормируется не только на число объектов, но и на \(\lambda\): \(b_j^* = \frac{S_j}{H_j + \lambda}\).
  • Сплит выбирается с наименьшей дисперсией по функционалу \(H(B)\).

LightGBM

Основное отличие — механизм GOSS (Gradient One-Side Sampling):

  • Объекты с большим градиентом (большой ошибкой) оставляются полностью.
  • Объекты с малым градиентом — сэмплируются случайно.
  • Чтобы компенсировать сдвиг распределения, объекты с малым градиентом домножаются на коэффициент сглаживания.

Дерево растёт leaf-wise: на каждом шаге расщепляется лист с наибольшим приростом функционала, а не весь уровень. Это даёт более глубокие деревья при том же числе листьев.

GOSS ускоряет сходимость, но нарушает распределение данных. Коэффициент сглаживания частично компенсирует это, но не полностью.

CatBoost

Градиентный бустинг от Яндекса. Основные особенности:

Категориальные признаки

CatBoost обрабатывает категориальные признаки нативно через ordered target statistics — статистики, вычисленные только по объектам, предшествующим текущему в случайной перестановке. Это предотвращает утечку целевой переменной.

Не нужно делать OHE вручную перед подачей данных в CatBoost. Это снижает скорость сходимости и не даёт прироста в качестве.

Symmetric trees

При построении дерева сплит выбирается одним для всего уровня, а не отдельно для каждой вершины. Это снижает число операций и ускоряет инференс.

При классификации CatBoost предсказывает смещения по вероятностям, но применяет их к логитам — не к вероятностям напрямую.

Поддерживаемые задачи

  • Регрессия (MSE).
  • Классификация — сигмоида от логита.
  • Мультиклассификация — softmax.
  • Ранжирование — максимизация вероятности правильного упорядочивания пар объектов.

Когда что использовать

Ситуация Рекомендация
Много категориальных признаков CatBoost
Нужна максимальная скорость обучения LightGBM
Нужна воспроизводимость и широкая документация XGBoost
Задача ранжирования CatBoost или LightGBM (LambdaRank)
Большой датасет, мало памяти LightGBM (histogram-based splits)
← Назад к списку тем