Какие функции потерь можно использовать для обучения CatBoost?

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

Ответ

CatBoost поддерживает широкий спектр функций потерь, которые выбираются в зависимости от типа задачи.

Для задач классификации:

  • Logloss — логистическая функция потерь по умолчанию для бинарной классификации.
  • CrossEntropy — используется для многоклассовой классификации.
  • MultiClass / MultiClassOneVsAll — альтернативные варианты для многоклассовых задач.

Для задач регрессии:

  • RMSE (Root Mean Squared Error) — функция по умолчанию, чувствительна к выбросам.
  • MAE (Mean Absolute Error) — более робастная к выбросам.
  • Quantile — для квантильной регрессии (например, чтобы предсказать 90-й перцентиль).
  • Poisson — для регрессии с данными, распределёнными по закону Пуассона (например, количество событий).

Для задач ранжирования (Learning to Rank):

  • YetiRank и YetiRankPairwise — эффективные функции для ранжирования.
  • PairLogit — для попарного ранжирования.

Пример настройки для регрессии с MAE:

from catboost import CatBoostRegressor

model = CatBoostRegressor(
    loss_function='MAE',          # Используем Mean Absolute Error
    iterations=500,
    depth=6,
    learning_rate=0.03,
    verbose=100
)
model.fit(
    X_train, y_train,
    eval_set=(X_eval, y_eval),
    cat_features=categorical_features_indices  # CatBoost сам обработает категории
)

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