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

LightGBM

LightGBM

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

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

Быстрый от 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 рост создаст листья из единичных объектов.

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

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

Классический растит дерево по уровням: все узлы одного уровня разбиваются одновременно. выбирает один лист с максимальным выигрышем и разбивает его — на том же бюджете листьев ошибка падает быстрее.

  • Плюс: меньше листьев на ту же ошибку, быстрее обучение.
  • Минус: деревья получаются несбалансированными и легче переобучаются — обязательно ограничивайте 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, хеширование, эмбеддинги.

Следующий шагДальше по связи: Decision TreesПоследовательность вопросов «признак > порог», разбивающая пространство на прямоугольные области.Перейти →

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