Ответ
MAPE (Mean Absolute Percentage Error) — это метрика для оценки ошибок регрессионных моделей, которая выражает среднюю абсолютную ошибку в процентах от фактических значений. Она удобна для интерпретации бизнесом.
Формула:
MAPE = (100% / n) * Σ(|(Actual - Forecast)| / |Actual|)
Практическое применение и нюансы:
import numpy as np
def mape(y_true: np.ndarray, y_pred: np.ndarray) -> float:
"""Вычисление MAPE. Требует обработки нулевых значений."""
# Игнорируем деление на ноль
mask = y_true != 0
if not np.any(mask):
return np.nan # Все фактические значения равны нулю
return np.mean(np.abs((y_true[mask] - y_pred[mask]) / y_true[mask])) * 100
# Пример с реальными данными
actual = np.array([100, 200, 0, 400])
forecast = np.array([110, 190, 10, 380])
print(f"MAPE (без нулей): {mape(actual, forecast):.2f}%")
Преимущества и недостатки:
- Плюсы: Легко интерпретировать (ошибка в %), инвариантна к масштабу данных.
- Минусы:
- Не определена при нулевых фактических значениях, что требует предварительной фильтрации или использования модификаций (например, sMAPE).
- Асимметрична: штрафует заниженные прогнозы сильнее, чем завышенные (например, прогноз 50 для факта 100 даст 50% ошибки, а прогноз 150 для того же факта — только 33%).
- Чувствительна к выбросам с малыми фактическими значениями.
В production-пайплайнах я часто использую MAPE вместе с другими метриками (MAE, RMSE) для комплексной оценки.