Как регуляризуется CatBoost?

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

Ответ

В CatBoost я настраиваю регуляризацию через комбинацию гиперпараметров, чтобы контролировать переобучение и улучшать обобщающую способность модели.

Основные методы регуляризации в CatBoost:

  1. Регуляризация весов листьев (l2_leaf_reg):

    • Это L2-регуляризация (по умолчанию = 3). Штрафует большие значения в листьях деревьев.
    • Увеличение этого параметра делает модель более консервативной.
  2. Ограничение сложности деревьев:

    • depth: Максимальная глубина дерева (по умолчанию 6).
    • min_data_in_leaf: Минимальное количество объектов в листе.
  3. Стохастическое бустирование:

    • subsample: Доля случайно выбираемых объектов для построения каждого дерева (например, 0.8).
    • colsample_bylevel: Доля случайно выбираемых признаков на каждом уровне (разделении) дерева.
  4. Ранняя остановка (early_stopping_rounds):

    • Обучение автоматически останавливается, если качество на валидационной выборке не улучшается заданное число итераций.

Пример конфигурации с регуляризацией:

from catboost import CatBoostClassifier

model = CatBoostClassifier(
    iterations=1000,
    learning_rate=0.05,
    depth=5,                     # Ограничиваем глубину
    l2_leaf_reg=5,               # Усиливаем L2-регуляризацию
    subsample=0.8,               # Берём 80% данных для каждого дерева
    colsample_bylevel=0.8,       # Берём 80% признаков на каждом уровне
    random_strength=1,           # Добавляем случайность при выборе разделений
    verbose=100
)

# Обучение с ранней остановкой
model.fit(
    X_train, y_train,
    eval_set=(X_val, y_val),
    early_stopping_rounds=50,    # Остановка, если 50 итераций без улучшения
    use_best_model=True
)

Также CatBoost по умолчанию использует упорядоченное бустирование, которое само по себе снижает переобучение за счёт специального механизма обработки категориальных признаков и вычисления градиентов.