Python Data Science Program
📓 Abrir notebook en GitHub

Clase 136 — Forecasting de series con RNN

Parte: 2 — Deep Learning · Fuente: Géron, cap. 15 § Forecasting a Time Series. ⏱️ Duración estimada: 80 min.

🎯 Objetivo

Aplicar RNN/LSTM/GRU a un problema real de forecasting de series temporales. Hacer split temporal (NO aleatorio), preparar windows, comparar contra baselines (naive, MA, ARIMA), y reportar métricas estándar (MAE, MAPE, RMSE).

📚 Resultados de aprendizaje

Al finalizar, el estudiante podrá:

🗺️ Temas

📖 Definiciones y características

📂 Dataset / recursos

🧪 Ejercicios

  1. Split temporal: separar primer 70 % train, 15 % val, último 15 % test. No mezclar.
  2. Baseline naïve: y_pred = y_test.shift(1). Reportar MAE.
  3. LSTM forecasting: Sequential([LSTM(32), Dense(1)]). Comparar contra naïve.
  4. GRU: igual con GRU. Comparar performance y velocidad.
  5. Multi-step: predecir 7 pasos directamente (Dense(7) al final). Comparar contra predicción recursiva.

📝 Homework verificable

Forecasting de consumo eléctrico:

  1. Dataset diario, 5 años; split 70/15/15 temporal.
  2. Baselines: naïve y MA(7).
  3. LSTM [64], lookback=30 días, horizon=7 días.
  4. Reportar MAE en test para los 3.

Criterio de aceptación: LSTM debe superar a naive en MAE; comparable o mejor que MA(7). Documentar dónde gana y dónde pierde.

⚠️ Errores comunes

Síntoma / mensaje Causa y cómo arreglar
train_test_split con shuffle por costumbre Filtración de futuro al pasado. Fix: split temporal manual o TimeSeriesSplit.
LSTM mejor que naïve por 0.001 → declarar victoria Sin significancia clara. Fix: usar pingouin para test pareado sobre los errores.
Normalizar usando stats de todo el dataset (incluyendo test) Leakage. Fix: fitear solo en train.
Predicción multi-step recursiva diverge Error acumulado. Fix: entrenar con teacher forcing + predicción directa.
Reportar MAPE cuando hay valores cerca de 0 MAPE explota. Fix: usar SMAPE o reportar MAE.

❓ Preguntas frecuentes

❓ ¿DL siempre supera a ARIMA?

No. Para series cortas, regulares, sin features exógenas: ARIMA / ETS suelen igualar o ganar. DL gana con series largas + features adicionales + complejidad no lineal.

❓ ¿Lookback óptimo?

Empezar con 1-2 ciclos (e.g., 14 días si hay estacionalidad semanal). Tunear con val.

❓ ¿RNN o Transformer para series?

Transformers de series temporales (TFT, Informer, PatchTST 2023) son state-of-the-art para series largas con muchas features. Para series chicas, LSTM/GRU + features manuales gana.

❓ ¿Multi-step directo o recursivo?

Directo: 1 modelo predice todos los horizontes. Recursivo: feedback de cada paso. Directo más simple y a veces mejor en horizonte largo.

❓ ¿Cómo manejo estacionalidad?

Features explícitas (mes, día de semana, hora) ayudan mucho. Diferenciar la serie también.

🔗 Referencias

📥 Material descargable

➡️ Siguiente clase

Clase 137 — LSTM, GRU