Las series temporales siguen siendo uno de los casos de uso más comunes que encontramos hoy en día en el mundo de los datos. Analizar el impacto de una campaña publicitaria, predecir la demanda de un producto en el mercado o detectar posibles anomalías en un sensor son algunos de los problemas más frecuentes que requieren de un histórico generado con mediciones periódicas. Uno de los recursos que nos permiten las series temporales es el forecasting, que consiste en predecir que va a ocurrir en momentos futuros utilizando la información de los instantes de tiempo pasados.

Figura 1: Definición de Forecast. Elaboración propia.

Primeros análisis y modelos de forecasting

Aunque las series temporales han sido objeto de estudio durante varios siglos atrás y en diversos ámbitos como en medicina, economía o el clásico problema de predecir qué tiempo hará mañana, no es hasta la década de 1920-1930 (este artículo, por ejemplo) donde se empiezan a realizar los primeros análisis de series temporales en el sentido más estadístico, como lo entendemos hoy en día al trabajar con datos. 

En estos años aparece la primera técnica de modelado para hacer forecasting, los modelos autorregresivos, que se basan en aprender de los instantes inmediatamente anteriores para construir el instante siguiente. Paralelamente, también se desarrollaron modelos de media móvil, que se construyen aprendiendo de los errores anteriores (ruido blanco) para construir la predicción. Ambas formulaciones tienen mucha similitud a los modelos de regresión lineales clásicos.

Limitaciones para simular el comportamiento de la serie

Debido a la falta de recursos en cuanto a computación se refiere, estos modelos no podían implementarse en un tiempo aceptable si la serie era lo suficientemente complicada. En consecuencia, se adoptó un enfoque más simple que, en lugar de buscar predecir la serie completa, se trató de predecir partes de la misma para posteriormente unificarlas. 

Las series temporales se pueden clasificar de dos formas distintas, aditivas o multiplicativas, y se descomponen en cuatro partes:

Serie temporal = Tendencia + Ciclos + Estacionalidad + Residuos (versión aditiva)

Serie temporal = Tendencia * Ciclos * Estacionalidad * Residuos (versión multiplicativa)

De manera intuitiva, una serie es multiplicativa si se pueden observar diferencias en la amplitud de los picos y los valles de la serie. En cualquier otro caso, la serie será aditiva, ya que consideramos que existe independencia entre los términos de su descomposición, como si fuera un modelo de regresión simple. Podemos ver un ejemplo de cada tipo de serie en la figura 2:

Figura 2: Clasificación de series temporales. Elaboración propia.

 

Estas cuatro partes mencionadas anteriormente se definen brevemente de la siguiente manera:

  • Tendencia: es la evolución de la serie a lo largo del tiempo.
  • Ciclos: describe los cambios que pueden repetirse en el tiempo sin ningún factor estacional por detrás. Tiene más relación con variaciones periódicas de la tendencia.
  • Estacionalidad: representa los cambios periódicos en el tiempo.
  • Residuos: todo aquello que no puede ser explicado por las partes anteriores, es lo que conocemos como el ruido o el error de la descomposición que se genera por aspectos aleatorios. 

La fórmula de descomposición anterior ha ido evolucionando hasta tal punto que hoy en día, las descomposiciones solo tienen tres términos ya que la tendencia y los ciclos se consideran como una única componente, y por abuso de lenguaje, se sigue denotando como tendencia. Un ejemplo de ello se puede ver en la figura 3. 

Serie temporal = Tendencia + Estacionalidad + Residuos (aditiva)

Serie temporal = Tendencia * Estacionalidad * Residuos (multiplicativa)

Figura 3: Descomposición de una serie temporal aditiva. Elaboración propia.

Cómo hacer forecasting “sin ordenadores”

La entrada de las técnicas de suavizado exponencial, propuestas desde finales de los años 50, conforman una de las bases más importantes en forecasting, consiguiendo unos resultados que actualmente podrían ser aceptables. Estos modelos funcionan como un autorregresivo (es decir, uso los momentos previos para predecir el siguiente) pero el peso de los instantes anteriores va cayendo exponencialmente a medida que nos alejamos del momento a predecir en base a un parámetro de suavizado.  

La primera formulación, el modelo exponencial simple (modelo de primer orden), es capaz de detectar ciertos patrones siempre que la tendencia de la serie sea constante y no haya estacionalidad. Al ver que muchas series no cumplían con estas premisas, esta técnica fue mejorada añadiendo un parámetro que ayuda a ajustar la tendencia, es lo que conocemos como modelo exponencial doble (modelo de segundo orden). Con esta actualización, ahora la tendencia deja de ser un problema para hacer forecasting, sin embargo, este modelo sigue sin predecir las series con estacionalidad.

El modelo exponencial triple o modelo de Holt-Winters reajusta este problema siendo una de las técnicas de forecasting que a día de hoy se sigue utilizando. Curiosamente, servicios como AWS Forecast, que contiene algunas de las técnicas más novedosas en forecasting, también incorpora esta técnica de los años 60. Aunque ya existen técnicas mucho más elaboradas, un modelo con un nivel de complejidad tan bajo como este puede usarse para generar un error base sobre el que empezar a mejorar con otros modelos más actuales.

¿Y qué pasó con aquello que publicaron en los años 30?

Como ha ocurrido en todos los ámbitos de Machine Learning, la irrupción de los ordenadores impactó directamente sobre los modelos que antes no podían ser calculados en un tiempo asumible por falta de medios. En el año 1970 (en el libro “Time Series Analysis”) se rescató la idea inicial de los modelos autorregresivos dejada de lado por tantos años y además se unificó con el concepto ya existente de media móvil.  De esta forma surgió el modelo autorregresivo integrado de media móvil ARIMA (AutoRegressive Integrated Moving Average), posiblemente la técnica clásica más conocida de forecasting que consigue unos resultados suficientemente buenos como para seguir utilizándose todavía en diversos sectores. Por ejemplo, en este artículo sobre la COVID-19 se compara un modelo ARIMA con técnicas actuales obteniendo resultados similares.  

