Почему у градиентного бустинга может быть либо высокое смещение, либо высокий разброс?

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

Ответ

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

1. Высокое смещение (недообучение): Возникает, когда модель слишком проста, чтобы уловить закономерности в данных.

  • Причины: Слишком мало деревьев (n_estimators), малая глубина деревьев (max_depth=1-3), высокий темп обучения (learning_rate близкий к 1.0) без достаточного количества деревьев для его компенсации.
  • Пример настройки, ведущей к высокому bias:
    from sklearn.ensemble import GradientBoostingRegressor
    # Модель слишком проста
    high_bias_model = GradientBoostingRegressor(
        n_estimators=20,       # Мало деревьев
        max_depth=2,           # Очень мелкие деревья (пни)
        learning_rate=0.1,
        random_state=42
    )

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

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

  • Причины: Слишком много деревьев, большая глубина деревьев (max_depth=10+), низкий темп обучения при большом количестве деревьев (модель может чрезмерно детализироваться).
  • Пример настройки, ведущей к высокому variance:
    high_variance_model = GradientBoostingRegressor(
        n_estimators=2000,     # Очень много деревьев
        max_depth=10,          # Глубокие, сложные деревья
        learning_rate=0.01,    # Низкий LR требует много деревьев
        min_samples_split=2,   # Минимальное разделение
        random_state=42
    )

    Эта модель может достичь почти идеальной точности на тренировочном наборе, но ее производительность на новых данных (тесте) будет значительно хуже.

Стратегия балансировки (Bias-Variance Trade-off): На практике используют комбинацию параметров для поиска оптимума:

  1. Начинают с управления смещением: Выбирают достаточно глубокие деревья (max_depth=4-8) и умеренное количество итераций, чтобы модель могла выучить закономерности.
  2. Регуляризуют для снижения разброса:
    • learning_rate < 0.1 (шаг shrinkage): Каждое новое дерево вносит небольшой вклад, что требует больше деревьев, но делает процесс обучения более плавным и устойчивым.
    • subsample < 1.0 (Stochastic Gradient Boosting): Каждое дерево обучается на случайной подвыборке данных (например, 80%), что добавляет шум и снижает переобучение.
    • min_samples_split, min_samples_leaf: Ограничивают рост деревьев, не позволяя создавать узлы для маленьких групп объектов.
  3. Кросс-валидация для подбора n_estimators и max_depth — обязательный этап.