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: на каждом шаге расщепляется лист с наибольшим приростом функционала, а не весь уровень. Это даёт более глубокие деревья при том же числе листьев.
CatBoost
Градиентный бустинг от Яндекса. Основные особенности:
Категориальные признаки
CatBoost обрабатывает категориальные признаки нативно через ordered target statistics — статистики, вычисленные только по объектам, предшествующим текущему в случайной перестановке. Это предотвращает утечку целевой переменной.
Symmetric trees
При построении дерева сплит выбирается одним для всего уровня, а не отдельно для каждой вершины. Это снижает число операций и ускоряет инференс.
Поддерживаемые задачи
- Регрессия (MSE).
- Классификация — сигмоида от логита.
- Мультиклассификация — softmax.
- Ранжирование — максимизация вероятности правильного упорядочивания пар объектов.
Когда что использовать
| Ситуация | Рекомендация |
|---|---|
| Много категориальных признаков | CatBoost |
| Нужна максимальная скорость обучения | LightGBM |
| Нужна воспроизводимость и широкая документация | XGBoost |
| Задача ранжирования | CatBoost или LightGBM (LambdaRank) |
| Большой датасет, мало памяти | LightGBM (histogram-based splits) |