lección 5
La línea base que hay que batir
Los pronósticos ingenuos que todo modelo debe batir, y las métricas de error (MAE, RMSE, MAPE): qué mide cada una y cuándo MAPE engaña.
⏱ 50 min
En las competiciones de pronóstico de electricidad hay un chiste que todo el mundo cuenta y nadie se ríe: la mitad de los modelos presentados pierden contra "mañana consumiremos lo mismo que hoy". Equipos con redes neuronales, con cientos de variables meteorológicas, con meses de trabajo detrás, derrotados por una regla que cabe en seis palabras y no necesita entrenar nada. No es una anécdota rara: es la norma, y es la razón de que la primera cosa que un profesional construye cuando le piden un pronóstico no sea un modelo, sino el adversario más tonto posible contra el que ese modelo tendrá que demostrar que vale algo. Si no lo bate, todo el trabajo sofisticado era un gasto.
Esta idea no es nueva para ti: ya la traías del oficio. Antes de celebrar que un clasificador acierta el 95%, preguntas qué porcentaje tiene la clase mayoritaria, porque un modelo que siempre dice "no" acierta el 99% en un problema donde el "sí" es raro. Antes de presumir de que un modelo de precios tiene poco error, lo comparas con "predecir siempre la media". Esa comparación contra lo trivial —la línea base, el baseline— es el reflejo que separa a quien mide con honestidad de quien se enamora de un número. En series temporales el reflejo es exactamente el mismo, solo cambian las líneas base: aquí lo trivial no es la media ni la clase mayoritaria, es el pasado reciente.
## Los pronósticos ingenuos: el adversario que no entrena
Un pronóstico ingenuo —en inglés naive forecast— es una regla para predecir el futuro tan simple que no necesita aprender nada de los datos: se lee directamente del pasado. El más básico de todos se llama precisamente pronóstico ingenuo, y dice: la mejor predicción del valor de mañana es el valor de hoy. Si hoy la web tuvo 4.200 visitas, mañana predecimos 4.200. Pasado mañana, lo que haya salido mañana. Suena absurdo de puro simple, pero para muchas series es sorprendentemente difícil de batir, porque en una serie con memoria el valor de hoy ya contiene casi toda la información que hay sobre el de mañana.
La razón por la que funciona tan bien conecta con algo que ya sabes de la estructura de las series. Cuando una serie no es estacionaria —cuando tiene una tendencia o un nivel que se mueve despacio—, el valor de hoy es el mejor resumen de dónde está la serie ahora mismo. Un modelo que intente adivinar el de mañana partiendo de cero tiene que reconstruir ese nivel; el pronóstico ingenuo lo tiene gratis, porque usa el último dato real como punto de partida. Es la misma intuición que la de diferenciar: si lo que de verdad importa es cuánto cambia la serie de un día al siguiente, y ese cambio es pequeño comparado con el nivel, entonces "igual que ayer" ya está muy cerca de la respuesta.
El problema del pronóstico ingenuo simple es que no sabe nada de estacionalidad. Si predices el domingo con el valor del sábado, y los sábados la web se dispara y los domingos se hunde, vas a fallar de forma sistemática todos los fines de semana. Para eso existe la segunda línea base, que es la que de verdad hay que batir en cualquier serie con calendario: el pronóstico ingenuo estacional. Su regla: la mejor predicción de un día es el valor del mismo día del periodo anterior. El domingo que viene se predice con el domingo pasado; el próximo diciembre, con el diciembre anterior. En vez de mirar un paso atrás, mira un periodo estacional completo atrás, y de un plumazo captura toda la estacionalidad sin aprender nada.
Hay una tercera línea base que vale la pena tener en la caja: la media móvil como pronóstico. En vez de copiar un único día del pasado, se predice el próximo valor con el promedio de los últimos cuantos. Es útil cuando la serie no tiene tendencia ni estacionalidad marcadas y solo oscila alrededor de un nivel con ruido: promediar los últimos días cancela parte de ese ruido y da una predicción más estable que copiar el último dato suelto, que podría haber sido un día raro. La elección entre las tres líneas base no es dogmática: depende de qué tiene la serie. Si tiene estacionalidad fuerte, la de batir es la ingenua estacional. Si es casi plana y ruidosa, la media móvil. Si tiene una tendencia clara y poco más, la ingenua simple ya es dura de superar.
Consejo de senior: cuando alguien te presente un modelo de pronóstico y te enseñe su error, tu primera pregunta no es "¿qué modelo has usado?" sino "¿contra qué línea base lo has comparado?". Si no hay línea base, el número de error no significa nada: un error de 300 unidades puede ser excelente o ridículo según lo que haga el pronóstico ingenuo. He visto proyectos de meses defender con orgullo un modelo que perdía contra "igual que la semana pasada", simplemente porque nadie se molestó en calcular esa comparación. El baseline no es un trámite: es la vara de medir sin la cual el error es un número suelto.
## Medir el error: hace falta una vara, y hay varias
Para decir que un pronóstico es mejor que otro hace falta ponerle número al error, y el error de un pronóstico es, sin más, la diferencia entre lo que predijiste y lo que de verdad pasó. Si predije 4.200 visitas y hubo 4.500, me equivoqué en 300. Hasta ahí es sencillo. Lo que no es sencillo es cómo resumir en un solo número los errores de todos los días del periodo de prueba, porque hay varias formas de hacerlo y cada una pondera los fallos de manera distinta. Las tres que vas a usar y a ver en cualquier informe son el MAE, el RMSE y el MAPE, y conocer qué mide cada una te salva de elegir la equivocada o, peor, de que alguien la elija por ti para que su modelo parezca mejor.
El MAE —error absoluto medio, por mean absolute error— es el más intuitivo: para cada día tomas el error en valor absoluto (sin signo, da igual si te pasaste o te quedaste corto) y promedias todos esos errores. Un MAE de 300 significa, literalmente, que tus predicciones se equivocan en 300 unidades de media. Está en las mismas unidades que la serie —visitas, euros, grados—, así que se explica sin traducción a cualquiera: "nos equivocamos unas 300 visitas por día". Su característica clave es que trata todos los errores proporcionalmente a su tamaño: un error de 600 cuenta exactamente el doble que uno de 300.
El RMSE —raíz del error cuadrático medio, por root mean squared error— hace algo parecido pero con un giro: antes de promediar, eleva cada error al cuadrado, y al final toma la raíz para volver a las unidades originales. Elevar al cuadrado tiene una consecuencia enorme: los errores grandes pesan muchísimo más que los pequeños. Un error de 600 al cuadrado son 360.000; dos errores de 300 al cuadrado suman 180.000. Así que para el RMSE un fallo gordo aislado duele más que varios fallos medianos repartidos, aunque la suma total sea la misma. Esto hace al RMSE la métrica adecuada cuando un error grande es desproporcionadamente malo —si quedarte sin stock un día cuesta más que ir un poco corto muchos días— y la inadecuada cuando todos los errores cuestan en proporción a su tamaño.
MAE y RMSE comparten un inconveniente: están en las unidades de la serie, así que no se pueden comparar entre series distintas. Un MAE de 300 visitas y un MAE de 300 euros no se pueden poner uno al lado del otro, y ni siquiera un MAE de 300 en una web que recibe un millón de visitas significa lo mismo que en una que recibe mil. Para eso existe el MAPE —error porcentual absoluto medio, por mean absolute percentage error—, que convierte cada error en un porcentaje del valor real antes de promediar. Un MAPE del 8% dice "nos equivocamos un 8% de media", y eso sí se entiende sin contexto y se compara entre series de cualquier escala. Es la métrica favorita de las presentaciones de negocio precisamente por eso: un porcentaje lo entiende cualquiera.
## La trampa del MAPE: cuando el porcentaje miente
Y aquí llega la dosis de honestidad que esta métrica necesita, porque el MAPE es cómodo y por eso se usa mal constantemente. El MAPE divide el error entre el valor real. ¿Qué pasa cuando el valor real es cero? Que divides entre cero, y el MAPE explota: se vuelve infinito o indefinido. ¿Y cuando el valor real es muy pequeño, aunque no sea cero? Que un error minúsculo en términos absolutos se convierte en un porcentaje gigantesco. Si un día real valía 2 y predijiste 4, te equivocaste en 2 unidades —una miseria— pero el MAPE de ese día es del 100%, y arrastra la media hacia arriba de forma desproporcionada. En series con valores pequeños, ceros o huecos —ventas de un producto que no se vende algunos días, visitas de madrugada, demanda de un artículo de nicho— el MAPE es directamente engañoso.
Hay una segunda trampa del MAPE, más sutil, que conviene conocer porque tiene consecuencias de negocio reales: es asimétrico. Penaliza más quedarte corto que pasarte. Si el valor real es 100 y predices 150, el MAPE es del 50%; pero si predices 50, el MAPE también es del 50%, y sin embargo si predices 0 el error es solo del 100% por mucho que el fallo absoluto sea mayor en otros casos. El efecto neto es que optimizar un modelo para minimizar el MAPE tiende a empujar las predicciones hacia abajo, porque pasarse penaliza menos en porcentaje. Un modelo entrenado a ciegas contra el MAPE puede acabar prediciendo sistemáticamente por debajo de la realidad, lo que en un problema de stock significa quedarse corto una y otra vez. La métrica, elegida sin pensar, le mete un sesgo al modelo.
No uses MAPE en series que tengan ceros, valores muy pequeños o huecos: la división entre valores cercanos a cero lo dispara y el número resultante no mide nada útil. Para esos casos quédate con el MAE, que no divide entre nada, o con una de sus variantes robustas. Y desconfía siempre de un MAPE sospechosamente alto en una serie con días flojos: casi nunca significa que el modelo sea malo, casi siempre significa que hay días de valor pequeño inflando el porcentaje. La métrica equivocada hace que un buen modelo parezca malo y un mal modelo parezca bueno, según le convenga a quien la eligió.
La regla práctica para elegir entre las tres es más sencilla de lo que parece. Si quieres un número que se explique a negocio y la serie no tiene valores pequeños ni ceros, el MAPE es cómodo. Si los errores grandes son especialmente costosos, el RMSE los pone en primer plano. Y para casi todo lo demás, el MAE es la opción honesta por defecto: está en unidades reales, no explota con los ceros, trata los errores en proporción a su tamaño y es difícil de manipular. Cuando dudes, empieza por el MAE y añade las otras solo si tienes una razón concreta. Lo importante no es cuál eliges, sino que sepas qué está midiendo y que la misma métrica se use para el modelo y para la línea base, porque comparar el MAE de uno con el RMSE del otro no compara nada.
1import numpy as np2import pandas as pd34# Ventas diarias de dos semanas con un patron semanal claro (pico el sabado)5np.random.seed(42)6patron = np.array([100, 90, 95, 110, 120, 200, 160])7serie = pd.Series(np.tile(patron, 2) + np.random.normal(0, 5, 14))89# Reservamos la segunda semana como prueba (particion por tiempo, nunca al azar)10train, test = serie[:7], serie[7:]1112# Linea base ingenua ESTACIONAL: predecir cada dia con el mismo dia de la semana pasada13pred_estacional = serie[:7].values # la semana anterior, tal cual14# Linea base ingenua SIMPLE: predecir toda la semana con el ultimo valor conocido15pred_simple = np.repeat(serie.iloc[6], 7)1617def mae(real, pred):18 return float(np.mean(np.abs(real.values - pred)))1920mae_estacional = round(mae(test, pred_estacional), 1)21mae_simple = round(mae(test, pred_simple), 1)2223print(f"MAE ingenuo estacional: {mae_estacional}")24print(f"MAE ingenuo simple: {mae_simple}")25print(f"El estacional bate al simple: {mae_estacional < mae_simple}")
Dos líneas base sobre una serie estacional: el ingenuo estacional debería ganar porque captura el pico semanal
## Por qué esto es la conciencia del módulo
Todo lo que viene a partir de aquí son modelos: formas cada vez más elaboradas de usar el pasado para predecir el futuro. Suavizado exponencial, ARIMA, los métodos que se usan en producción de verdad. Y la tentación con cada uno de ellos será la misma: ajustarlo, ver que da un error que parece pequeño, y declararlo bueno. La línea base es la vacuna contra esa tentación. Un error "pequeño" no existe en abstracto: existe solo en comparación con lo que conseguiría el adversario tonto. Un RMSE de 50 es magnífico si el pronóstico ingenuo da 200 y es un fracaso si el ingenuo da 45. El número solo no dice nada; la comparación lo dice todo.
Esta es exactamente la misma conducta que ya aplicas con cualquier otro modelo, trasladada al tiempo. Pides la línea base primero. Mides sobre datos que el modelo no ha visto, partidos por el calendario para no mirar el futuro. Eliges la métrica entendiendo qué premia y qué castiga, en vez de coger la que mejor hace quedar al modelo. Y no te crees un resultado hasta que ha batido al adversario trivial de forma clara y reproducible. Con las líneas base construidas y la vara de medir elegida, ya tienes contra qué comparar. Lo siguiente es el primer modelo de verdad: la familia que, cuando bate a estas líneas base, lo hace de forma consistente y es la que mueve el forecasting de medio mundo.
## comentarios
Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.
Inicia sesión para comentar y responder.
cargando comentarios...
Regístrate para guardar tu progreso.