Python · Series temporales · Ensembles
Series temporales y ensembles de clasificadores con Python
Este post resume el notebook original en dos bloques conectados: predicción de series temporales mediante descomposición y modelos estacionales, y combinación de clasificadores mediante bagging, boosting, stacking y cascading.
Idea principal
La práctica no compara modelos de forma aislada. Enseña a construir soluciones por composición: en series temporales se separan tendencia, estacionalidad y transformación; en clasificación se combinan varios modelos para mejorar estabilidad o capacidad predictiva.
Descomposición
Separar heterocedasticidad, tendencia y estacionalidad permite interpretar qué parte explica cada patrón.
SARIMA
Modela dependencia temporal y componente estacional cuando la serie tiene un periodo claro.
Bagging y boosting
Combinan clasificadores en paralelo o secuencia para reducir varianza, sesgo o errores repetidos.
Stacking y cascading
Usan salidas de modelos base como entrada o apoyo para modelos de nivel superior.
Validación temporal sin mezclar futuro y pasado
Para forecasting no debe utilizarse una partición aleatoria convencional. Reserva los últimos meses como test final y ajusta hiperparámetros mediante ventanas expansivas o validación rolling-origin. En cada partición, las fechas de entrenamiento deben ser anteriores a las de validación.
Compara SARIMA con baselines sencillos: repetir el último valor observado y reutilizar el valor del mismo mes del año anterior. Publica MAE o RMSE, una métrica relativa a la escala y los intervalos de predicción. El modelo complejo solo aporta valor si supera de manera consistente a esas referencias.
from sklearn.metrics import mean_absolute_error
from statsmodels.tsa.statespace.sarimax import SARIMAX
train, test = series.iloc[:-24], series.iloc[-24:]
model = SARIMAX(
train,
order=(1, 1, 1),
seasonal_order=(1, 1, 1, 12),
enforce_stationarity=False,
enforce_invertibility=False,
).fit(disp=False)
forecast = model.get_forecast(steps=len(test))
mae = mean_absolute_error(test, forecast.predicted_mean)
intervals = forecast.conf_int()Diagnóstico de residuos
Antes de confiar en la predicción, representa los residuos en el tiempo y revisa su autocorrelación. Si queda un patrón estacional, el modelo todavía no ha capturado toda la información predecible. También conviene comprobar cambios de varianza, outliers y qué proporción de valores reales queda dentro de los intervalos previstos.
Toda transformación debe formar parte del flujo reproducible. Si se aplica logaritmo, Box-Cox o diferenciación, las predicciones y sus intervalos deben volver cuidadosamente a la escala original para evitar conclusiones engañosas.
Comparación justa de ensembles de clasificación
Cada candidato debe incluir su preprocesamiento en un pipeline para que el escalado, encoding o selección de variables se aprendan solo dentro de cada fold. Compara ensembles y modelos base usando las mismas particiones estratificadas y la misma semilla. Además de accuracy, mide precision, recall, F1 macro, matriz de confusión y, cuando importen las probabilidades, calibración o ROC-AUC.
En stacking, el meta-modelo debe entrenarse con predicciones out-of-fold. Si recibe predicciones de modelos que ya han visto esas mismas filas aparece fuga de información. La complejidad solo se justifica cuando la mejora se mantiene en validación cruzada y en el test final intacto.
Checklist de reproducibilidad
- Guardar versión de los datos, rango temporal, definición del objetivo y exclusiones.
- Fijar semillas y registrar versiones de Python, pandas, scikit-learn y statsmodels.
- Mantener el preprocesamiento dentro de pipelines y no tocar el test hasta el final.
- Conservar métricas por fold, residuos y parámetros, no solo el mejor resultado.
- Reentrenar y monitorizar cuando cambien la distribución temporal o el balance de clases.
Referencias: modelos de espacio de estados de statsmodels y métodos ensemble de scikit-learn.
Conclusión práctica
La mejora no viene solo de usar un algoritmo más potente, sino de estructurar bien el problema: transformar, validar, comparar y combinar modelos de forma controlada. El notebook completo queda debajo.