Что такое бустинг
Что проверяют
Понимаете ли вы механику, а не только названия библиотек: что именно учит каждое следующее дерево и почему бустинг снижает смещение, а бэггинг разброс. Раз вопрос из секции с кодом, следом нередко просят набросать градиентный бустинг для регрессии руками или назвать гиперпараметры, которые вы настраиваете первыми.
Как отвечать
Бустинг это ансамбль, который строится последовательно: каждая новая слабая модель, обычно неглубокое дерево, исправляет ошибки уже собранного ансамбля. Итоговое предсказание: F_m(x) = F_{m-1}(x) + η · h_m(x), где η это learning rate.
Два подхода стоит различать:
- AdaBoost: после каждого шага увеличивает веса объектов, на которых ошиблись, и следующая модель учится на перевзвешенной выборке;
- градиентный бустинг: весов объектов нет, новое дерево учится предсказывать антиградиент функции потерь по текущим предсказаниям. Для MSE это просто остатки, то есть разность между
yиF(x), поэтому руками он пишется в десяток строк наDecisionTreeRegressor.
Популярные библиотеки это варианты градиентного бустинга:
- XGBoost: использует вторые производные потерь и регуляризацию листьев в целевой функции;
- LightGBM: гистограммы признаков и рост дерева по листьям, быстр на больших данных;
- CatBoost: симметричные деревья и упорядоченное кодирование категориальных признаков.
Настройка: маленький learning_rate, много деревьев и early stopping по валидационной выборке; глубина (max_depth или num_leaves), subsample и colsample_bytree против переобучения; L2-регуляризация листьев.
Где спотыкаются
Называют XGBoost «улучшенным AdaBoost» и описывают перевзвешивание объектов как общий принцип бустинга. У градиентного бустинга механика другая.
Делают early stopping по тестовой выборке. Число деревьев подгоняется под тест, и итоговая метрика выходит завышенной.
Верят, что деревьям не нужна подготовка данных. Масштабирование действительно не нужно, но утечки в признаках никуда не деваются, категории нативно понимают CatBoost и LightGBM, а XGBoost только с флагом enable_categorical. И деревья не экстраполируют за диапазон обучающих данных.