Какие деревья предпочтительнее использовать в алгоритмах бустинга (Boosting)?

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

Ответ

В бустинге (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 эффективно работает с категориальными признаками без предобработки, используя упорядоченное бустирование для борьбы со смещением.