Как принимать решение о выборе функции потерь для модели с точки зрения бизнеса и данных
Что проверяют
Понимаете ли вы разницу между функцией потерь, которую оптимизирует модель, и метрикой, по которой бизнес оценивает результат. Сильный кандидат связывает цену ошибки в деньгах с формой лосса. Следом часто просят пример, где MSE и MAE привели бы к разным решениям.
Как отвечать
Идите от цены ошибки, а не от списка функций:
- асимметрия ошибок: если недопрогноз спроса дороже перепрогноза (пустая полка против лишнего остатка), подходит квантильная потеря с квантилем выше 0,5. Если дорог пропуск мошенничества, поднимайте вес положительного класса через
class_weightилиscale_pos_weight; - выбросы в таргете: MSE тянется к выбросам и прогнозирует условное среднее, MAE прогнозирует медиану и устойчивее. Компромисс даёт Huber loss с порогом перехода от квадрата к модулю;
- нужны ли вероятности: для скоринга и порогов, которые потом двигает бизнес, берут log loss, он даёт калиброванные вероятности. Focal loss помогает на сильном дисбалансе, но калибровку портит;
- форма таргета: для счётных величин лучше Poisson или Tweedie, для относительной ошибки иногда учат на логарифме таргета;
- ранжирование: если продукт показывает топ выдачи, нужна ранжирующая потеря вроде LambdaRank, а не точечная регрессия.
Бизнес-метрику часто нельзя оптимизировать напрямую: F1 или выручка недифференцируемы. Поэтому модель учат на гладком заменителе, а бизнес-метрику используют для выбора порога, ранней остановки и сравнения вариантов на валидации и в A/B-тесте.
Где спотыкаются
Путают loss и метрику: «оптимизируем accuracy». Градиентным спуском её не оптимизируют, а на дисбалансе она ещё и вводит в заблуждение.
Берут MSE по привычке, не глядя на распределение таргета. На данных с тяжёлым хвостом модель подстраивается под десяток выбросов.
Балансируют классы весами или focal loss, а потом используют выход модели как вероятность. Без повторной калибровки (Platt, isotonic) такие вероятности будут врать в денежных расчётах.