Как градиент бустинг регрессор работает


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

🧠 Основная идея

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

Итоговая модель — это сумма всех слабых моделей, которые вместе дают сильную модель:

y^(x)=FM(x)=m=1Mγmhm(x)\\hat{y}(x) = F_M(x) = \\sum_{m=1}^{M} \\gamma_m h_m(x)

где:

  • hm(x)h_m(x) — слабый ученик на итерации mm (например, дерево решений);

  • γm\gamma_m — вес (обычно 1 или находится с помощью оптимизации);

  • MM — общее количество итераций (бустингов).

📉 Почему «градиентный»?

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

⚙️ Пошаговая работа алгоритма

Допустим, у нас есть обучающая выборка (xi,yi)(x_i, y_i), где xix_i — признаки, yiy_i — реальные значения. Функция потерь: L(y,y^)L(y, \hat{y}), например, MSE.

Шаг 1: Начальная модель

Инициализируем модель константным значением:

F0(x)=argminγi=1nL(yi,γ)F_0(x) = \\arg\\min_{\\gamma} \\sum_{i=1}^{n} L(y_i, \\gamma)

Например, при использовании MSE:

F0(x)=среднее значение yF_0(x) = \\text{среднее значение } y

Шаг 2: Для m = 1 до M (число итераций/деревьев)

Для каждого шага mm:

  1. Вычисляем псевдоостатки (градиенты):
ri(m)=\[L(yi,Fm1(xi))Fm1(xi)\]r_i^{(m)} = - \\left\[ \\frac{\\partial L(y_i, F_{m-1}(x_i))}{\\partial F_{m-1}(x_i)} \\right\]

Например, при MSE:

ri(m)=yiFm1(xi)r_i^{(m)} = y_i - F_{m-1}(x_i)
  1. Обучаем регрессор hm(x)h_m(x) на этих остатках ri(m)r_i^{(m)}.

  2. Находим оптимальный коэффициент (шаг градиента):

γm=argminγi=1nL(yi,Fm1(xi)+γhm(xi))\\gamma_m = \\arg\\min_{\\gamma} \\sum_{i=1}^{n} L(y_i, F_{m-1}(x_i) + \\gamma h_m(x_i))
  1. Обновляем модель:
Fm(x)=Fm1(x)+γmhm(x)F_m(x) = F_{m-1}(x) + \\gamma_m h_m(x)

📌 Пример для MSE

Пусть используется среднеквадратичная ошибка:

L(y,y^)=12(yy^)2L(y, \\hat{y}) = \\frac{1}{2}(y - \\hat{y})^2
  • Градиент: ∂L∂y^=y^−y\frac{\partial L}{\partial \hat{y}} = \hat{y} - y

  • Значит, псевдоостатки: ri=yi−y^ir_i = y_i - \hat{y}_i

То есть на каждом шаге мы:

  • Считаем, где модель ошиблась.

  • Строим новое дерево, которое учится предсказывать эти ошибки.

  • Добавляем это дерево в ансамбль, уменьшая общую ошибку.

🌲 Почему деревья?

  • Обычно в градиентном бустинге используются мелкие деревья решений (decision trees), часто с глубиной 3–6.

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

  • Композиция многих слабых деревьев → сильная модель.

🛠 Гиперпараметры Gradient Boosting Regressor

  • n_estimators — количество деревьев в ансамбле.

  • learning_rate — насколько сильно каждое дерево влияет на итоговую модель (чем меньше, тем медленнее и стабильнее обучение).

  • max_depth — глубина каждого дерева.

  • subsample — доля случайных данных для обучения каждого дерева (важно для борьбы с переобучением).

  • loss — функция потерь (по умолчанию MSE, но могут быть Huber, Quantile и др.).

📉 Недостатки

  • Долгое обучение (по сравнению с Random Forest).

  • Склонность к переобучению без правильной настройки параметров.

  • Плохо параллелится (деревья строятся последовательно).

🚀 Библиотеки

  • sklearn.ensemble.GradientBoostingRegressor

  • XGBoost

  • LightGBM

  • CatBoost

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

  • Обрезка деревьев.

  • Специальные потери (например, Huber).

  • Улучшения по скорости и памяти.

  • Более точная оптимизация шагов.

📋 Сравнение с Random Forest

Random Forest Gradient Boosting
Строит деревья Параллельно Последовательно
--- --- ---
Ансамбль Усреднение/голосование Суммирование (аддитивная модель)
--- --- ---
Переобучение Устойчив к переобучению Может переобучаться при неправильной настройке
--- --- ---
Скорость Быстрее в обучении Медленнее
--- --- ---
Точность Ниже на сложных задачах Обычно выше при хорошей настройке
--- --- ---

Градиентный бустинг — один из самых мощных инструментов для задач регрессии, особенно когда требуется высокая точность и модель может быть «дорогой» по вычислениям.