1 · Qué hace especiales a las series temporales
Un eje temporal rompe la única suposición en la que descansan todos los demás tracks de ML — que las filas son independientes y barajables. El orden es información, y nunca debes barajar.
Una serie temporal es data indexada por tiempo, donde cada punto está correlacionado con su pasado reciente (autocorrelación). Eso rompe la suposición i.i.d.: no puedes barajar filas y debes dividir train/test por tiempo — el futuro nunca debe filtrarse al pasado.
Sin esto:
Trata una serie temporal como data tabular ordinaria y barajarás la señal, filtrarás el futuro al entrenamiento y reportarás una precisión de fantasía que colapsa en producción.
Todos los tracks de ML que has hecho asumieron que tus filas son i.i.d. — independientes e idénticamente distribuidas. Esa suposición justifica barajar, divisiones train/test aleatorias y validación cruzada k-fold. Las series temporales la rompen.
Una serie temporal es una secuencia de observaciones indexadas por tiempo: ventas diarias, temperatura por hora, el precio de una acción por minuto. Dos cosas la hacen especial:
-
El orden es información. El valor de hoy está correlacionado con el de ayer (y el de la semana pasada, y el del año pasado). Esa dependencia del pasado se llama autocorrelación, y es toda la señal que explotamos para pronosticar. Baraja las filas y la destruyes.
-
El futuro nunca debe filtrarse al pasado. Solo puedes entrenar con data que vino antes de lo que predices. Eso mata las divisiones aleatorias y el k-fold estándar — debes dividir por tiempo (entrenar en el pasado, probar en el futuro) y validar con esquemas walk-forward (Capítulo 5).
La meta es el pronóstico (forecasting): dada la historia hasta el tiempo t, predecir t+1, t+2, …. Abajo construimos una serie sintética con los tres ingredientes que tiene toda serie real — tendencia, estacionalidad y ruido — y luego mostramos concretamente por qué barajar es catastrófico: deja intactas la media y la varianza pero aniquila la autocorrelación que hace posible el pronóstico.
Python (in browser)
Una serie temporal es una Series de pandas sobre un DatetimeIndex. Barajar conserva media/std pero aniquila la autocorrelación — prueba de que el orden es la señal.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
¿Por qué no puedes usar una división train/test aleatoria normal (o k-fold CV) en una serie temporal?
- Una serie temporal es data indexada por tiempo; los puntos consecutivos están autocorrelacionados, rompiendo la suposición i.i.d.
- Nunca barajes: el orden es la señal. Barajar conserva media/std pero destruye la autocorrelación desde la que pronosticas.
- Divide train/test por tiempo (pasado → futuro) y valida walk-forward; el futuro nunca debe filtrarse al pasado.
Pronóstico de demanda, detección de anomalías en métricas, finanzas, clima y planificación de capacidad — donde sea que la data tenga un reloj.
Si lo quitas: Sin respetar el orden temporal filtras el futuro al entrenamiento y despliegas modelos que lucen geniales offline y fallan en vivo.