17 · Métricas y baselines
Antes de celebrar cualquier modelo, mide su error con MAE / RMSE / MAPE y compáralo contra los dos baselines que todo pronóstico debe superar: naive y seasonal-naive.
Un pronóstico solo es bueno en relación a un baseline. MAE / RMSE / MAPE cuantifican el error, y los baselines naive (último valor) y seasonal-naive (mismo punto hace una estación) fijan la vara — si tu modelo sofisticado no los supera, no aporta nada.
Sin esto:
Reporta un RMSE sin baseline y no tienes idea de si el número es bueno; los equipos rutinariamente despliegan modelos que pierden contra un pronóstico seasonal-naive de una línea.
Tres métricas de error dominan el forecasting, y cada una cuenta una historia ligeramente distinta:
- MAE (Error Absoluto Medio) —
mean(|y - ŷ|). En las mismas unidades que la data, fácil de explicar ("desviado 4 unidades en promedio") y robusto a outliers. - RMSE (Raíz del Error Cuadrático Medio) —
sqrt(mean((y - ŷ)²)). También en unidades de la data pero eleva al cuadrado primero, así que castiga más los grandes errores que MAE. Úsalo cuando los errores grandes son especialmente costosos. - MAPE (Error Porcentual Absoluto Medio) —
mean(|y - ŷ| / |y|) × 100. Sin escala (un porcentaje), genial para comparar entre series de magnitudes distintas — pero explota cuando los reales están cerca de cero (división por un número diminuto) y es indefinido en cero exacto. Nunca confíes en MAPE sobre data intermitente o con muchos ceros.
Un solo número no significa nada por sí mismo. Debes compararlo contra baselines — pronósticos triviales que un modelo real tiene que superar:
- Naive: mañana = hoy. El pronóstico para
t+hes simplemente el último valor observado. Sorprendentemente difícil de superar en series tipo random-walk. - Seasonal-naive:
t+hes igual al valor de hace una estación completa (p. ej. "el próximo lunes = el lunes pasado" para período 7). En data estacional, esta es la vara a superar.
El código de abajo implementa las tres métricas desde cero, construye los dos baselines sobre un hold-out e imprime el error de cada baseline — el número literal que tu modelo en producción debe quedar por debajo.
Python (in browser)
MAE / RMSE / MAPE implementadas desde cero, más los baselines naive y seasonal-naive sobre un hold-out — la vara de error que tu modelo debe superar.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Estás pronosticando devoluciones diarias de un producto, una serie que a menudo es exactamente 0 en días tranquilos. ¿Qué métrica es la PEOR elección y por qué?
- MAE es robusto y en unidades de la data; RMSE (también en unidades) castiga más los grandes errores; MAPE es sin escala pero se rompe cerca de cero.
- Una métrica no significa nada sin un baseline: naive (último valor) y seasonal-naive (valor de hace una estación) fijan la vara a superar.
- En data estacional seasonal-naive es la vara; si tu modelo no la supera, el modelo no aporta valor.
Toda competencia de forecasting, revisión de planificación de demanda y dashboard de monitoreo reporta el error del modelo contra baselines naive/seasonal-naive.
Si lo quitas: Sin un baseline no puedes distinguir un buen RMSE de uno malo, y arriesgas desplegar un modelo que pierde contra un pronóstico de una línea.