Какова размерность градиента при обучении градиентного бустинга?

«Какова размерность градиента при обучении градиентного бустинга?» — вопрос из категории Деревья и ансамбли, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

При обучении градиентного бустинга (Gradient Boosting) на каждом шаге построения нового базового алгоритма (обычно дерева) вычисляется антиградиент функции потерь относительно текущих предсказаний модели. Размерность этого градиента равна числу объектов в обучающей выборке n.

Объяснение: Мы оптимизируем аддитивную модель F(x) = sum_{m=1}^{M} gamma_m * h_m(x), минимизируя эмпирический риск L(y, F(x)). На шаге m мы фиксируем текущую модель F_{m-1}(x) и ищем базовый алгоритм h_m(x), который лучше всего аппроксимирует антиградиент.

Градиент вычисляется для каждого объекта обучающей выборки: g_i = - [∂L(y_i, F(x_i)) / ∂F(x_i)], где i = 1, ..., n.

Пример расчета для квадратичной ошибки (MSE) в Python:

import numpy as np

# Исходные данные: n = 5 объектов
y_true = np.array([3.0, 5.1, 2.8, 6.0, 4.2])  # Истинные значения
F_current = np.array([2.5, 4.9, 3.2, 5.5, 4.0])  # Текущие предсказания модели

# Функция потерь MSE: L(y, F) = (y - F)^2 / n
# Градиент по F: dL/dF = 2 * (F - y) / n
gradient = 2 * (F_current - y_true) / len(y_true)

print("Вектор градиента (размерность n):")
print(gradient)
print(f"Форма градиента: {gradient.shape}")  # Вывод: (5,)

Как это используется в алгоритмах (XGBoost, LightGBM, CatBoost):

  1. Для каждого объекта вычисляется значение градиента g_i.
  2. Новое дерево строится так, чтобы его предсказания h_m(x_i) были как можно ближе к -g_i (решается задача аппроксимации градиента). По сути, мы обучаем дерево регрессии на псевдо-остатках.
  3. Для задач классификации (логистическая потеря) градиент имеет другую формулу, но его размерность по-прежнему (n,) (или (n, n_classes) для многоклассовой).

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