Открыть сервис

Градиентный бустинг

Градиентный бустинг — это метод машинного обучения, используемый для задач регрессии и классификации, который строит ансамбль моделей (обычно решающих деревьев) последовательно, где каждая следующая модель исправляет ошибки предыдущей. Алгоритм относится к семейству методов бустинга и основан на идее минимизации функции потерь с помощью градиентного спуска. Градиентный бустинг широко применяется в прикладных задачах, таких как прогнозирование временных рядов, ранжирование поисковых результатов, обнаружение мошеннических транзакций и биоинформатика, благодаря высокой точности и способности работать с разнородными данными.

Основная идея и принцип работы

Градиентный бустинг строит ансамбль моделей итеративно. На каждом шаге $m$ (где $m = 1, \dots, M$) к ансамблю добавляется новая модель $h_m$, которая обучается на остатках (ошибках) предыдущего ансамбля. Формально, пусть $F_0(x)$ — начальная модель (часто константа, равная среднему значению целевой переменной для регрессии или логарифму шансов для классификации). На шаге $m$ алгоритм вычисляет «псевдо-остатки» $r_{im}$ для каждого объекта $i$ как отрицательный градиент функции потерь $L(y_i, F_{m-1}(x_i))$ по предсказанию $F_{m-1}(x_i)$:

$$ r_{im} = -\left[ \frac{\partial L(y_i, F(x_i))}{\partial F(x_i)} \right]_{F(x) = F_{m-1}(x)} $$

Затем новая модель $h_m$ обучается на паре $(x_i, r_{im})$, то есть на вход подаются признаки, а целевой переменной являются псевдо-остатки. После обучения модель $h_m$ добавляется к ансамблю с весовым коэффициентом $\gamma_m$ (шаг обучения), который определяется с помощью линейного поиска (line search) по направлению градиента:

$$ F_m(x) = F_{m-1}(x) + \gamma_m h_m(x) $$

Процесс повторяется $M$ раз. Итоговая модель $F_M(x)$ представляет собой сумму всех базовых моделей с их коэффициентами.

Функция потерь

Выбор функции потерь $L$ определяет конкретную задачу. Для регрессии часто используются среднеквадратичная ошибка (MSE) или средняя абсолютная ошибка (MAE). Для бинарной классификации — логистическая функция потерь (log-loss). Для многоклассовой классификации — кросс-энтропия. Градиентный бустинг может работать с любой дифференцируемой функцией потерь, что делает его гибким инструментом.

Регуляризация

Для предотвращения переобучения в градиентный бустинг вводятся механизмы регуляризации:

  • Скорость обучения (learning rate, $\eta$): уменьшает вклад каждой добавляемой модели, обычно $\eta \in (0, 1]$. Фактически, модель обновляется как $F_m(x) = F_{m-1}(x) + \eta \gamma_m h_m(x)$. Меньшая скорость обучения требует большего числа итераций $M$, но часто даёт лучшую обобщающую способность.
  • Подвыборка (subsampling): обучение каждой новой модели на случайной подвыборке обучающих данных (без возвращения). Это вносит стохастичность и снижает корреляцию между моделями, что является формой бэггинга.
  • Ограничение глубины деревьев: базовые модели обычно представляют собой решающие деревья небольшой глубины (например, 3–8 уровней), что ограничивает сложность каждой отдельной модели и предотвращает переобучение.
  • Минимальное количество объектов в листе: задаёт порог, ниже которого дерево не разбивается, что также ограничивает сложность.

История и развитие

Метод градиентного бустинга был формализован и популяризирован в конце 1990-х — начале 2000-х годов. Ключевые этапы развития:

  • 1999 год: Лео Брейман (Leo Breiman) предложил метод «Аrc-x4» и идею использования градиентного спуска для бустинга.
  • 2001 год: Джером Фридман (Jerome H. Friedman) опубликовал работу «Greedy Function Approximation: A Gradient Boosting Machine», в которой дал строгое математическое описание метода и показал его эффективность на практике. Эта работа считается основополагающей.
  • 2007 год: появление библиотеки gbm (R), одной из первых реализаций градиентного бустинга.
  • 2014 год: разработка библиотеки XGBoost (eXtreme Gradient Boosting) Тяньци Ченом (Tianqi Chen) и Карлосом Гестеном (Carlos Guestrin). XGBoost предложила оптимизированную реализацию с поддержкой параллельных вычислений, регуляризации (L1 и L2) и алгоритма поиска разбиений (weighted quantile sketch), что сделало её одной из самых популярных библиотек.
  • 2017 год: появление библиотеки LightGBM от Microsoft, ориентированной на высокую скорость обучения и низкое потребление памяти за счёт использования гистограммного подхода и стратегии «GOSS» (Gradient-based One-Side Sampling) и «EFB» (Exclusive Feature Bundling).
  • 2017 год: выпуск библиотеки CatBoost (Yandex), которая решает проблему категориальных признаков с помощью метода «ordered boosting» и симметричных деревьев. CatBoost также автоматически обрабатывает пропущенные значения и требует минимальной предобработки данных.

Классификация и варианты

Градиентный бустинг можно классифицировать по нескольким признакам:

По типу базовой модели

  • На основе решающих деревьев (наиболее распространённый вариант): деревья решений небольшой глубины.
  • На основе линейных моделей: реже используется, но возможен для задач, где нелинейность не требуется.
  • На основе других моделей: теоретически может применяться с любыми слабыми обучающимися алгоритмами.

