Tengo un poco de conocimiento autodidacta trabajando con algoritmos de aprendizaje automático (el material básico de tipo de bosque aleatorio y regresión lineal). Decidí diversificarme y comenzar a aprender RNN con Keras. Al observar la mayoría de los ejemplos, que generalmente involucran predicciones de acciones, no he podido encontrar ningún ejemplo básico de múltiples funciones que se implementen, aparte de 1 columna que es la fecha de la característica y la otra la salida. ¿Hay algo fundamental que me falta o algo así?
Si alguien tiene un ejemplo, lo agradecería mucho.
¡Gracias!
machine-learning
neural-network
keras
Rjay155
fuente
fuente
multiple features
aquí , una pregunta más específica sobre cómo usar RNN para predicciones de series de tiempo con características que contienen datos numéricos y datos no numéricos.Respuestas:
Las redes neuronales recurrentes (RNN) están diseñadas para aprender datos de secuencia. Como supones, ¡definitivamente pueden tomar múltiples características como entrada! Los RNN de Keras toman entradas 2D ( T , F ) de pasos de tiempo T y características F (estoy ignorando la dimensión del lote aquí).
Sin embargo, no siempre necesita o desea los pasos de tiempo intermedios, t = 1, 2 ... ( T - 1). Por lo tanto, Keras admite de manera flexible ambos modos. Para que emita todos los pasos de tiempo T , pase
return_sequences=True
a su RNN (por ejemplo,LSTM
oGRU
) en la construcción. Si solo desea el último paso de tiempo t = T , usereturn_sequences=False
(este es el valor predeterminado si no pasareturn_sequences
al constructor).A continuación hay ejemplos de ambos modos.
Ejemplo 1: aprender la secuencia
Aquí hay un ejemplo rápido de entrenamiento de un LSTM (tipo de RNN) que mantiene la secuencia completa. En este ejemplo, cada punto de datos de entrada tiene 2 pasos de tiempo, cada uno con 3 características; los datos de salida tienen 2 pasos de tiempo (porque
return_sequences=True
), cada uno con 4 puntos de datos (porque ese es el tamaño al que pasoLSTM
).Ejemplo 2: Aprendiendo el último paso de tiempo
Si, por otro lado, desea entrenar un LSTM que solo genera el último paso de tiempo en la secuencia, entonces debe configurarlo
return_sequences=False
(o simplemente eliminarlo del constructor por completo, ya queFalse
es el valor predeterminado). Y luego sus datos de salida (data_y
en el ejemplo anterior) deben reorganizarse, ya que solo necesita proporcionar el último paso de tiempo. Entonces, en este segundo ejemplo, cada punto de datos de entrada todavía tiene 2 pasos de tiempo, cada uno con 3 características. Sin embargo, los datos de salida son solo un vector para cada punto de datos, porque hemos aplanado todo a un solo paso de tiempo. Sin embargo, cada uno de estos vectores de salida todavía tiene 4 características (porque ese es el tamaño al que pasoLSTM
).fuente
data_x
simplemente contendría un único punto de datos, y ese punto de datos tendría cuatro pasos de tiempo, cada uno de 3 dimensiones (y de manera similar, tendría que fusionarsedata_y
de la misma manera). El número de pasos de tiempo que usa simplemente depende de lo que está tratando de modelar (y cuántos pasos de tiempo son relevantes para ese proceso).