Saltar al contenido
Todos los trabajos

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.

PapelEquipo de tres · trabajo conjunto
AutoresMarcos Fernández · Pedro Pérez · Alfredo Martín
Año2026 · MUBA, ICADE
HerramientasPython · TensorFlow · Keras · pandas
56entrenamientos
20,95%de MAPE del mejor modelo
274días de test

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.

Datos913.000 filas, 2013 – 2017
Serie modeladaUna combinación tienda-producto
Ventanas probadas7, 30 y 90 días
HorizonteUn día
De la serie a la predicción del día siguiente.

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.

EntrenamientoPrimer 70 % de los días
ValidaciónSiguiente 15 %
TestÚltimo 15 % · 274 días
Criterio de paradaEarlyStopping en validación
La ventana recorre la serie: el modelo nunca ve el total, ve un tramo que avanza. Y avanza siempre hacia el futuro.

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.

SimpleRNNVentana 90 · LeakyReLU · lote 128
LSTMVentana 7 · relu · lote 16
GRUVentana 7 · relu · lote 32
Bi-LSTMVentana 7 · relu · lote 128
Línea de baseMedia móvil de 7 días
56 entrenamientos, todos decididos con validación.

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.

LSTMMAPE 20,95 % · MAE 4,550
GRUMAPE 21,42 % · MAE 4,622
Bi-LSTMMAPE 21,70 % · MAE 4,587
SimpleRNNMAPE 23,13 % · MAE 5,125
Media móvil (7 días)MAPE 23,30 % · MAE 4,867
MAE en test, sobre los mismos 274 días. Más bajo es mejor. El GRU queda entre el Bi-LSTM y la línea de base.

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.

Repeticiones por configuraciónUna
Series modeladasUna de 500
HorizonteUn día
Variables externasNinguna
Lo que el trabajo sostiene y lo que no.

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.

Predicción de demanda · Presentación PDF · 16 páginas · 1,2 MB
Ponte en contacto Escríbeme cuando quieras