В чем разница между методами ансамблирования бэггингом и бустингом?

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

Ответ

Бэггинг (Bagging) и Бустинг (Boosting) — это два принципиально разных подхода к построению ансамблей моделей.

Бэггинг (Bootstrap Aggregating)

  • Цель: Уменьшение дисперсии модели.
  • Принцип: Параллельное обучение множества независимых базовых моделей (часто "слабых" и неустойчивых, как деревья решений).
  • Данные: Каждая модель обучается на своей бутстрэп-выборке (случайная выборка с возвращением из исходного набора).
  • Агрегация: Итоговый прогноз — это усреднение (для регрессии) или голосование большинством (для классификации) предсказаний всех моделей.
  • Пример: RandomForest — классический бэггинг над решающими деревьями.
from sklearn.ensemble import RandomForestClassifier
# Создаем ансамбль из 100 деревьев, обученных на бутстрэп-выборках
model = RandomForestClassifier(n_estimators=100, max_features='sqrt')
model.fit(X_train, y_train)
# Прогноз — результат голосования всех деревьев
predictions = model.predict(X_test)

Бустинг

  • Цель: Уменьшение смещения (а впоследствии и дисперсии).
  • Принцип: Последовательное обучение моделей, где каждая следующая фокусируется на ошибках предыдущих.
  • Данные: Веса объектов обновляются на каждом шаге. Неверно предсказанные на предыдущем шаге объекты получают больший вес для следующей модели.
  • Агрегация: Итоговый прогноз — взвешенная сумма предсказаний всех последовательных моделей.
  • Пример: AdaBoost, GradientBoosting, XGBoost, LightGBM.
from sklearn.ensemble import GradientBoostingClassifier
# Модели обучаются последовательно, каждая исправляет ошибки предыдущей
model = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1)
model.fit(X_train, y_train)
# Прогноз — взвешенное голосование
predictions = model.predict(X_test)

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