MAPE y sMAPE

Eval

MAPE y sMAPE

まとめ
  • MAPE expresa los errores como porcentaje respecto al valor real.
  • Compara MAPE y sMAPE en un ejemplo de previsión de ventas y observa la inestabilidad cerca de cero.
  • Revisa cómo actuar cuando la serie contiene ceros, valores pequeños o negativos.

1. Definición #

$$ \mathrm{MAPE} = \frac{100}{n} \sum_{i=1}^n \left| \frac{y_i - \hat{y}_i}{y_i} \right| $$

  • Media del error porcentual sobre el valor real.
  • Cuanto menor, mejor.
  • Explota si algún \(y_i\) vale cero o se acerca a cero.

2. Cálculo en Python #

import numpy as np
from sklearn.metrics import mean_absolute_percentage_error

y_true = np.array([120, 150, 80, 200])
y_pred = np.array([110, 160, 75, 210])

mape = mean_absolute_percentage_error(y_true, y_pred)
print(f"MAPE = {mape * 100:.2f}%")

La función devuelve un valor en fracción; multiplícalo por 100 para expresarlo en porcentaje.


3. sMAPE (MAPE simétrico) #

Para reducir el problema cerca de cero, sMAPE añade las predicciones al denominador:

$$ \mathrm{sMAPE} = \frac{100}{n} \sum_{i=1}^n \frac{|y_i - \hat{y}_i|}{(|y_i| + |\hat{y}_i|)/2} $$

import numpy as np

def smape(y_true: np.ndarray, y_pred: np.ndarray) -> float:
    numerator = np.abs(y_true - y_pred)
    denominator = (np.abs(y_true) + np.abs(y_pred)) / 2
    return float(np.mean(numerator / np.maximum(denominator, 1e-8)))

y_true = np.array([120, 150, 80, 200])
y_pred = np.array([110, 160, 75, 210])
print(f"sMAPE = {smape(y_true, y_pred) * 100:.2f}%")

El denominador puede ser cero; añade un epsilon pequeño para evitar divisiones problemáticas.


4. Precauciones #

  • Ceros o valores negativos: MAPE explota con valores cero; utiliza sMAPE o analiza únicamente periodos con demanda positiva.
  • Sesgo hacia valores pequeños: los porcentajes otorgan más peso a magnitudes pequeñas; adviértelo en los reportes.
  • Outliers: los errores relativos minimizan el impacto de grandes volúmenes; acompáñalos con métricas absolutas.
  • Interpretación: “errores medios del ±X%” resulta claro, pero conviene traducirlo a impacto monetario cuando sea posible.

5. Complemento con otras métricas #

  • MAE / RMSE: muestran los errores absolutos y ayudan a estimar el impacto real.
  • RMSLE: penaliza fuertes subestimaciones en pronósticos de crecimiento o demanda.
  • Pinball loss: útil para evaluar intervalos/cuántiles cuando existen objetivos de riesgo.

Resumen #

  • MAPE ofrece una métrica intuitiva en porcentaje, pero requiere cuidado cerca de cero.
  • sMAPE mitiga esta inestabilidad al normalizar con la suma de observaciones y predicciones.
  • Combina métricas relativas y absolutas para priorizar mejoras y comunicar los efectos de negocio.