No hay ninguna duda de que a priori conocer el futuro puede ser una gran ventaja. La persona que sea capaz de anticiparse a lo que la vida le tiene preparado será capaz acercarse más a cumplir todo aquello que se proponga. Aunque sabemos que conocer completamente el futuro es imposible, podemos intentar predecir lo que está por venir. Somos capaces de anticiparnos a la temperatura que hará durante el día viendo cómo está el cielo cuando nos despertamos y en función de ello decidimos qué ropa nos vamos a poner y si necesitaremos o no utilizar un paraguas. Es cierto que no siempre acertamos y en muchas ocasiones el día no termina siendo como esperamos, pero por lo general nuestro instinto suele estar en lo cierto y los días de sufrimiento por una mala elección son los menos frecuentes.
En el día a día de muchos negocios también se dan estas situaciones en las que deben anticiparse a futuros eventos y tomar decisiones buscando obtener el mayor beneficio posible. Por ejemplo, el encargado de una tienda de ropa puede anticiparse a las ventas que va a tener utilizando datos de ventas de años anteriores, con el fin de asegurar el stock. También puede añadir información adicional como la temperatura, o las tendencias de ventas en otras tiendas, realizando una aproximación mucho más precisa. Este encargado está sirviéndose de series temporales sin ser consciente de ello, ya que está ubicando la información de la que dispone de forma ordenada en el tiempo y extrayendo patrones del resultado de esta ordenación. Podría ser, por ejemplo, la ordenación en el tiempo de las ventas agrupadas por día.
Este ejemplo de las ventas diarias representa una pequeña parte de todo lo que a este encargado le podría interesar predecir del futuro. Podría apoyarse en los datos de los que dispone y las series temporales para obtener el mayor beneficio para su negocio.
Introducción a la predicción de series temporales
Continuando con el mismo ejemplo, nuestro objetivo es ser capaces de utilizar toda la información contenida en estos datos (histórico de ventas de los productos, histórico de la temperatura, calendario de festivos y ventas de la competencia o tiendas del mismo sector) para predecir las ventas futuras de los diferentes productos a nivel diario. Como comentábamos antes, si consideramos cada una de las fuentes de datos disponibles agrupadas a nivel diario y ordenadas cronológicamente, podremos decir que estamos trabajando con series temporales.
Las series temporales son una sucesión de observaciones de una variable realizadas a intervalos regulares de tiempo y ordenadas cronológicamente.
En este caso, la serie temporal asociada a las ventas de los productos consistiría en la medición de las ventas de los diferentes artículos de día en día (a nivel diario) y ordenadas desde el primer día del que se dispone de histórico hasta el día actual. De igual forma podemos definir la serie temporal para el histórico de la temperatura, considerando la temperatura media de cada día, una serie que refleje día a día si se trata de un festivo o no y una serie diaria de ventas para el histórico de la competencia o tiendas similares.
Una vez que se tiene claro cómo considerar nuestro histórico de datos en forma de serie temporal, debemos fijar el horizonte de predicción. Este horizonte se define como el número de términos a futuro de la serie temporal objetivo que quieren ser estimados. En el caso de la tienda de ropa que estamos planteando, el encargado debería preguntarse si le es suficiente conocer las ventas que va a tener en la tienda al día siguiente o necesita estimar más de un día. En el primer caso tiene como horizonte de predicción un día, pero en caso de querer estimar más allá, hablaremos de un problema multi-horizonte de ‘n’ días.
Esta diferencia entre plantear un problema con un horizonte de predicción de más o menos términos de la serie es muy relevante a la hora de plantear el método de estimación. Si bien encontrar una solución para la predicción a un día vista puede estar cubierta por gran cantidad de algoritmos o modelos, cuando hablamos de problemas multi-horizonte, encontrar una solución puede resultar bastante complejo. Esto es debido a la cercanía de los términos estimados con el momento de la estimación. Si pensamos en una serie que contenga la temperatura de una ciudad, encontraremos más relación entre la temperatura de dos días consecutivos, a la temperatura en días de semanas diferentes. Es decir, será más fácil que acertemos la temperatura que hará mañana si decimos que hará la misma temperatura que hoy, a si utilizamos ese mismo valor para estimar la temperatura que hará dentro de una semana, a pesar de tratarse del mismo día de la semana. Es por ello fundamental considerar si es necesario plantear el problema a resolver como un problema de predicción multi-horizonte y, en caso de ser así, conocer qué técnicas o modelos funcionan mejor para resolverlo.
Para seguir más adelante con este ejemplo, primero debemos entrar en el fascinante mundo de las redes neuronales.
Redes neuronales orientadas a problemas de predicción
Las redes neuronales son una aproximación matemática al funcionamiento de las neuronas del cerebro humano. Las neuronas del cerebro humano transmiten la información entre ellas a través de impulsos eléctricos. Una neurona en particular recibirá el impulso que han generado sus neuronas vecinas y en función de la cantidad de impulso recibido se activará y emitirá una respuesta o por el contrario permanecerá inactiva. La señal procedente de las neuronas más cercanas será de mayor intensidad que la procedente de las más lejanas.
Este comportamiento fue trasladado a un modelo matemático mediante el perceptrón. El perceptrón consiste en una unidad de cálculo que recibe diferentes señales de entrada (impulso de las neuronas vecinas), realiza una suma ponderada de las mismas (intensidad de la señal) y al resultado de esta suma se le aplica una función antes de emitir su respuesta (activación o inactivación de la neurona). Podemos considerar el perceptrón como el primer modelo de neurona artificial planteado. Se conoce como ‘pesos del perceptrón’ a los coeficientes de la suma ponderada y ‘función de activación’ a la función que procesa el resultado de dicha suma. Existen diferentes tipos de funciones de activación y una de las ventajas que presenta este modelo es el empleo de funciones no lineales que permiten resolver problemas cuya naturaleza no es lineal.
Con el paso del tiempo nuevos tipos de neuronas y arquitecturas neuronales han sido definidos con el fin de resolver diferentes tipos de problemas. Podemos encontrarnos el perceptrón multicapa, agrupación de neuronas artificiales de tipo perceptrón en diferentes capas conectadas de manera secuencial que transmiten la información desde una capa de entrada hasta una capa de salida.
Con el fin de trabajar con problemas como el que nos encontramos en las series temporales, se diseñaron las neuronas recurrentes. Este tipo de neuronas, además de devolver el resultado de su activación como salida de la red, la considera como parte de la entrada para realizar la siguiente predicción. Es decir, para realizar la predicción en un momento de tiempo ‘t’, considera la salida que ella misma ha generado en el tiempo ‘t-1’ y además le sirve esta información para estimar la salida futura del tiempo ‘t+1’. La potencia de este tipo de neuronas es la resolución de problemas de tipo secuencial como el caso de las series temporales o la traducción, donde se debe tener en consideración tanto el término o elemento de la serie o secuencia que se está tratando, como los términos anteriores de la misma.
Redes neuronales recurrentes para la predicción multi-horizonte
Un tipo concreto de neurona recurrente es la LSTM (long short-term memory). Este tipo de red recurrente además de considerar como entrada la salida de la neurona en el instante anterior, considera también un estado adicional que le permite tener memoria de lo que ha procesado hasta el momento. Este estado adicional es modificado en función de la entrada que recibe la neurona y permite que los cambios que ha generado dicha entrada en el instante actual no sean únicamente empleados en el instante siguiente, sino que pueda ser aprovechada en el futuro. Por este motivo se dice que este tipo de neuronas poseen una memoria capaz de olvidar aquella información que no les es interesante y almacenar la que sí lo es para ayudar en futuras predicciones.
Para el tratamiento de series temporales en un problema multi-horizonte, una buena solución pasa por emplear neuronas de tipo LSTM junto a una técnica de codificado y decodificado (encoder/decoder). La idea que hay detrás de esta técnica consiste en, emplear una primera red de tipo LSTM para codificar la información recibida en los últimos ‘n’términos conocidos de la serie, que alimente a una segunda red LSTM que utilice esta información codificada para predecir los siguientes términos de la serie. Como se puede observar, en este tipo de arquitectura se combinan dos modelos basados en neuronas artificiales que se combinan para realizar la predicción final.
Otro avance significativo de las redes neuronales que es aplicado en la resolución de problemas de series temporales son las capas de atención. Estas capas permiten considerar qué partes de la información de entrada son más importantes. Este tipo de capas son muy útiles en problemas de traducción, ya que permiten que la red se fije en aquellas palabras que dan contexto a la frase, y permiten encontrar la mejor traducción para la palabra que se está procesando.
Un ejemplo de arquitectura neuronal que combina diferentes tipos de neuronas artificiales para la resolución de problemas de series temporales multi-horizonte es Temporal Fusion Transformer (TFT) de Google. Veamos cómo funciona.
Hablamos de la red neuronal TFT de Google
Como introducía en el bloque anterior, vamos a ver la arquitectura neuronal Temporal Fusion Transformer (TFT) de Google. Esta arquitectura neuronal combina el empleo de neuronas de tipo LSTM con un planteamiento de codificación y decodificación junto a diferentes capas de atención.
Entrada de la red y bloque de codificación/decodificación
Para explicar el funcionamiento de esta arquitectura partimos de la entrada que recibe. Una de las principales fortalezas o ventajas que presenta esta arquitectura es la combinación de información temporal conocida a pasado, información temporal conocida tanto a pasado como a futuro, e información estática. En el ejemplo de la tienda de ropa que planteábamos en un inicio cuando hablábamos de que el encargado es capaz de anticiparse a las ventas en base a su experiencia, seguramente también emplee esta distinción de los tipos de información sin ser consciente de ello. Empleará las características de las diferentes prendas (talla, color, tipo de prenda) como ‘información estática’, las ventas de cada producto de las últimas semanas como ‘información temporal conocida a pasado’, y las ventas de los mismos productos en el mismo mes pero en años anteriores como ‘información temporal conocida tanto a pasado como a futuro’. Cada uno de estos tipos de información juega un papel importante en el funcionamiento de la arquitectura, al igual que lo hará en la mente del encargado.
El encargado, para hacerse una idea de cómo se está comportando el mercado y en concreto lo bien o mal que se están vendiendo las diferentes prendas, utiliza la ‘información temporal conocida a pasado’. Este razonamiento traducido al funcionamiento de la arquitectura neuronal equivaldría al paso de codificación de la información proveniente de la serie temporal en los términos anteriores al momento de la predicción.
Esta primera intuición de cómo se está comportando el mercado seguramente sea combinada con la información que el encargado dispone de ventas de años anteriores, junto a información futura de la que sí puede disponer, como la presencia o no de festivos, o las previsiones meteorológicas. En la arquitectura neuronal nos estaríamos encontrando en la parte del decodificador, que recibe la información codificada por el codificador, junto a la información de los términos futuros de las series para las que se conoce tanto el pasado como el futuro.
Por último, podemos pensar en cómo el encargado es capaz de diferenciar entre los diferentes tipos de prendas para las cuales está estimando las ventas, y saber para cada una de ellas en qué aspectos debe fijarse de la información temporal de la que dispone. No será igual de importante un pico de ventas en la serie temporal que refleja las ventas de unos guantes de invierno en pleno mes de agosto, que un pico de ventas del mismo producto al inicio del invierno. Por eso la información estática juega un papel muy importante a la hora de abordar este tipo de problemas, ya que puede aportar más información de la que inicialmente se podría pensar. Para la arquitectura neuronal este proceso de emplear la información estática para acomodar la predicción a cada tipo de producto se lleva a cabo a través de un codificador. Su salida es considerada tanto por el codificador como por el decodificador a la hora de asignar importancia a las variables que reciben y como punto de partida en el codificador.
Bloque de atención
El siguiente bloque por el que se pasa en la arquitectura neuronal combina diferentes técnicas de atención capaces de detectar diferentes patrones en la serie temporal que hagan que su funcionamiento varíe en función de la entrada recibida. En el caso de la tienda de ropa, este bloque simularía el comportamiento del encargado al fijarse en diferentes aspectos de la información disponible en función de: el producto para el cual está intentando predecir las ventas, el momento del año en el que se encuentra o del momento futuro para el que está intentando anticiparse. Este bloque de atención utiliza tanto la información proveniente de la parte de neuronas LSTM del bloque anterior, como de la codificación que ha surgido al tratar la información estática. De esta forma, el comportamiento de la arquitectura depende tanto de la información estática que está procesando, como de las diferentes series temporales que en ese momento está utilizando.
Como resultado de este bloque de atención, la arquitectura devuelve para cada instante futuro que desea ser estimado, una información codificada que será empleada en el último bloque de salida.
Bloque de generación de la salida
Otra gran fortaleza o ventaja que encontramos en esta arquitectura es el poder emplear una predicción cuantílica como método de salida. Este tipo de predicción se diferencia por intentar estimar el valor de la mediana o ciertos cuantiles de la variable a predecir. Visto desde el punto de vista del encargado de la tienda, este tipo de predicciones no siempre intentan predecir la venta exacta que va a tener o el valor de venta futura más esperado, sino que permite predecir tanto ese valor medio en la venta futura como una estimación pesimista y una optimista. En el caso de la estimación pesimista estaríamos hablando del caso en el que el tendero se pusiera en el peor de los escenarios posibles y pensara que sus ventas van a ser las menores posibles. Traducido a un contexto matemático estaríamos diciendo que el encargado está estimando un percentil bajo de la distribución de la variable a predecir (las ventas). Por el contrario, si el encargado realiza una estimación muy optimista y piensa que va a vender más de lo esperado, estaríamos ante un escenario en el que la estimación buscaría estimar un percentil alto. Una estimación del percentil medio (50) reflejaría un comportamiento ni optimista ni pesimista por parte del encargado y le permitiría encontrarse siempre en un punto intermedio.
La arquitectura que estamos mencionando permite definir como salida varios de estos percentiles, de forma que, con un mismo modelo entrenado, podemos obtener una estimación futura para diferentes niveles de “optimismo”. Con este modelo el encargado no obtendría una única estimación de ventas futuras, sino que para cada prenda e instante del futuro obtendría una horquilla de ventas posibles que le permitirían tomar una decisión más completa.
Conclusión
Los modelos predictivos pueden resultar realmente beneficiosos para adelantarse a los acontecimientos y tomar mejores decisiones de negocio. Algunos ejemplos de ello son la predicción de la demanda, la predicción de los precios de la electricidad en el mercado energético, o la predicción del precio del mercado de la vivienda. En todos estos casos hablamos de predicción de series temporales, ya que la información que se utilizará para realizar la predicción tiene una ordenación temporal.
Aunque se pueden utilizar diferentes técnicas estadísticas o algoritmos de machine learning, en este tipo de problemas se suelen utilizar redes neuronales recurrentes. Una de las arquitecturas neuronales más completas hasta la fecha para resolver este tipo de problemas es Temporal Fusion Transformer (TFT) de Google.
Las ventajas de esta red son:
- La combinación de variables estáticas, series temporales a pasado y series temporales a pasado y futuro.
- El uso de capas de atención que permiten utilizar un mismo modelo para la predicción de diferentes series temporales.
- El empleo de la regresión cuantílica como salida del modelo, permitiendo tener diferentes niveles de optimismo en las predicciones.
Si quieres saber más sobre modelos predictivos, redes neuronales o sobre decide4AI, contáctanos o síguenos en las redes sociales (Linkedin, Twitter, Youtube).