Что такое MAPE?

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

Ответ

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}%")

Преимущества и недостатки:

  • Плюсы: Легко интерпретировать (ошибка в %), инвариантна к масштабу данных.
  • Минусы:
    1. Не определена при нулевых фактических значениях, что требует предварительной фильтрации или использования модификаций (например, sMAPE).
    2. Асимметрична: штрафует заниженные прогнозы сильнее, чем завышенные (например, прогноз 50 для факта 100 даст 50% ошибки, а прогноз 150 для того же факта — только 33%).
    3. Чувствительна к выбросам с малыми фактическими значениями.

В production-пайплайнах я часто использую MAPE вместе с другими метриками (MAE, RMSE) для комплексной оценки.