Deep learning · Series temporales
Predicción de demanda con redes recurrentes
Cinco años de ventas diarias, cuatro arquitecturas recurrentes y una media móvil de siete días haciendo de línea de base. La pregunta no era cuál gana, sino si alguna gana lo suficiente como para que compense su complejidad.
El problema
Predecir mañana sin mirar mañana.
Una serie temporal impone dos reglas que no existen en un problema tabular corriente. La partición no puede ser aleatoria, porque mezclar días mete el futuro dentro del entrenamiento. Y el conjunto de test se toca una sola vez, al final.
La serie se convierte en un problema supervisado por ventanas deslizantes: las ventas de los últimos w días predicen las del siguiente. Se probaron ventanas de 7, 30 y 90 días.
El escalado se ajusta solo con el tramo de entrenamiento. Ajustarlo sobre la serie completa filtraría el rango futuro hacia el pasado, que es una fuga silenciosa y muy fácil de cometer.
Diagrama: la serie diaria se corta en ventanas deslizantes, entran en una red recurrente y sale la predicción del día siguiente.
La partición
El test se toca una sola vez.
70 % de los días para entrenar, 15 % para validar y 15 % —274 días— para test. En orden cronológico, sin barajar. Todos los modelos y la línea de base se miden sobre exactamente los mismos 274 días, que es lo que hace comparable la tabla final.
La elección de arquitectura e hiperparámetros se hace mirando validación, nunca test. Si el test participa en la decisión deja de ser una estimación honesta y se convierte en otro conjunto de entrenamiento con más pasos.
Todos los modelos usan EarlyStopping sobre la pérdida de validación, así que el número de épocas lo decide la propia validación en lugar de fijarse a ojo.
Una serie temporal dividida en tres tramos consecutivos: entrenamiento con el 70% de los días, validación con el 15% y test con el 15%, que son 274 días. Encima, una ventana deslizante recorre la serie de izquierda a derecha. La onda dibujada ilustra la forma de una serie con estacionalidad; no son las ventas reales.
Las arquitecturas
Cuatro redes y una media móvil.
SimpleRNN, LSTM, GRU y Bidirectional LSTM, contra una media móvil de siete días. La media móvil no es un adorno: si una red recurrente no la supera, no está aportando nada.
La búsqueda de hiperparámetros fue en dos fases y siempre midiendo sobre validación. Primero una rejilla de arquitectura —tres ventanas por tres activaciones, nueve combinaciones por modelo, 36 entrenamientos—. Después el tamaño de lote, cuatro valores sobre la mejor configuración de cada uno, 16 entrenamientos más.
Con los cuatro finales son 56 entrenamientos en total. Los tres modelos con puerta eligieron ventana de 7 días; solo SimpleRNN se quedó con 90.
Escalones: 36 entrenamientos de rejilla, 16 de tamaño de lote y 4 finales.
Los resultados
Las puertas sirven. La recurrencia simple no.
LSTM, GRU y Bi-LSTM baten a la media móvil. SimpleRNN no: con un MAE de 5,125 queda por debajo de los 4,867 de la línea de base. Es el resultado más limpio del trabajo, porque es exactamente lo que se espera de estas arquitecturas.
El mejor es el LSTM, con un MAE de 4,550 sobre los 274 días de test. La mejora sobre la línea de base son 0,32 unidades, sobre una venta media de 23,9: algo más del uno por ciento.
Su ventaja sobre el Bi-LSTM es de 0,037 unidades, un 0,15 % de la venta media. Con una sola semilla por configuración, una diferencia así no basta para declarar un ganador: haría falta repetir cada entrenamiento varias veces y comparar distribuciones. El trabajo lo dice en vez de proclamar un vencedor.
Conviene además leer las dos métricas por separado. El MAPE divide por el valor real, así que baja cuando la serie tiene más volumen aunque el modelo no haya mejorado; por eso el MAPE de test sale mejor que el de validación en los cuatro. El MAE está en unidades vendidas y no depende del nivel de la serie: es la métrica sobre la que se sostienen las conclusiones.
Barras del error absoluto medio en test: LSTM 4,550; Bi-LSTM 4,587; GRU 4,622; media móvil 4,867; SimpleRNN 5,125. La media móvil es la línea de base.
Los límites
Una semilla no decide un ganador.
La limitación principal es de método: cada configuración se entrenó una sola vez. Eso basta para separar a SimpleRNN del resto, pero no para distinguir al LSTM del Bi-LSTM.
El trabajo modela una única serie tienda-producto. Los resultados valen para ella; no se han validado sobre las 500 series del dataset.
El horizonte es de un día. Una planificación de inventario real necesita predecir semanas, y eso es un problema distinto y más duro.
Y no hay variables externas: ni festivos, ni promociones, ni precio. En demanda minorista suelen explicar buena parte de la variación.
Veredictos: la partición es cronológica, sí; el modelo se elige con validación, sí; la diferencia entre LSTM y Bi-LSTM es sólida, no; los resultados valen para las 500 series, no.
El trabajo
Fue un trabajo de tres.
Proyecto conjunto de Marcos Fernández, Pedro Pérez y Alfredo Martín para la asignatura de Deep Learning del máster. Los archivos del proyecto no documentan un reparto de tareas, así que no se atribuye ninguna parte concreta a un autor.
La conclusión que más me interesa del trabajo no es cuál gana, sino que se puede decir «esta diferencia es demasiado pequeña para afirmar nada» y que eso también es un resultado.
