Быстрый от Microsoft: гистограммное разбиение и рост дерева по листьям вместо по уровням.
Ключевые тезисы
- Leaf-wise рост даёт меньшую ошибку при том же числе листьев, но легче переобучается.
- GOSS и EFB ускоряют обучение на больших и разреженных данных.
- Обычно самый быстрый вариант на выборках в миллионы строк.
Какую задачу решает
решает задачу скорости: на десятках миллионов строк классический обучается часами, потому что на каждом разбиении перебирает все пороги по всем признакам. Ответ — гистограммы: непрерывные заранее разбиваются на 255 корзин, и перебор идёт по ним, а не по всем уникальным значениям.
Второе изменение — leaf-wise рост: дерево расширяется не по уровням, а всегда в тот лист, который даст наибольшее уменьшение потерь. При том же числе листьев такое дерево точнее, но легко становится глубоким и несбалансированным — поэтому num_leaves здесь важнее, чем max_depth в , и наступает быстрее.
В max_depth=10 означает не более 1024 листьев, и рост ограничен уровнями. В тот же max_depth=10 при num_leaves=1000 даёт дерево, которое уйдёт вглубь по одной ветке и запомнит выборку. Практическое правило: num_leaves , а лучше заметно меньше — например, max_depth=8, num_leaves=64. Плюс обязательный min_data_in_leaf (20–100), иначе leaf-wise рост создаст листья из единичных объектов.
Подробный разбор
Классический растит дерево по уровням: все узлы одного уровня разбиваются одновременно. выбирает один лист с максимальным выигрышем и разбивает его — на том же бюджете листьев ошибка падает быстрее.
- Плюс: меньше листьев на ту же ошибку, быстрее обучение.
- Минус: деревья получаются несбалансированными и легче переобучаются — обязательно ограничивайте
num_leavesиmin_data_in_leaf. - Биннинг: непрерывные заранее разбиваются на 255 корзин; поиск порога идёт по корзинам, а не по всем значениям.
Эмпирическое правило: num_leaves заметно меньше , иначе leaf-wise рост воспроизводит глубокое дерево.
- GOSS (Gradient-based One-Side Sampling): объекты с большим (там, где модель ошибается) берутся все, из остальных — случайная часть с поправочным весом.
- EFB (Exclusive Feature Bundling): разреженные , которые почти никогда не бывают ненулевыми одновременно (например, столбцы ), объединяются в один — размерность падает без потери информации.
Вместе эти приёмы дают ускорение в разы на выборках в миллионы строк — именно поэтому часто выбирают для больших табличных данных.
Где применяется
- Большие табличные данныеДесятки миллионов строк: обучение в разы быстрее при сопоставимом качестве.
- Частое моделейЕжедневный или ежечасный ретрейн, где время обучения — операционное ограничение.
- РанжированиеВстроенные ранжирующие цели (LambdaRank) для поиска и рекомендаций.
- Много EFB эффективно сжимает разреженные пространства после .
Плюсы, минусы и альтернативы
Плюсы
- Кратно быстрее на больших выборках при том же качестве.
- Существенно меньше памяти за счёт гистограмм.
- Поддерживает категориальные без .
- Leaf-wise рост даёт более точные деревья при равном бюджете листьев.
- Хорошо параллелится, в том числе на .
Минусы
- Переобучается заметно легче из-за leaf-wise роста.
- На малых выборках (менее ~10 тысяч строк) нестабилен и часто хуже.
- в корзины теряет точность на с тонкой структурой.
- Настройка
num_leavesменее интуитивна, чемmax_depth. - Встроенная обработка категорий иногда даёт утечку — проверяйте на валидации.
Брать, если
- Строк много (от сотен тысяч) и обучение стало узким местом.
- Нужен частый ретрейн по расписанию.
- Много категориальных или разреженных .
Не брать, если
- Выборка маленькая — возьмите или , они устойчивее.
- Нужна максимальная предсказуемость поведения — level-wise рост проще контролировать.
Чем заменяют
Связанные темы
Деревья и ансамбли
Decision Trees85%
Решающие деревья · Классическое машинное обучениеПоследовательность вопросов «признак > порог», разбивающая пространство на прямоугольные области.
Random Forest85%
Случайный лес · Классическое машинное обучениеБэггинг деревьев со случайными подвыборками объектов и признаков: усреднение резко снижает дисперсию.
Gradient Boosting85%
Градиентный бустинг · Классическое машинное обучениеПоследовательное построение деревьев, каждое из которых исправляет ошибки предыдущего ансамбля.
XGBoost85%
XGBoost · Классическое машинное обучениеРеализация бустинга с регуляризацией в функции потерь, вторым порядком оптимизации и продуманной работой с разреженностью.
CatBoost85%
CatBoost · Классическое машинное обучениеБустинг от Яндекса с упорядоченным кодированием категорий и упорядоченным бустингом против смещения.
SHAP85%
SHAP · Интерпретируемость моделейРаспределение вклада признаков на основе значений Шепли из теории игр — с гарантиями аддитивности и согласованности.
Encoding85%
Кодирование категорий · ДанныеПеревод категориальных признаков в числа: one-hot, ordinal, target encoding, хеширование, эмбеддинги.
Всё, что названо в описании, разобрано здесь же или в соседней теме — переходы под каждым определением.
Гистограммные разбиения
квантуются в 255 корзин: перебор порогов становится дешёвым, память падает.
Разбор ниже: Leaf-wise рост и биннингLeaf-wise рост
Расширяется самый выгодный лист, а не весь уровень. Точнее при том же числе листьев, но склоннее к .
Разбор ниже: Leaf-wise рост и биннингnum_leaves
Главный ограничитель сложности. Держите , иначе дерево вырождается.
Разбор ниже: Leaf-wise рост и биннингGOSS
Отбор объектов с большими : обучение ускоряется почти без потери качества.
Разбор ниже: GOSS и EFBEFB
Склейка взаимоисключающих разреженных в один — резко сокращает размерность .
Разбор ниже: GOSS и EFBГлава «Классическое машинное обучение» последний раз правилась . Нашли ошибку — напишите.