D12 · L3 · 04 — L2 · ML & Predictive Analytics in Supply ChainL2 · ML y Analítica Predictiva en la Cadena

Demand forecasting with ML: external signals, NLP & ensemble methodsPronóstico de demanda con ML: señales externas, NLP y métodos ensemble

An ensemble of models beats the best single model — the right combination always wins.

El ensemble de modelos supera al mejor modelo individual — la combinación correcta siempre gana.

01What it isQué es

ML demand forecasting uses models such as gradient-boosted trees or neural networks to learn how promotions, prices, weather, search trends and sell-out data move demand, usually combined with classical statistical models in an ensemble.

El pronóstico de demanda con ML usa modelos como árboles con gradient boosting o redes neuronales para aprender cómo las promociones, los precios, el clima, las tendencias de búsqueda y los datos de sell-out mueven la demanda, generalmente combinados con modelos estadísticos clásicos en un ensemble.

02Why it mattersPor qué importa

Forecast error drives safety stock, stockouts and excess inventory, and statistical models alone miss the promotion and weather effects that cause the biggest misses. In the M5 competition on Walmart unit sales, gradient-boosted tree models and combinations of methods outperformed simple statistical benchmarks (Makridakis, Spiliotis and Assimakopoulos, 2022 — International Journal of Forecasting). The gains concentrate in volatile, promotion-driven SKUs; for stable SKUs the statistical model is often enough.

El error del pronóstico determina el inventario de seguridad, los quiebres de inventario y el exceso de inventario, y los modelos estadísticos por sí solos no capturan los efectos de promociones y clima que causan los errores más grandes. En la competencia M5 sobre ventas unitarias de Walmart, los modelos de árboles con gradient boosting y las combinaciones de métodos superaron a los benchmarks estadísticos simples (Makridakis, Spiliotis and Assimakopoulos, 2022 — International Journal of Forecasting). Las ganancias se concentran en SKU volátiles e impulsados por promociones; para los SKU estables, el modelo estadístico suele bastar.

03How it is doneCómo se hace

1
Benchmark the statistical baseline. Measure MAPE or WAPE of the best statistical model per SKU segment before adding any ML.
2
Add signals where they matter. Bring in promotions, weather, search or POS data only for categories where back-tests show lift.
3
Ensemble, explain and monitor. Blend models with back-tested weights, show planners SHAP drivers and retrain when lift fades.
1
Mide la línea base estadística. Calcula el MAPE o WAPE del mejor modelo estadístico por segmento de SKU antes de agregar ML.
2
Agrega señales donde importan. Incorpora datos de promociones, clima, búsquedas o POS solo en las categorías donde el back-testing muestre lift.
3
Combina, explica y monitorea. Mezcla los modelos con pesos validados por back-testing, muestra a los planeadores los factores SHAP y reentrena cuando el lift se desvanezca.

04The concept in depthEl concepto a fondo

📈ML in demand forecasting: capturing what statistical models cannot›
ML models (XGBoost, LightGBM, neural networks) add to demand forecasting the ability to capture complex nonlinear relationships between variables — the combined effect of a promotion + a heat wave + a viral TikTok post on a product's sales. Classical statistical models (ETS, ARIMA) cannot model these interactions flexibly.
📊External signal sources for ML forecasting›
(1) Weather data (temperature, precipitation): relevant for beverages, air conditioning, clothing, food — often the strongest external driver in highly weather-sensitive categories. (2) Google Trends and search data: can act as a leading indicator of demand, days to weeks ahead. (3) NLP on news and social media: sentiment analysis of product mentions can flag viral demand spikes early. (4) Retailer POS data: real-time sell-out is the most valuable demand sensing signal for FMCG. (5) Macroeconomic data: exchange rate, inflation, consumer confidence index — relevant for products with high price and income elasticity.
🔢The statistical + ML ensemble: the best practice›
Combining a statistical model (ETS/ARIMA — which captures trend and seasonality well) with an ML model (XGBoost — which captures external variable effects well) in a weighted ensemble has better accuracy than either model alone for most supply chain categories. Weights should be set by back-testing on hold-out periods; a simple equal-weight average is a robust starting point.
🏆Intermediate vs. Advanced›
Intermediate: uses ML forecasting system model outputs; interprets demand sensing alerts.

