MAPE (Mean Absolute Percentage Error)

El Error Porcentual Absoluto Medio expresa el error como porcentaje. Es la métrica más fácil de comunicar: "El modelo se equivoca en promedio un 5%".

La fórmula

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

¿Qué significa cada parte?

  • nn — Número total de observaciones
  • yiy_i — Valor real de la observación ii
  • y^i\hat{y}_i — Valor predicho por el modelo
  • yiy^iyi\frac{y_i - \hat{y}_i}{y_i} — Error relativo (como fracción del valor real)
  • x|\phantom{x}| — Valor absoluto
  • 100100 — Convierte a porcentaje

Ejemplo numérico

CasaRealPredichoError relativo
1100k110k10/100 = 10%
2200k180k20/200 = 10%
3150k160k10/150 = 6.67%

MAPE=10+10+6.6738.89%MAPE = \frac{10 + 10 + 6.67}{3} \approx 8.89\%

El modelo se equivoca, en promedio, un 8.89%.

Cuidado con valores cercanos a cero

MAPE divide por el valor real (y). Si tienes valores cercanos a 0, el error porcentual puede explotar a infinito. Minerva ignora observaciones donde y = 0.


Implementación

Minerva retorna el valor directamente como porcentaje. scikit-learn lo retorna como fracción:

MinervaMAPE.java
1
2
3
4
5
import com.minerva.metrics.RegressionMetrics.RegressionMetrics;
RegressionMetrics metrics = new RegressionMetrics();
double mape = metrics.MAPE(actual, predicted);
// Retorna 5.0 (ya en porcentaje)

API Reference

MAPE(Vector actual, Vector predicted)

Example.java
1
double mape = metrics.MAPE(actual, predicted);
ParámetroTipoDescripción
actualVectorValores reales
predictedVectorValores predichos

Retorna: double (porcentaje)

Interpretación

AspectoValor
Rango[0, inf)
Mejor valor0%
UnidadesPorcentaje

¿Cuándo usar MAPE?

Recomendado:

  • Cuando necesitas comunicar el error a no-técnicos
  • Cuando quieres comparar modelos de diferentes escalas

No recomendado:

  • Cuando tus datos tienen valores cercanos a 0
  • Cuando 0 es un valor válido en tus datos