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