Pronóstico de demanda de productos para miles de productos en múltiples tiendas

9

Actualmente estoy trabajando en una tarea de pronóstico de demanda, con datos sobre decenas de miles de productos en un par de miles de tiendas. Más específicamente, tengo unos pocos años de datos de ventas diarias por producto en cada tienda, y mi objetivo es pronosticar las ventas futuras de cada artículo en cada tienda, un día antes; luego dos días por delante, etc.

Hasta ahora he considerado dividir cada par de productos y tiendas en una sola serie de tiempo, y hacer un pronóstico para cada serie de tiempo como se hizo en el documento de Neal Wagner, Técnicas inteligentes para pronosticar múltiples series de tiempo en sistemas del mundo real . En otras palabras, usaré solo la información histórica de las ventas del producto en una tienda en particular para pronosticar las ventas futuras de ese producto en esa tienda.

Sin embargo, he estado navegando en Kaggle y competiciones como Corporación Favorita Grocery Sales Forecasting sugieren un enfoque diferente, que consiste en utilizar la información de todas las tiendas y todos los productos para predecir las ventas futuras. Según tengo entendido, la información histórica de ventas de todos los productos en todas las tiendas se vierte en el conjunto de capacitación, desde el cual el modelo aprenderá a pronosticar las ventas futuras. Es muy diferente de los métodos tradicionales de series de tiempo, pero aparentemente, según los resultados de la competencia, funciona.

El último método parece prometedor y más robusto. Sin embargo, existe el problema de tener que procesar cientos de millones de puntos de datos.

¿Qué método es más apropiado para mi tarea? Para aquellos que han trabajado en problemas similares, ¿qué metodología recomendarían?

meraxes
fuente
1
Cuando trabajé en esto, utilicé el enfoque de series de tiempo único, PERO con la estacionalidad extraída de productos similares (por ejemplo, una categoría) en tiendas similares (por ejemplo, un segmento geográfico donde el clima sería similar). Pero esto se debe, en parte, a las limitaciones de tiempo: no todos los datos llegaron al mismo tiempo, y el tiempo entre la última llegada de datos y el momento en que se necesitó el pronóstico fue leve (¡a veces negativo!). Estas fueron consideraciones operativas, no estadísticas.
zbicyclist
@zbicyclist ¡Gracias por compartir esto! ¿Puedo saber cómo pudo incorporar la estacionalidad de productos similares en el pronóstico? por ejemplo, ¿tomó la estacionalidad media y la agregó como otra característica en el modelo?
Meraxes
Deseasonalizar, modelar, pronosticar y luego volver a desestacionalizar.
zbicyclist

Respuestas:

9

No recomendaría el enfoque utilizado por Neal et al. . Sus datos son únicos por dos razones:

  • Están trabajando con datos de alimentos, que generalmente son más densos y más estables que otros datos de productos minoristas. Un lugar determinado estará vendiendo docenas de cartones de leche o paquetes de huevos por semana y habrá estado vendiendo esos mismos productos durante décadas, en comparación con la moda o las piezas de automóviles, donde no es raro tener ventas de un solo artículo cada 3 o 4 semanas, y datos disponibles por solo un año o dos.

  • Están pronosticando almacenes, no tiendas. Un único almacén cubre varias tiendas, por lo que sus datos son aún más densos que el promedio. De hecho, un almacén se usa típicamente como un nivel de agregación / agrupación natural para las tiendas, por lo que ya están esencialmente realizando una agrupación de datos de la tienda.

Debido a la naturaleza de sus datos, pueden salirse con la suya modelando series de tiempo individuales directamente. Pero la información de la mayoría de los minoristas sería demasiado escasa a nivel de sku / tienda individual para que puedan lograrlo.

Como dijo zbicyclist, este problema generalmente se aborda mediante pronósticos jerárquicos o de niveles múltiples . Todos los paquetes de pronóstico de demanda comercial utilizan alguna forma de pronóstico jerárquico

La idea es agrupar productos y tiendas en productos y regiones similares, para los cuales se generan pronósticos agregados y se utilizan para determinar la estacionalidad y tendencia general, que luego se distribuyen conciliados utilizando un enfoque de arriba hacia abajo con los pronósticos de línea de base generados para cada sku individual / tienda de combinación.

