MAPE больше штрафует за недопрогноз или перепрогноз?



На первый взгляд, кажется, что одинаково штрафует = MAPE симметричен. Обычно это доказывают логикой из самой формулы

MAPE = |y_true - x| / |y_true|

= |y_true + x| / |y_true|,

т.к |y_true - x| = |y_true + x|



Но на практике все несколько сложнее. Обычно мы используем MAPE для прогноза продаж и цен. То есть кейсов, где таргет >= 0.

В таком случае для недопрогноза mape не может быть > 100%, потому что минимальный прогноз = 0 --> |y_true - 0| / y_true = 100%

А вот для перепрогноза mape может уходить в бесконечность. Например, |1 - 8| / 1 = 700%



Поэтому для большинства боевых задач MAPE больше штрафует за перепрогноз --> ML-модели оптимально недопрогнозировать



Забавный факт

Чтобы исправить проблему несимметричности MAPE придумали Symmetric MAPE (SMAPE) = |y_true - y_pred| / (y_true + y_pred) / 2

Забавно то, что Symmetric MAPE не симметричный!)



#metrics