Advanced: designs and trains ML forecasting models; manages the model lifecycle (training, validation, production, recalibration); implements interpretability tools (SHAP values).
📈ML en el pronóstico de demanda: capturar lo que los modelos estadísticos no pueden›
Los modelos de ML (XGBoost, LightGBM, redes neuronales) aportan al pronóstico de demanda la capacidad de capturar relaciones no lineales complejas entre variables: el efecto combinado de una promoción + una ola de calor + una publicación viral en TikTok sobre las ventas de un producto. Los modelos estadísticos clásicos (ETS, ARIMA) no pueden modelar estas interacciones con flexibilidad.
📊Fuentes de señales externas para el pronóstico con ML›
(1) Datos de clima (temperatura, precipitación): relevantes para bebidas, aire acondicionado, ropa y alimentos; suelen ser el motor externo más fuerte en categorías muy sensibles al clima. (2) Google Trends y datos de búsqueda: pueden funcionar como indicador adelantado de la demanda, con días o semanas de anticipación. (3) NLP sobre noticias y redes sociales: el análisis de sentimiento de las menciones del producto puede señalar con anticipación picos virales de demanda. (4) Datos POS de retailers: el sell-out en tiempo real es la señal de demand sensing (detección de demanda) más valiosa para consumo masivo. (5) Datos macroeconómicos: tipo de cambio, inflación, índice de confianza del consumidor; relevantes para productos con alta elasticidad precio e ingreso.
🔢El ensemble estadístico + ML: la mejor práctica›
Combinar un modelo estadístico (ETS/ARIMA, que captura bien la tendencia y la estacionalidad) con un modelo de ML (XGBoost, que captura bien el efecto de variables externas) en un ensemble ponderado logra mejor precisión que cualquiera de los dos por separado en la mayoría de las categorías de supply chain. Los pesos deben fijarse con back-testing en periodos de validación; un promedio simple con pesos iguales es un punto de partida robusto.
🏆Intermedio vs. Avanzado›
Intermedio: usa los resultados de los modelos del sistema de pronóstico con ML; interpreta las alertas de demand sensing.

Avanzado: diseña y entrena modelos de pronóstico con ML; gestiona el ciclo de vida del modelo (entrenamiento, validación, producción, recalibración); implementa herramientas de interpretabilidad (valores SHAP).

05In practiceEn la práctica

📈The ensemble (statistical + ML) is the forecasting best practice — not pure ML›
Pure ML (without the statistical model as base) can overfit in periods with limited data. The ensemble uses the strengths of both models.
🔢Use SHAP values to explain model predictions to the demand planning team›
The demand planner who cannot explain why the model predicts what it predicts will not trust the model. SHAP values make the model interpretable.
🔗Quality of external signals is as important as model sophistication›
An excellent XGBoost model with low-quality external signals produces worse results than a simple model with high-quality external signals.
📊Measure ML lift monthly — if lift disappears, it may signal the model needs recalibration›
ML lift is the model health metric. If the ensemble starts having the same or worse MAPE than the statistical model, the ML model has become outdated and needs retraining.
📈El ensemble (estadístico + ML) es la mejor práctica de pronóstico, no el ML puro›
El ML puro (sin el modelo estadístico como base) puede sobreajustarse en periodos con pocos datos. El ensemble aprovecha las fortalezas de ambos modelos.
🔢Usa valores SHAP para explicar las predicciones del modelo al equipo de planeación de la demanda›
El planeador de demanda que no puede explicar por qué el modelo predice lo que predice no confiará en él. Los valores SHAP hacen interpretable el modelo.
🔗La calidad de las señales externas es tan importante como la sofisticación del modelo›
Un excelente modelo XGBoost con señales externas de baja calidad produce peores resultados que un modelo simple con señales externas de alta calidad.
📊Mide el lift del ML cada mes: si desaparece, puede indicar que el modelo necesita recalibrarse›
El lift del ML es la métrica de salud del modelo. Si el ensemble empieza a tener un MAPE igual o peor que el del modelo estadístico, el modelo de ML se volvió obsoleto y necesita reentrenarse.

06Illustrative caseCaso ilustrativo

Illustrative case built from typical industry values — not data from a specific company.Caso ilustrativo construido con valores típicos de la industria — no son datos de una empresa específica.
Illustrative case: ML ensemble forecasting implementation — FMCG company, 2,800 active SKUs
The company migrates from pure ETS to an ETS+XGBoost+external variables ensemble.
MAPE improvement by componentMAPE with pure ETSMAPE with ensemble
Carbonated beverages category (high temperature correlation)MAPE: 22% without temperature as variableMAPE: 13% with temperature + Google Trends integrated (−41% error reduction)
Premium snacks category (significant promotional effect)MAPE in promotion weeks: 38% — ETS doesn't capture promotional upliftMAPE in promotion weeks: 18% — XGBoost learns the uplift pattern (−53% error in promotional weeks)
Stable demand SKUs (low ML benefit)MAPE: 8% with ETSMAPE: 7.5% with ensemble — minimal benefit (ETS was already near-optimal)
Result: Global MAPE: 22% → 15% (−32% error reduction). Greatest impact was in promotion weeks and categories with high external signal correlation. For stable demand SKUs, pure ETS remained optimal — the ensemble only added complexity without significant improvement.
Illustrative case built from typical industry values — not data from a specific company.Caso ilustrativo construido con valores típicos de la industria — no son datos de una empresa específica.
Caso ilustrativo: implementación de pronóstico con ensemble de ML — empresa de consumo masivo, 2,800 SKU activos
La empresa migra de ETS puro a un ensemble de ETS + XGBoost + variables externas.
Mejora de MAPE por componenteMAPE con ETS puroMAPE con ensemble
Categoría de bebidas carbonatadas (alta correlación con la temperatura)MAPE: 22% sin la temperatura como variableMAPE: 13% con temperatura + Google Trends integrados (−41% de error)
Categoría de botanas premium (efecto promocional significativo)MAPE en semanas de promoción: 38%; el ETS no captura el uplift promocionalMAPE en semanas de promoción: 18%; XGBoost aprende el patrón del uplift (−53% de error en semanas promocionales)
SKU de demanda estable (bajo beneficio del ML)MAPE: 8% con ETSMAPE: 7.5% con ensemble; beneficio mínimo (el ETS ya era casi óptimo)
Resultado: MAPE global: 22% → 15% (−32% de error). El mayor impacto se dio en semanas de promoción y en categorías con alta correlación con señales externas. Para los SKU de demanda estable, el ETS puro siguió siendo óptimo: el ensemble solo agregó complejidad sin una mejora significativa.