El modelo ARIMA abandona parcialmente la idea que usaban los métodos de suavizado exponencial de predecir a través de la tendencia y la estacionalidad y se centra en la autocorrelación de la serie, es decir, la relación que tiene un instante de tiempo con los posteriores. Uno de los saltos de valor más importantes que se han conseguido con este modelo a lo largo de los años es la posibilidad de agregar información sobre vacaciones, eventos o en general, información relevante dentro del caso de uso como variables explicativas dentro del modelo (variables exógenas). Esto facilita muchísimo predecir situaciones como el pico que se genera por el Black Friday en predicción de demanda o el efecto generado por días de vacaciones en la previsión de ocupación de un hotel.

Existe una variante del modelo ARIMA denominada SARIMA (Seasonal AutoRegressive Integrated Moving Average) que incorpora mejoras para captar factores estacionales claros dentro del modelo. Básicamente añade información autorregresiva y de media móvil procedente tanto de los instantes anteriores como de los ciclos estacionales observados.

Pero ahora los mejores modelos se consiguen con redes neuronales, ¿verdad?

Como en cualquier ámbito de investigación, esto no terminó aquí, afortunadamente para los que nos dedicamos a esto, las técnicas de forecasting han seguido evolucionando sobre todo con la entrada de las redes neuronales recursivas en los años 80 que supusieron un cambio muy significativo a la hora de hacer forecasting continuando con el enfoque de autocorrelaciones aunque en un sentido algo diferente (todo esto está más desarrollado en esta entrada de nuestro blog).

Sin embargo, en el año 2017, con las redes neuronales gobernando casi por completo las mejores técnicas de forecasting conocidas, la empresa Facebook publica un artículo titulado Forecasting at Scale”, donde define un modelo denominado Prophet. Este modelo aporta un punto de vista completamente nuevo a la descomposición clásica de series temporales, agregando un componente necesario que denotan como “vacaciones” para predecir aquellas situaciones que podrían explicarse a partir de información sobre el día en cuestión. Por tanto, en el modelo Prophet, la gente de Facebook propone la siguiente descomposición:

Serie temporal = Tendencia + Estacionalidad + Vacaciones + Residuos

Aunque la descomposición es muy similar a la clásica, la manera de calcular cada parte de ella es completamente nueva. Además es posible añadir un limitante tanto superior como inferiormente en el forecast, esto ayuda a casos como por ejemplo, si queremos predecir el número de contagios en una población sabemos que no puede ser superior al número total de habitantes en ella ni por supuesto menos que 0. Este limitante está basado en modelos clásicos de crecimiento poblacional como el modelo de crecimiento logístico

Para la tendencia se buscan puntos clave (changepoints) que permitan identificar en qué medida y en qué dirección la tendencia va a cambiar. Para la estacionalidad, se utiliza un enfoque muy simple (o muy complejo dependiendo del lector) basado en series de Fourier. Con respecto a los eventos y vacaciones se permite abrir una ventana de tiempo para analizar el efecto antes o después de los días señalados (todo esto como variables regresoras), por ejemplo, analizar los días en previos y posteriores a los que Apple saca un nuevo producto al mercado, puede ser condicionante para el precio de sus acciones. Tanto la estacionalidad como las vacaciones incorporan un componente aleatorio para realizar la predicción.

Prophet es una de las técnicas más elegidas y más utilizadas para realizar forecasting en la actualidad y una gran alternativa a las redes neuronales debido a su facilidad en implementación y a los resultados obtenidos (sobre todo en series con alto factor estacional).

¿Dónde estamos entonces?

Las series temporales llevan ya un siglo entero dando idas y vueltas con nuevos y diferentes enfoques o renovando y mejorando los ya existentes. Últimamente parece que se está trabajando más en el ámbito de redes neuronales ya sea en el uso de redes convolucionales o nuevas arquitecturas de redes recursivas como por ejemplo el modelo DeepAR de AWS ya que las redes tienen más facilidad para detectar patrones muy complejos. Aunque si en 2017 nos sorprendieron con la vuelta a este enfoque “clásico” fuera de las redes con unos resultados sorprendentes, ¿quién sabe cuál será el siguiente modelo? 

En la figura 4 se puede apreciar la diferencia en el forecasting empleando las tres técnicas mencionadas en este post: Holt-Winters, ARIMA y Prophet.

 

Figura 4: Diferencias entre modelos de forecasting. Elaboración propia.

Aunque existen diferencias en cuanto a amplitudes, aquí se puede apreciar como las técnicas de 1960 ya eran suficientemente buenas como para detectar patrones de estacionalidad sencillos y generar predicciones simulando escenarios completamente realistas sin mucha diferencia con respecto a las otras técnicas más modernas.

Ahora que sabemos que los modelos actuales pueden encontrar patrones complejos, lo más importante va a ser siempre escoger la técnica que proporcione los mejores resultados elevando al mínimo posible la complejidad del caso de uso.

Una vez repasada la historia de la evolución del forecasting desde las primeras técnicas estadísticas hasta las más novedosas, os dejamos a continuación un conjunto de infografías elaboradas por Diego Duque (Data Analyst en Keepler), y que permiten entender de una forma visual algunas técnicas comentadas a lo largo de este post. 

 

Imagen cabecera: Unplash | @drew_beamer