Lección 12 del módulo “Redes Recurrentes y LSTM” del curso Fundamentos de Deep Learning con Python.
En la lección anterior vimos cómo realizar el análisis de sentimientos con Redes LSTM, y entendimos de forma práctica como implementar esta arquitectura haciendo uso de Python y la librería Keras.
En este proyecto final veremos cómo hacer uso de las Redes LSTM para realizar predicciones sobre series de tiempo, en particular sobre el comportamiento de la demanda de energía eléctrica en una región de Estados Unidos.
Así que comencemos entendiendo qué son las Series de Tiempo, cuál es el problema que resolveremos en este proyecto y cómo realizar la lectura y visualización del set de datos:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
En esencia una serie de tiempo es una secuencia de datos numéricos organizados cronológicamente y obtenidos a intervalos regulares.
En particular, en este proyecto usaremos un registro histórico del consumo energético proporcionados por PJM Interconnection LLC, que abarcan de 2004 a 2018 con una frecuencia horaria.
Teniendo claro este panorama, veamos ahora cómo crear los sets de entrenamiento y prueba y cómo crear y entrenar nuestra Red LSTM:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Como acabamos de ver, dividimos el set de datos en los subsets de entrenamiento (90%) y prueba (10%), usando bloques de 200 datos consecutivos para entrenar el modelo LSTM, con el objetivo de que este aprenda a predecir el dato 201.
Por su parte, nuestra Red LSTM tendrá una capa de entrada de 200 neuronas, 128 unidades en la capa intermedia y una neurona de salida con activación lineal. El entrenamiento se realizará con un tamaño de lote de 256 y 20 iteraciones, usando el algoritmo RMSprop.
Habiendo entrenado este modelo, lo único que nos resta es ponerlo a prueba para determinar qué tan buenas predicciones logra generar:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Para generar las predicciones implementamos un esquema iterativo: el modelo usará los primeros 200 datos para predecir el dato 201, luego añadirá esta predicción a los datos de entrada y predecirá el dato 202, y así sucesivamente.
Y con esto podemos observar que las predicciones son bastante cercanas a los valores de referencia durante las primeras 20 horas, pero luego los errores acumulativos disminuyen la calidad de estas predicciones.
Ajustar los hiperparámetros de la Red LSTM podría mejorar las predicciones más allá de las 20 horas, pero siempre habrá acumulación de errores en predicciones sucesivas. Por ello, es importante reintroducir datos reales periódicamente para reducir estos errores.
Así que en este proyecto acabamos de implementar una Red LSTM capaz de generar predicciones bastante buenas durante las primeras 20 horas y con esto hemos puesto en práctica todo lo aprendido hasta el momento acerca de las Redes Recurrentes y en particular de las Redes LSTM.
Sin embargo, a pesar del potencial que hemos visto en estas aplicaciones prácticas, estas arquitecturas también tienen algunas desventajas que limitan su aplicación al procesamiento de secuencias cada vez más complejas.
Por esta razón, en la próxima lección hablaremos en detalle de estas ventajas y limitaciones de las Redes Neuronales Recurrentes y LSTM.
Todas las lecciones del curso Fundamentos de Deep Learning con Python.