07How it is measuredCómo se mide

📈ML Forecast Lift % (MAPE improvement of ensemble vs. best statistical model)›
ML Forecast Lift % (MAPE improvement of ensemble vs. best statistical model)
(MAPE of best statistical model − MAPE of ML ensemble) / MAPE of best statistical model × 100
Benchmark: 15–35% lift in categories with high variability, strong external signals, and sufficient data history
⚠️ ML lift <5% indicates the statistical model was already capturing most demand patterns, or the ML model doesn't have sufficient quality external variables to add value.
🔄Model Recalibration Cadence (ML model retraining frequency)›
Model Recalibration Cadence (ML model retraining frequency)
Number of times per year the model is retrained with the most recent data
Benchmark: Monthly for models with high demand variability · Quarterly for stable categories
🔑 An ML model that isn't retrained loses accuracy over time because demand patterns change. Monthly recalibration is a common practice for FMCG forecasting models.
📈Lift del pronóstico con ML % (mejora del MAPE del ensemble vs. el mejor modelo estadístico)›
Lift del pronóstico con ML % (mejora del MAPE del ensemble vs. el mejor modelo estadístico)
(MAPE del mejor modelo estadístico − MAPE del ensemble de ML) / MAPE del mejor modelo estadístico × 100
Benchmark: 15–35% de lift en categorías con alta variabilidad, señales externas fuertes e historial de datos suficiente
⚠️ Un lift del ML <5% indica que el modelo estadístico ya capturaba la mayoría de los patrones de demanda, o que el modelo de ML no tiene variables externas de suficiente calidad para agregar valor.
🔄Cadencia de recalibración del modelo (frecuencia de reentrenamiento del modelo de ML)›
Cadencia de recalibración del modelo (frecuencia de reentrenamiento del modelo de ML)
Número de veces al año que el modelo se reentrena con los datos más recientes
Benchmark: Mensual para modelos con alta variabilidad de demanda · Trimestral para categorías estables
🔑 Un modelo de ML que no se reentrena pierde precisión con el tiempo porque los patrones de demanda cambian. La recalibración mensual es una práctica común en los modelos de pronóstico de consumo masivo.

08What you would useQué se usa

📌 ML Forecasting
🟦Nixtla (statsforecast + neuralforecast)›
Module: Open-Source ML Forecasting + Neural Models

Nixtla's open-source libraries are widely used in ML forecasting: statsforecast (ultra-fast statistical models) and neuralforecast (N-BEATS, N-HiTS, TFT).
🟦DataRobot / H2O.ai›
Module: AutoML for Demand Forecasting

AutoML platforms that automate training and selection of the best ML model for demand forecasting.
📌 Pronóstico con ML
🟦Nixtla (statsforecast + neuralforecast)›
Módulo: Pronóstico con ML de código abierto + modelos neuronales

Las bibliotecas de código abierto de Nixtla son ampliamente usadas en pronóstico con ML: statsforecast (modelos estadísticos ultrarrápidos) y neuralforecast (N-BEATS, N-HiTS, TFT).
🟦DataRobot / H2O.ai›
Módulo: AutoML para pronóstico de demanda

Plataformas de AutoML que automatizan el entrenamiento y la selección del mejor modelo de ML para el pronóstico de demanda.
The bottom lineEn corto

Use ML where promotions and outside signals move demand, keep the simple model where they don't, and let the back-test decide.

Usa ML donde las promociones y las señales externas mueven la demanda, conserva el modelo simple donde no, y deja que el back-testing decida.

All D12 componentsTodos los componentes de D12D12 artifactsArtifacts de D12SCRA