Está en la página 1de 5

Ejemplos NN 1

Índice

1. LSTM 2
1.1. Predicción de series temporales univariantes . . . . . . . . . . . . . . 2
1.2. Predicción de series temporales multivariantes . . . . . . . . . . . . . 3
1.3. Predicción de series temporales con paso múltiple . . . . . . . . . . . 4

Referencias 5

1
Ejemplos NN 2

1. LSTM

Long Short Term Memory networks (LSTM) son un tipo de redes neuronales re-
currentes capaces de aprender dependencias a largo plazo. Su particularidad es que,
al poder recordar información en un largo período de tiempo, pueden resolver con
mayor facilidad los problemas encontrados con las redes neuronales recurrentes con-
vencionales en amplios campos, como la traducción automática o el reconocimiento
de voz. No obstante, para poder emplear las LSTM networks, necesitamos tener en
cuenta algunas consideraciones y realizar algunos cambios. Mediante diversos ejem-
plos, aprenderemos a aplicar LSTM networks para la predicción de series temporales
univariantes y multivariantes; así como empleando múltiples pasos.

1.1. Predicción de series temporales univariantes

Tenemos un dataset con las ventas mensuales de champú en un período de 3 años.


Usaremos los dos primeros años para entrenar nuestro modelo, e intentaremos pre-
decir las ventas del tercer año.

Algunas consideraciones que hemos tenido en cuenta al implementar los LSTM


networks:

- Keras asume que los datos están divididos en input y output. En un problema
de series temporales, usamos el resultado del último período de tiempo (t-1) como
el input, y del presente (t) como el output. Para ello, empleamos la función shift(),
incluida en la biblioteca Pandas.

- Los datos estacionarios son más fáciles de tratar que los dependientes del tiempo.
Por ello, eliminamos la tendencia de nuestra serie temporal restando los datos de t
y t-1, eliminando así la dependencia temporal de nuestra serie. Lógicamente, luego
revertiremos los cambios.

- Por defecto, las LSTM networks usan como función de activación la tangente
hiperbólica. Por ello, aplicamos una escala en nuestro dataset tal que nuestros datos
estén comprendidos en el intervalo [-1, 1].

Un grupo de datos es un número jo de columnas del training dataset que dene
cuántos patrones procesar antes de actualizar los pesos de la red.

Para aplicar LSTM necesitamos una matriz con las dimensiones [muestras : pasos
de tiempo : características], donde las muestras son observaciones independientes del
dominio (normalmente un número mucho menor que el total). Entonces, editamos
nuestro dataset para tener esta misma estructura.

2
Ejemplos NN 3

El tamaño del grupo y el número de épocas determinan la velocidad con la que


nuestra red neuronal aprende (la frecuencia con la que los pesos se actualizan).

Finalmente, nos queda denir el número de neuronas (entre 1 y 5 será sucien-


te), así como especicar un algoritmo de optimización y una función de pérdida
(usaremos error cuadrático medio y el algoritmo de optimización ADAM). Además,
creamos una función para controlar cuándo se resetea el estado interno.

Implementado el modelo con estas consideraciones, obtenemos la predicción. En


la siguiente gráca se muestran los resultados obtenidos, así como los datos reales:

Figura 1: Predicción obtenida y datos de ventas reales durante el tercer año.

Observamos que la tendencia es claramente creciente, y que los datos reales y


predichos se asemejan. Sería posible hacer un test y ver el error cometido, en caso
de que necesitáramos más rigurosidad.

1.2. Predicción de series temporales multivariantes

Tenemos un dataset coon el tiempo y el nivel de contaminación durante 5 años


en la embajada de Estados Unidos en Pekín. En este caso, consideraremos varias

3
Ejemplos NN 4

variables (temperatura, presión, dirección y velocidad del viento, horas de nieve y


lluvia...). Se trata de que, dadas las condiciones meteorológicas y la contaminación
de las horas previas, podamos predecir el nivel de contaminación la siguiente hora.

Primero, preparamos los datos de la misma manera que en el caso anterior (di-
vidimos en input y output, convertimos los datos a estacionarios, normalizamos los
datos y aplicamos la escala, separamos en training y test dataset...).

Denimos nuestro modelo de LSTM con 50 neuronas (input) y 1 neurona (output)


para predecir el nivel de contaminación. Además, el paso de tiempo será de 1 hora,
y tendremos 8 variables a considerar (diferencia principal con el caso anterior).
Usaremos 50 épocas para el entrenamiento, con un tamaño de grupo de 72, aplicamos
el modelo, invertimos los cambios, y obtenemos los resultados:

Figura 2: Predicción y datos reales del nivel de contaminación

1.3. Predicción de series temporales con paso múltiple

Usaremos de nuevo el dataset de las ventas de champú, pero, en este caso, dadas
las ventas en los tiempos (t-1, t-2,...,t-n), tendremos que predecir las ventas de los

4
Ejemplos NN 5

tres siguientes pasos de tiempo (t, t+1, t+2).

Preparamos los datos de la misma manera que anteriormente, aplicamos 1500


épocas y un tamaño de grupo de 1 (de tal forma que los pesos se actualicen después
de cada modelo de entrenamiento). Obtenemos los siguientes resultados, para los t.
t+1, t+2 en diversos puntos:

Figura 3: Predicción obtenida (rojo) y datos de ventas reales (azul)

Referencias

También podría gustarte