ENIGMA AI
ENIGMA AI

Что такое градиентный бустинг и как он устроен?

встречается 4× Machine Learning middle algorithms

Как ответить

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

Устроен метод так:

  • Инициализация: начинаем с константного предсказания, обычно среднего значения целевой переменной для регрессии или log(odds) для классификации.
  • Итерация: для каждого шага m = 1..M:
    • Считаем псевдо-остатки: отрицательный градиент функции потерь по текущим предсказаниям. Для MSE это просто (y - F(x)).
    • Обучаем решающее дерево (обычно глубины 3-6) предсказывать эти остатки.
    • Добавляем дерево в ансамбль с коэффициентом learning_rate (обычно 0.01-0.3): F_m(x) = F_{m-1}(x) + lr * tree(x).
  • Регуляризация: кроме lr, используют subsample (столбцов и строк), min_child_weight, max_depth, gamma. Без них модель быстро переобучается.

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

Пример кода на Python с XGBoost:

import xgboost as xgb

model = xgb.XGBRegressor(
    n_estimators=100,
    max_depth=4,
    learning_rate=0.1,
    subsample=0.8,
    colsample_bytree=0.8
)
model.fit(X_train, y_train)

На практике бустинг — стандарт для табличных данных. LightGBM и CatBoost — его оптимизированные версии: первый использует гистограммы и GOSS для скорости, второй — ordered boosting для работы с категориями. Главный недостаток — чувствительность к выбросам и необходимость подбора гиперпараметров.

Ключевые тезисы

  • Бустинг — последовательный ансамбль, где каждое дерево исправляет ошибки предыдущего через градиентный спуск в функциональном пространстве.
  • Основные гиперпараметры: learning_rate (шаг градиента), n_estimators (число деревьев), max_depth (глубина), subsample (доля данных на дерево).
  • Популярные реализации: XGBoost (быстрый, с регуляризацией), LightGBM (эффективен на больших данных), CatBoost (работа с категориями).
  • Главная проблема — переобучение; решается регуляризацией, ранней остановкой и кросс-валидацией.

Что спросят дальше

  • — Чем отличается градиентный бустинг от AdaBoost? В чём разница в функции потерь и весах объектов?
  • — Как бустинг ведёт себя при наличии выбросов в данных? Какие модификации (например, Huber loss) помогают?
  • — Как вы подбираете количество деревьев и learning_rate на практике? Расскажите про раннюю остановку.

Готовьтесь к собеседованию с ENIGMA AI

AI-суфлёр подсказывает ответы прямо на собеседовании в реальном времени — незаметно для интервьюера.

Скачать приложение