Ответ
Бустинг — это ансамблевый метод, где модели (обычно "слабые", например, неглубокие деревья) обучаются последовательно, а не параллельно, как в бэггинге. Каждая следующая модель фокусируется на ошибках, допущенных предыдущими.
Ключевой принцип, который я реализовывал при работе с XGBoost:
- Обучается первая базовая модель (например, дерево глубины 1).
- Для каждого объекта вычисляется остаток (residual) — разница между истинным значением и предсказанием.
- Следующая модель обучается предсказывать эти остатки.
- Предсказания всех моделей суммируются с учетом скорости обучения (learning rate) для получения итогового предсказания.
Практический пример с XGBoost для регрессии:
import xgboost as xgb
from sklearn.datasets import make_regression
# Генерируем данные
X, y = make_regression(n_samples=1000, n_features=10, noise=0.1)
# Определяем параметры бустинга
dtrain = xgb.DMatrix(X, label=y)
params = {
'objective': 'reg:squarederror',
'max_depth': 3, # Слабая модель (неглубокое дерево)
'eta': 0.1, # Learning rate: маленький шаг для плавного обучения
'subsample': 0.8, # Доля данных для обучения каждого дерева
'colsample_bytree': 0.8
}
# Обучаем модель. `num_boost_round` — количество последовательных деревьев (моделей)
model = xgb.train(params, dtrain, num_boost_round=100)
Преимущества, которые я наблюдал: Бустинг часто дает более высокую точность, чем бэггинг или одна модель, за счет последовательной коррекции ошибок. Однако он более склонен к переобучению, поэтому критически важны тщательный подбор learning rate и использование валидационных выборок для ранней остановки.