Какая функция потерь используется в бустинге для классификации и регрессии?
Что проверяют
Понимаете ли вы, как функция потерь входит в сам алгоритм бустинга, а не только знаете формулы. Следом часто просят написать свою функцию потерь для XGBoost или LightGBM, и тогда нужны градиент и гессиан.
Как отвечать
Сначала механика. Градиентный бустинг на каждом шаге обучает дерево на антиградиент потерь по текущим предсказаниям (псевдоостатки). XGBoost, LightGBM и CatBoost используют и вторую производную: значение листа примерно равно минус сумме градиентов, делённой на сумму гессианов плюс регуляризация. Поэтому потерей может быть любая дважды дифференцируемая функция, своя передаётся как функция, возвращающая градиент и гессиан.
Классификация:
- логлосс (бинарная кросс-энтропия): деревья предсказывают логит, вероятность получается сигмоидой. В XGBoost это
binary:logistic, в LightGBMbinary, в CatBoostLogloss; - многоклассовая кросс-энтропия с softmax:
multi:softprob,multiclass,MultiClass. XGBoost и LightGBM строят на каждой итерации по дереву на класс; - экспоненциальная: её минимизирует AdaBoost, она сильно штрафует выбросы и ошибки разметки.
Регрессия:
- MSE: по умолчанию (
reg:squarederror,regression,RMSE), градиент равен остатку, гессиан постоянный; - MAE: устойчива к выбросам, но гессиан нулевой, поэтому библиотеки пересчитывают значения листьев отдельно, через медиану остатков;
- Huber: квадратичная возле нуля и линейная на хвостах;
- квантильная: для интервальных прогнозов;
- Poisson, Tweedie, Gamma: для счётных и положительных целевых с тяжёлым хвостом, например сумм страховых выплат.
Отдельно разведите потерю и метрику: оптимизируется логлосс, а на валидации смотрят PR-AUC или NDCG.
Где спотыкаются
Перечисляют формулы, но не объясняют, куда они подставляются в бустинге. Без градиента и гессиана ответ звучит как пересказ учебника по линейной регрессии.
Говорят, что модель «обучается на ROC-AUC». Он не дифференцируем, его используют как метрику для early stopping, а не как цель.
Пишут свою потерю без корректного гессиана или берут MAE, не зная о её нулевой второй производной, и удивляются, что модель учится плохо.