Además del desafío mencionado por zbicyclist, un problema mayor es que encontrar las agrupaciones óptimas de productos y tiendas no es una tarea trivial, que requiere una combinación de experiencia en el dominio y análisis empírico. Los productos y las tiendas generalmente se agrupan en jerarquías elaboradas (por departamento, proveedor, marca, etc. para productos, por región, clima, almacén, etc. para ubicación) que luego se envían al algoritmo de pronóstico junto con las ventas históricas. datos en sí.


Abordar comentarios de meraxes

¿Qué hay de los métodos utilizados en la Competencia Kaggle de Previsión de Ventas de Comestibles de Corporación Favorita, donde permiten que los modelos aprendan de los historiales de ventas de varios productos (posiblemente no relacionados), sin hacer ningún agrupamiento explícito? ¿Sigue siendo un enfoque válido?

Están haciendo la agrupación implícitamente usando store, item, famlily, class, cluster como características categóricas.

Acabo de leer un poco de la sección de Rob Hyndman sobre pronósticos jerárquicos. Me parece que hacer un enfoque de arriba hacia abajo proporciona pronósticos confiables para los niveles agregados; sin embargo, tiene la gran desventaja de perder información debido a la agregación que puede afectar los pronósticos para los nodos de nivel inferior. También puede ser "incapaz de capturar y aprovechar las características de series individuales como la dinámica del tiempo, eventos especiales".

Tres puntos con respecto a esto:

  • La desventaja a la que apunta depende de la agrupación de los datos. Si agrega todos los productos y tiendas, entonces sí, esto sería un problema. Por ejemplo, agregar todas las tiendas de todas las regiones enturbiaría cualquier estacionalidad específica de la región. Pero debe agregarse solo a la agrupación relevante, y como señalé, esto requerirá un poco de análisis y experimentación para encontrarlo.
  • En el caso específico de la demanda minorista, no nos preocupa "perder información debido a la agregación" porque con frecuencia las series de tiempo en los nodos inferiores (es decir, SKU / Tienda) contienen muy poca información, por lo que las agregamos a las más altas. niveles en primer lugar.
  • Para los eventos específicos de SKU / tienda, la forma en que lo abordamos en mi equipo es eliminar los efectos específicos del evento antes de generar un pronóstico y luego agregarlos nuevamente más tarde, después de que se genere el pronóstico. Ver aquí para más detalles.
Skander H.
fuente
Gracias por esta idea! ¿Qué hay de los métodos utilizados en la Competencia Kaggle de Previsión de Ventas de Comestibles Corporación Favorita, donde permiten que los modelos aprendan de los historiales de ventas de varios productos (posiblemente no relacionados), sin hacer ningún agrupamiento explícito? ¿Sigue siendo un enfoque válido?
Meraxes
Acabo de leer un poco de la sección de Rob Hyndman sobre pronósticos jerárquicos. Me parece que hacer un enfoque de arriba hacia abajo proporciona pronósticos confiables para los niveles agregados; sin embargo, tiene la gran desventaja de perder información debido a la agregación que puede afectar los pronósticos para los nodos de nivel inferior. También puede ser "incapaz de capturar y aprovechar las características de series individuales como la dinámica del tiempo, eventos especiales".
Meraxes
@meraxes ver mi edición.
Skander H.
Gracias por la explicación elaborada, @Alex! Con respecto a su último punto, y esto puede ser un poco fuera de tema, pero ¿trata las vacaciones de la misma manera? es decir, ¿eliminar sus efectos antes de generar pronósticos y luego volver a agregarlos?
Meraxes
^ Pregunto porque noto que mis pronósticos parecen ser muy sensibles a los valores atípicos en los datos. Mi enfoque actual es ganar la clasificación de los datos, luego usar el analizador de picos en serie como se describe en el documento de Neal Wagner et al. para identificar los picos explicables por vacaciones para agregarlos nuevamente. Entiendo que otra forma sería usar variables ficticias para eliminar el efecto de las vacaciones. ¿Qué enfoque recomendarías?
Meraxes