LightGBM

Материал из MachineLearning.

Версия от 21:07, 4 июля 2026; Nikita Saveliuk (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Статья написана с использованием LLM Claude и проверена участником Nikita Saveliuk 01:07, 5 июля 2026 (MSD)


Содержание

LightGBM (от англ. Light Gradient Boosting Machine) — это реализация градиентного бустинга над решающими деревьями, оптимизированная для высокоразмерных данных большого объёма. Библиотека предложена группой исследователей Microsoft под руководством Голина Кэ в 2017 году и построена вокруг двух оригинальных приёмов — одностороннего градиентного сэмплирования (GOSS) и связывания взаимоисключающих признаков (EFB), — которые сокращают вычислительную стоимость поиска расщеплений, почти не жертвуя точностью.

В основе LightGBM лежит тот же каркас, что и у XGBoost: аддитивный ансамбль деревьев, обучаемый по градиентам функции потерь. Отличие — не в математической модели, а в том, как метод борется с главным узким местом бустинга над деревьями. Чтобы найти оптимальное расщепление, классические реализации перебирают все точки разбиения по всем признакам, а значит, на каждой итерации сканируют все объекты для каждого признака. При большом числе объектов и признаков это доминирующая по времени операция. GOSS сокращает число объектов, участвующих в оценке выигрыша, а EFB — число признаков; вместе они дают ускорение обучения в разы при сопоставимом качестве (Ke et al., 2017).

Понимание LightGBM полезно на фоне соседних реализаций: он развивает идеи XGBoost (Chen, Guestrin, 2016), заменяя точный и приближённый перебор гистограммным поиском с сэмплированием, тогда как CatBoost (Prokhorenkova et al., 2018) фокусируется на другой проблеме — смещении предсказаний и обработке категориальных признаков. Выбор между тремя методами почти всегда сводится к тому, какой из различающихся компонентов важнее для конкретной задачи.

Историческая справка

Градиентный бустинг над деревьями, восходящий к Gradient Boosting Machine Джерома Фридмана (2001), к середине 2010-х стал ведущим методом для табличных данных. Реализация XGBoost (2016) впервые сделала его по-настоящему масштабируемым за счёт регуляризованной постановки, разложения потерь второго порядка и аппроксимированного поиска расщеплений через взвешенный квантильный эскиз.

Однако и у аппроксимированного поиска оставался предел: для оценки информационного выигрыша по каждому признаку всё равно требовалось агрегировать все объекты. При высокой размерности и больших выборках это оставалось дорого. LightGBM, представленный Кэ и соавторами на конференции NeurIPS 2017 года, атаковал именно эти два множителя стоимости — число объектов и число признаков. Авторы заметили, что объекты вносят в выигрыш неодинаковый вклад (он тем больше, чем больше градиент), а признаки в разреженных данных часто взаимно исключают друг друга. Отсюда два приёма: GOSS прореживает объекты с малыми градиентами, EFB связывает разреженные признаки в один. Дополнительно LightGBM по умолчанию использует гистограммное представление признаков и листовую стратегию роста дерева.

Результатом стало ускорение обучения по сравнению с прежними реализациями GBDT при почти неизменной точности. LightGBM быстро вошёл в стандартный инструментарий прикладного ML наряду с XGBoost и последовавшим CatBoost.

Постановка задачи

Рассматривается обучающая выборка из n объектов с признаковыми описаниями x_i \in \mathbb{R}^{m} и целевыми значениями y_i. Как и в общем градиентном бустинге, строится аддитивный ансамбль деревьев, минимизирующий суммарную функцию потерь; на каждой итерации к ансамблю добавляется дерево, приближающее антиградиент потерь на текущих предсказаниях. Обозначим через g_i градиент функции потерь по предсказанию на объекте x_i.

Специфика LightGBM — в том, что оптимизируется не модель, а стоимость её обучения. Ключевая операция при построении дерева — выбор расщепления по критерию выигрыша дисперсии. Для узла с множеством объектов O, признака j и точки разбиения d выигрыш определяется как:

V_{j \mid O}(d) = \frac{1}{n_O}\left( \frac{\bigl(\sum_{x_i \in O,\, x_{ij} \le d} g_i\bigr)^{2}}{n_{l}^{j}(d)} + \frac{\bigl(\sum_{x_i \in O,\, x_{ij} > d} g_i\bigr)^{2}}{n_{r}^{j}(d)} \right),

где n_O — число объектов в узле, а n_{l}^{j}(d) и n_{r}^{j}(d) — числа объектов, уходящих в левую и правую ветви при разбиении признака j по порогу d. Вычисление этого выражения для всех d и всех j требует прохода по всем объектам и признакам. Стоимость такого прохода пропорциональна произведению числа объектов на число признаков — именно эти два множителя LightGBM и стремится уменьшить.

Алгоритм

Гистограммный поиск расщеплений

Вместо перебора всех отсортированных значений признака LightGBM дискретизирует каждый непрерывный признак в фиксированное число корзин (бинов, по умолчанию 255). Для узла строится гистограмма — сумма градиентов объектов, попавших в каждый бин; выигрыш перебирается по границам бинов, а не по всем значениям. Это даёт два преимущества: значение признака хранится как индекс бина (один байт) вместо числа с плавающей точкой, а стоимость поиска расщепления в узле пропорциональна числу бинов, а не числу объектов.

Вычитание гистограмм. Неочевидная, но важная оптимизация: гистограмма родительского узла равна сумме гистограмм его дочерних узлов. Поэтому достаточно построить гистограмму только для того дочернего узла, в котором меньше объектов, а гистограмму второго получить вычитанием из родительской. Это вдвое сокращает число построений гистограмм на каждом уровне дерева.

Gradient-based One-Side Sampling (GOSS)

Идея GOSS исходит из наблюдения: объекты с малым по модулю градиентом уже хорошо приближены моделью и слабо влияют на информационный выигрыш, тогда как объекты с большим градиентом определяют выбор расщепления. Наивно отбросить объекты с малыми градиентами нельзя — это изменит распределение данных и сместит оценку выигрыша.

GOSS решает это так. Объекты сортируются по убыванию модуля градиента. Верхняя доля a объектов с наибольшими градиентами сохраняется полностью (множество A). Из оставшихся случайно выбирается доля b (множество B). При оценке выигрыша вклад сэмплированных объектов из B домножается на коэффициент \frac{1-a}{b}, восстанавливающий их исходный «вес» в полной выборке. Оценка выигрыша принимает вид:

\tilde{V}_j(d) = \frac{1}{n}\left( \frac{\bigl(\sum_{x_i \in A_l} g_i + \frac{1-a}{b}\sum_{x_i \in B_l} g_i\bigr)^{2}}{n_{l}^{j}(d)} + \frac{\bigl(\sum_{x_i \in A_r} g_i + \frac{1-a}{b}\sum_{x_i \in B_r} g_i\bigr)^{2}}{n_{r}^{j}(d)} \right),

где A_l, B_l и A_r, B_r — части множеств A и B, уходящие в левую и правую ветви. Смысл коэффициента \frac{1-a}{b} прямой: доля 1-a малоградиентных объектов представлена в оценке лишь долей b из них, поэтому их суммарный градиент масштабируется в \frac{1-a}{b} раз. Именно эта нормировка удерживает оценку выигрыша приблизительно несмещённой, несмотря на отброс большинства малоградиентных объектов; авторы доказывают, что ошибка аппроксимации при этом ограничена и убывает с ростом выборки.

Exclusive Feature Bundling (EFB)

В высокоразмерных разреженных данных многие признаки взаимно исключающи — почти никогда не принимают ненулевые значения одновременно (типичный источник — one-hot-кодирование категорий). Такие признаки можно объединить в один «бандл» без потери информации, сократив эффективное число признаков.

EFB состоит из двух подзадач. Первая — какие признаки связывать. Она сводится к раскраске графа, где вершины суть признаки, а рёбра соединяют конфликтующие (часто одновременно ненулевые) признаки; задача NP-трудна, поэтому применяется жадная эвристика, допускающая малую долю конфликтов. Вторая — как слить признаки в один. Диапазоны значений разных признаков разводятся смещениями так, чтобы не пересекаться: например, если первый признак лежит в диапазоне [0, 10), а второй — в [0, 20), ко второму добавляется смещение 10, и его значения занимают [10, 30). По итоговому значению бандла однозначно восстанавливается, какой признак был ненулевым. За счёт EFB стоимость построения гистограмм падает с порядка «число объектов на число признаков» до «число объектов на число бандлов».

Листовой рост дерева

LightGBM по умолчанию наращивает дерево листовым способом (leaf-wise): на каждом шаге расщепляется тот лист среди всех текущих, который даёт наибольший выигрыш. Это отличается от уровневого роста (level-wise) XGBoost, где расщепляются все листья очередного уровня. При равном числе листьев листовой рост достигает меньшей ошибки, поскольку «тратит» расщепления там, где они полезнее всего, но строит более глубокие несимметричные деревья и потому сильнее склонен к переобучению. Контролируется это ограничениями на число листьев и максимальную глубину.

Свойства

Преимущества

  • Высокая скорость обучения и низкое потребление памяти за счёт гистограммного представления, GOSS и EFB.
  • Хорошая масштабируемость на данные с большим числом объектов и признаков, включая разреженные.
  • Листовой рост даёт меньшую ошибку при фиксированном числе листьев по сравнению с уровневым.
  • Оптимизация вычитанием гистограмм вдвое сокращает построение гистограмм на каждом уровне.
  • Поддержка категориальных признаков без явного one-hot-кодирования, параллельного и GPU-обучения.

Ограничения

  • Листовой рост при недостаточной регуляризации легко переобучается, особенно на малых выборках.
  • Гистограммная дискретизация огрубляет пороги расщепления, что на небольших данных может немного снижать точность.
  • Чувствительность к числу листьев, размеру бинов и параметрам GOSS требует аккуратной настройки.
  • Как всякий бустинг, чувствителен к шуму в целевой переменной.

Сравнение с XGBoost и CatBoost

Все три метода реализуют регуляризованный градиентный бустинг над деревьями и различаются в нескольких компонентах.

Против XGBoost. XGBoost (Chen, Guestrin, 2016) использует уровневый рост и аппроксимированный поиск расщеплений со взвешенным квантильным эскизом, опираясь на разложение потерь второго порядка. LightGBM заменяет это листовым ростом и гистограммным поиском, а число объектов и признаков в оценке выигрыша сокращает через GOSS и EFB. На практике LightGBM обычно быстрее и экономнее по памяти на очень больших и высокоразмерных данных, тогда как XGBoost нередко устойчивее на малых выборках. Стоит отметить, что современные версии XGBoost также поддерживают гистограммный режим, так что разрыв в скорости сократился.

Против CatBoost. CatBoost (Prokhorenkova et al., 2018) решает иную проблему — смещение предсказаний и утечку целевой переменной. Он применяет упорядоченные целевые статистики для категориальных признаков и упорядоченный бустинг (ordered boosting), оценивающий градиенты на объектах, предшествующих текущему в некоторой перестановке, а также симметричные (oblivious) деревья. LightGBM таких механизмов не имеет и полагается на скорость и гистограммную обработку категорий. При обилии категориальных признаков и риске утечек CatBoost обычно точнее «из коробки», тогда как LightGBM выигрывает по скорости на числовых высокоразмерных данных.

Практический итог: LightGBM — выбор по умолчанию, когда критичны скорость и объём данных; XGBoost — зрелый универсальный вариант, надёжный на средних выборках; CatBoost — когда доминируют категориальные признаки. Различие конкретных компонентов, а не общая «сила» метода, объясняет расхождение результатов на данной задаче.

Применение

LightGBM применяется в тех же областях, что и прочий градиентный бустинг над табличными данными, но особенно там, где важны скорость обучения и объём выборки: ранжирование в поисковых и рекомендательных системах, кредитный скоринг, детекция мошенничества, прогнозирование оттока, спроса и кликов в онлайн-рекламе. Благодаря высокой скорости он удобен для частого переобучения моделей на потоковых данных и для перебора гиперпараметров, а также как сильный базовый уровень и компонент ансамблей в соревновательном ML.

См. также

Ссылки

Литература

  • Friedman J. H. Greedy Function Approximation: A Gradient Boosting Machine // The Annals of Statistics. — 2001. — Т. 29. — № 5. — С. 1189–1232.
Личные инструменты