По способу оптимизации

  • Пакетный (batch) градиентный бустинг: использует все данные для вычисления градиента на каждой итерации.
  • Стохастический градиентный бустинг: использует подвыборку данных (subsampling), что ускоряет обучение и улучшает обобщение.

По реализации

  • XGBoost: использует точный и аппроксимированный жадный алгоритм поиска разбиений, поддерживает пользовательские функции потерь, имеет встроенную регуляризацию.
  • LightGBM: основан на гистограммном подходе (дискретизация непрерывных признаков), что значительно ускоряет обучение на больших наборах данных. Использует стратегию GOSS (выборка объектов с большим градиентом) и EFB (объединение разреженных признаков).
  • CatBoost: использует симметричные деревья (обязательное разбиение на каждом уровне), что ускоряет инференс. Включает метод ordered boosting для устранения смещения (target leakage) при обработке категориальных признаков.

Преимущества и недостатки

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

  • Высокая точность: градиентный бустинг часто показывает наилучшие результаты на табличных данных по сравнению с другими алгоритмами (случайный лес, логистическая регрессия, нейронные сети).
  • Гибкость: возможность использовать различные функции потерь и настраивать большое количество гиперпараметров.
  • Работа с разнородными данными: эффективно обрабатывает числовые, категориальные и пропущенные значения (особенно в CatBoost и LightGBM).
  • Интерпретируемость: хотя ансамбль сложнее для интерпретации, чем одно дерево, существуют методы оценки важности признаков (feature importance) на основе количества использований признака в разбиениях или среднего уменьшения ошибки.

Недостатки

  • Склонность к переобучению: при большом количестве итераций или глубоких деревьях без регуляризации модель может запомнить шум в данных.
  • Чувствительность к выбросам: градиентный бустинг может сильно реагировать на выбросы, особенно при использовании MSE.
  • Параметрическая зависимость: требует тщательной настройки гиперпараметров (количество деревьев, скорость обучения, глубина, подвыборка) для достижения оптимального результата.
  • Время обучения: последовательная природа бустинга затрудняет параллелизацию, хотя современные реализации (XGBoost, LightGBM) частично решают эту проблему.

Применение

Градиентный бустинг широко применяется в различных областях:

  • Финансы: кредитный скоринг, обнаружение мошенничества, прогнозирование цен акций.
  • Маркетинг: прогнозирование оттока клиентов, сегментация аудитории, оценка пожизненной ценности клиента (LTV).
  • Поисковые системы: ранжирование результатов поиска (например, в Яндекс и Google используются модели на основе градиентного бустинга).
  • Медицина: диагностика заболеваний по медицинским показателям, прогнозирование исходов лечения.
  • Промышленность: прогнозирование отказов оборудования (predictive maintenance), оптимизация производственных процессов.
  • Биоинформатика: анализ экспрессии генов, предсказание структуры белков.

Сравнение с другими методами

ХарактеристикаГрадиентный бустингСлучайный лесНейронные сети
Тип ансамбляПоследовательный (бустинг)Параллельный (бэггинг)Одна сложная модель
Склонность к переобучениюВысокая (требует регуляризации)Низкая (усреднение снижает дисперсию)Высокая (требует регуляризации и больших данных)
Работа с табличными даннымиОтличнаяХорошаяСредняя (требует нормализации)
ИнтерпретируемостьСредняяВысокая (важность признаков)Низкая (чёрный ящик)
Время обученияУмеренное (зависит от реализации)Быстрое (параллелизуется)Долгое (требует GPU)

Популярные библиотеки и реализации

  • XGBoost (разработчик — сообщество, изначально Тяньци Чен): одна из самых популярных библиотек, поддерживает интерфейсы для Python, R, Java, C++, Rust. Известна своей скоростью и производительностью.
  • LightGBM (Microsoft): оптимизирована для больших наборов данных (миллионы строк), использует гистограммный подход, поддерживает GPU.
  • CatBoost (Yandex): специализируется на категориальных признаках, автоматически обрабатывает пропуски, поддерживает GPU. Широко используется в задачах ранжирования и классификации.
  • scikit-learn (GradientBoostingRegressor, GradientBoostingClassifier): реализация в составе библиотеки scikit-learn, удобна для прототипирования, но менее производительна, чем специализированные библиотеки.

Интересные факты

  • Градиентный бустинг является одним из основных алгоритмов, используемых в победителях многих соревнований по машинному обучению на платформе Kaggle, особенно в задачах на табличных данных.
  • Метод «ordered boosting» в CatBoost был разработан для устранения смещения (target leakage), возникающего при использовании традиционного градиентного бустинга с категориальными признаками.
  • В XGBoost реализована поддержка пользовательских функций потерь и метрик, что позволяет адаптировать алгоритм под специфические бизнес-задачи.

Источники

  • Friedman, J. H. (2001). «Greedy Function Approximation: A Gradient Boosting Machine». Annals of Statistics.
  • Chen, T., & Guestrin, C. (2016). «XGBoost: A Scalable Tree Boosting System». Proceedings of the 22nd ACM SIGKDD.
  • Ke, G., et al. (2017). «LightGBM: A Highly Efficient Gradient Boosting Decision Tree». Advances in Neural Information Processing Systems.
  • Prokhorenkova, L., et al. (2018). «CatBoost: unbiased boosting with categorical features». Advances in Neural Information Processing Systems.
  • Hastie, T., Tibshirani, R., & Friedman, J. (2009). «The Elements of Statistical Learning» (2nd ed.). Springer.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →