Sales Forecasting

Predicción de ventas usando Machine Learning

Una de las facilidades que nos ofrece el aprendizaje automático (Machine Learning – ML) es la posibilidad de realizar predicciones de series temporales. Por citar algunas aplicaciones, predicciones de tipo económico, el tiempo o el clima, la salud, o indicadores de negocio.

En el entorno de la inteligencia de negocio (Business Intelligence – BI) un tipo de predicción que sería de gran valor podría ser la predicción de las ventas. Esta predicción, por ejemplo, nos permitiría entre otras cosas gestionar eficientemente el aprovisionamiento, el stock, la logística o replantear las acciones de marketing.

Algoritmos de predicción

Como citamos en el artículo Inteligencia Artificial aplicada al BI, actualmente se disponen de múltiples herramientas para desarrollar algoritmos de Machine Learning, accesibles muchas de estas herramientas para las pequeñas y medianas empresas.

Para la predicción de series temporales podemos contar actualmente con algoritmos basados en estadística “clásica”, entre ellos, ARIMA, Suavizado exponencial (Exponential Smoothing), Modelo de regresión lineal o Bosques Aleatorios (Random Forest)  y algoritmos basados en redes neuronales como Redes recurrentes clásicas, LSTM,  N-Beats, o modelos de tipo Transformer, por ejemplo.

Muchos de los avances a pasos agigantados que están teniendo algunas aplicaciones de IA como el procesamiento del lenguaje natural (NLP) están siendo posibles gracias a la aparición de los Transformers. A grandes rasgos, este modelo  incluye mecanismos atencionales para determinar qué información o elementos son relevantes y cuáles no. Los Transformers están evidenciando éxito en cada vez más aplicaciones como podría ser la visión artificial. Esta técnica supone una competencia con las hasta ahora más utilizadas redes convolucionales o incluso para el caso que nos ocupa en la predicción de series temporales.

Temporal Fusion Transformer

Yendo más allá en nuestro objetivo de predecir las ventas de nuestra organización, ha aparecido un nuevo modelo de red neuronal, el Temporal Fusion Transformer (TFT), que combina precisamente mecanismos de varios modelos anteriores, entre ellos, capas de tipo LSTM y los componentes atencionales de los Transformers (Attention Heads). 

Una de las ventajas que ofrecen por otro lado los modelos neuronales como TFT respecto de los no neuronales, es la posibilidad de ser entrenados en más de una serie temporal. Incluso ofrecen la posibilidad de realizar predicciones sobre series con las que la red no ha sido entrenada.

Predicción de ventas

En nuestro ejemplo para la predicción de ventas, podríamos entrenar nuestra red con el histórico de ventas individual por producto, o incluso utilizando series dadas por múltiples dimensiones como podrían ser la categoría del producto, el canal de ventas, la región o el país en el que se efectúa, por ejemplo. Dependiendo del número de dimensiones utilizadas en el entrenamiento y de los valores que pueden tomar cada una de ellas podríamos tener como entrada un número muy significativo de series temporales, que utilizadas en el entrenamiento de un modelo como TFT nos permitiría realizar la predicción sobre una dimensión concreta o sobre varias.

En el aprendizaje profundo (Deep Learning) varios modelos han evidenciado una mejora en la efectividad en la predicción después de haber sido entrenados con decenas de miles de series temporales.

Otro aspecto que nos permiten muchos modelos de Machine Learning y en concreto TFT, es apoyar el entrenamiento no sólo basado en el histórico de las series temporales objetivo, sino también sobre otras series, que si bien no son objetivo de predicción podrían mejorar aún más la efectividad de nuestro modelo. Estas series denominadas  “covariables” (covariates) pueden ser conocidas a priori (past covariates), como podría ser el caso de las ventas del sector, a nivel nacional o internacional, o la evolución de la economía en general. Un ejemplo más concreto si nuestro producto fueran bebidas refrescantes o cervezas, podría ser interesante usar como “covariables” la evolución de las temperaturas, o la planificación de eventos como conciertos, días señalados, etc. 

Muchos modelos también admiten covariables conocidas a futuro (future covariates) como podrían ser las predicciones meteorológicas de los próximos 7 días, por citar un ejemplo.

Predicción probabilística

Algunos modelos de Machine Learning disponibles para la predicción de series temporales permiten hacerlo en términos probabilísticos, frente a la predicción clásica o determinista. Mientras que el resultado de la predicción en éstos últimos es un valor concreto para un instante determinado, en la predicción probabilística se da un rango de valores posibles para dicho instante, con un determinado grado de confianza, que será más o menos amplio dependiendo de la incertidumbre que pueda haber en la predicción.

Probabilistic Forecasting
Ejemplo de predicción probabilística

Esto permite detectar, por ejemplo, periodos en los que la estacionalidad es grande y la tendencia muy clara, dando rangos más estrechos, o por el contrario periodos donde la variabilidad de la venta es mayor a lo largo del histórico y que sugeriría hacer una análisis más profundo para detectar, por ejemplo, si existen covariables que podrían ser interesantes en esos periodos.

Conclusión

Concretando para un caso hipotético, podríamos plantear pues el entrenamiento de una red neuronal basada en el modelo TFT con múltiples series temporales, cuyo entrenamiento apoyaremos con series de tipo covariables tanto pasadas como futuras.

Esto requiere analizar y determinar qué serie o series objetivo aportarían valor para nuestra organización si tuviésemos la capacidad de predecirlas y qué otras series podrían apoyar la predicción de éstas. Consiguiendo en definitiva una herramienta útil que podría utilizarse para la toma de decisiones.

Algunas de las herramientas que nos facilitan enormemente el entrenamiento y la predicción de series temporales y que están disponibles de forma gratuita son Darts y Pytorch-forecasting. Ambas están basadas en la librería Pytorch y usan el lenguaje de programación Python. Pythorch junto con Tensorflow son dos de los frameworks más utilizados actualmente en ML.

En un próximo artículo describiremos un caso concreto de predicción de ventas utilizando una de estas herramientas.

Más información

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada.