Ответ
В бустинге (Gradient Boosting, XGBoost, LightGBM, CatBoost) в качестве базовых алгоритмов (weak learners) почти исключительно используются неглубокие решающие деревья.
Почему именно они?
- Слабость (High Bias): Бустинг строет сильную модель, последовательно исправляя ошибки предыдущих. Если базовые деревья будут слишком сложными (глубокими), они начнут переобучаться (запоминать шум) с первого шага, и ансамблю будет нечего исправлять.
- Скорость: Неглубокие деревья строятся и предсказывают очень быстро, что критично, так как бустинг строит сотни или тысячи таких деревьев.
- Интерпретируемость: Совокупность простых правил (глубиной 3-6) часто проще для анализа, чем одно глубокое дерево.
Типичные параметры для деревьев в бустинге (на примере XGBoost):
import xgboost as xgb
params = {
'max_depth': 4, # Небольшая глубина (обычно 3-8)
'min_child_weight': 5, # Минимальный вес в листе для борьбы с переобучением
'learning_rate': 0.1, # Темп обучения (shrinkage) для контроля вклада каждого дерева
'subsample': 0.8, # Доля данных для обучения каждого дерева (stochastic boosting)
'colsample_bytree': 0.8, # Доля признаков для каждого дерева
}
model = xgb.XGBRegressor(**params)
Современные вариации:
- LightGBM использует деревья, растущие leaf-wise (а не level-wise), что часто эффективнее, и применяет гистограммный метод для ускорения поиска лучшего разбиения.
- CatBoost эффективно работает с категориальными признаками без предобработки, используя упорядоченное бустирование для борьбы со смещением.