Forecasting con Redes LSTM - Parte 1: tipos de predicción

En este artículo veremos los diferentes tipos de configuraciones de Redes LSTM que podemos usar para realizar pronósticos sobre series de tiempo.

¡Así que listo, comencemos!

Video

Como siempre, en el canal de YouTube se encuentra el video de este post:

Introducción

En artículos anteriores hemos hablado de las Redes LSTM, que son una de las arquitecturas de Machine Learning más usadas para el procesamiento de secuencias.

Pues estas Redes son una de las herramientas más útiles del Deep Learning para realizar predicciones sobre series de tiempo.

Así que este es el primero de una serie de artículos en donde veremos cómo usar diferentes configuraciones de Redes LSTM para resolver una gran variedad problemas de pronósticos sobre series de tiempo.

En particular, a continuación veremos un panorama general de los diferentes tipos de configuraciones de Redes LSTM que podemos usar para realizar este tipo de predicciones.

Conceptos esenciales

En primer lugar sugiero revisar el artículo sobre Redes LSTM en donde explico el funcionamiento detallado de esta arquitectura, así como la guía completa para el análisis de series de tiempo en donde se describen conceptos como los tipos de análisis y el procesamiento que usualmente debemos llevar a cabo para realizar pronósticos sobre estos tipos de datos.

Comencemos entonces aclarando qué es una serie de tiempo y a qué nos referimos cuando queremos realizar pronósticos sobre series de tiempo.

Podemos definir una serie de tiempo como un conjunto de observaciones tomadas de forma secuencial en el tiempo. Esto quiere decir que el tiempo será la variable independiente, mientras que la observación será la variable dependiente.

Por ejemplo, una serie de tiempo puede ser el registro histórico del comportamiento de la temperatura durante los últimos meses en un cierto lugar o el comportamiento de las ventas de un producto durante el último año.

Y cuando nos referimos a las predicciones o pronósticos sobre la serie de tiempo lo que buscamos es estimar los valores futuros que tendrá la serie de tiempo, a partir de su registro histórico. Es decir, intentamos determinar cuál será por ejemplo la temperatura en las próximas 5 horas o cuáles serán los niveles de ventas durante las próximas semanas.

Y las Redes LSTM son una de las herramientas de Machine Learning más usadas para realizar este tipo de predicciones pues son capaces de aprender a detectar patrones en la serie de tiempo para generar pronósticos sobre las variables de interés.

Las configuraciones que podremos usar dependerán de la cantidad de variables que tengamos a la entrada del modelo así como de la cantidad de variables y de instantes de tiempo que queramos predecir.

Así que veamos las diferentes alternativas que tenemos a la mano para realizar estos pronósticos usando Redes LSTM.

Modelos univariados-unistep

El modelo univariado-unistep es el tipo de predicción más simple que podemos realizar usando Redes LSTM.

En este tipo de configuración usamos una variable a la entrada del modelo y tendremos una variable de salida y la predicción se realiza tan sólo un instante de tiempo a futuro dentro de la serie. Además, generalmente la variable de entrada es la misma variable a predecir.

Por ejemplo, si volvemos al caso de la temperatura, podríamos desarrollar un modelo que acepte un registro histórico de 24 horas de la temperatura y que aprenda a predecir el comportamiento que tendrá esa misma variable temperatura en la siguiente hora.

Modelos multivariados-unistep

En los modelos multivariados-unistep ingresamos a la red múltiples variables y la predicción se hace sobre una sola variable y tan sólo para un instante de tiempo a futuro.

Por ejemplo, podemos intentar nuevamente predecir la temperatura 1 hora a futuro, pero ingresar al modelo no sólo el histórico de temperatura, sino por ejemplo la presión atmosférica, la humedad o el nivel de precipitación, o incluso la misma variable tiempo.

Modelos univariados-multistep

En los modelos univariados-multistep ingresamos una única variable al modelo (generalmente la misma variable a predecir) e intentamos predecir el comportamiento de una sola variable pero durante múltiples instantes de tiempo (de allí el término multi-step).

Volviendo al caso de la temperatura, en este caso podríamos tomar un registro de 24 horas de la temperatura e intentar predecir el comportamiento de la misma variable pero para las próximas 5 horas.

Modelos multivariados-multistep

Y finalmente tenemos los modelos multivaridos-multistep en la cual alimentamos el modelo con múltiples variables e intentamos predecir una sola de ellas pero durante múltiples instantes de tiempo a futuro.

Y el ejemplo en este caso sería nuevamente la temperatura. Podemos alimentar el modelo con niveles históricos de humedad, presión y temperatura, por ejemplo, e intentar predecir cómo se comportará la temperatura durante las próximas 5 horas.

Otras alternativas

Las configuraciones que acabamos de mencionar son las más usadas comúnmente para realizar predicciones sobre series de tiempo.

Sin embargo existen otras alternativas menos usadas, como por ejemplo tener múltiples salidas (por ejemplo no sólo la temperatura sino también pronósticos de humedad y presión) o predecir el comportamiento de estas múltiples series durante uno o múltiples instantes de tiempo a futuro.

Además podemos combinar las Redes LSTM con Redes Convolucionales para generar predicciones espacio-temporales.

Así por ejemplo, si tenemos datos de temperatura en diferentes ubicaciones geográficas, podemos alimentar el modelo con los datos de temperatura en cada una de estas ubicaciones y usar el poder de las Redes Convolucionales para junto con las Redes LSTM predecir cómo variará la temperatura (serie temporal) a través de estas ubicaciones (variaciones espaciales).

Conclusión

Muy bien, con lo visto en este artículo introductorio ya tenemos un panorama claro de las principales configuraciones de Redes LSTM que podemos usar para generar predicciones sobre series de tiempo.

La elección de la configuración a usar dependerá del tipo de pronóstico que queramos realizar y de las características de los datos que estemos usando.

Así que en los próximos artículos de esta serie comenzaremos a ver de forma práctica cómo implementar cada una de estas configuraciones usando Python y la librería TensorFlow.

En particular, en el segundo artículo de esta serie nos enfocaremos en la fase de preparación de los datos requerida para entrenar los diferentes modelos LSTM.

Si tienes alguna duda de este artículo o tienes alguna sugerencia no dudes en contactarme diligenciando el siguiente formulario:

Debes introducir tu nombre.
Debes introducir tu apellido.
Debes introducir un email válido.
Debes introducir un mensaje.
Debes aceptar la política de privacidad.