J'ai un peu de connaissances autodidactes travaillant avec des algorithmes d'apprentissage automatique (les trucs basiques de type Random Forest et Linear Regression). J'ai décidé de me diversifier et de commencer à apprendre les RNN avec Keras. En regardant la plupart des exemples, qui impliquent généralement des prédictions de stock, je n'ai pas pu trouver d'exemples de base de plusieurs fonctionnalités mises en œuvre, à l'exception d'une colonne étant la date de la fonctionnalité et l'autre étant la sortie. Y a-t-il une chose fondamentale qui me manque ou quelque chose?
Si quelqu'un a un exemple, je l'apprécierais grandement.
Merci!
machine-learning
neural-network
keras
Rjay155
la source
la source
multiple features
ici , une question plus spécifique sur la façon d'utiliser RNN pour les prédictions de séries chronologiques avec des fonctionnalités contenant des données numériques et des données non numériques?Réponses:
Les réseaux de neurones récurrents (RNN) sont conçus pour apprendre les données de séquence. Comme vous le devinez, ils peuvent certainement prendre plusieurs fonctionnalités en entrée! Les RNN de Keras prennent des entrées 2D ( T , F ) des pas de temps T et comportent F ( j'ignore la dimension de lot ici).
Cependant, vous n'avez pas toujours besoin ou ne voulez pas les pas de temps intermédiaires, t = 1, 2 ... ( T - 1). Par conséquent, Keras prend en charge de manière flexible les deux modes. Pour qu'il affiche tous les pas de temps T , passez
return_sequences=True
à votre RNN (par exemple,LSTM
ouGRU
) à la construction. Si vous ne voulez que le dernier pas de temps t = T , alors utilisezreturn_sequences=False
(c'est la valeur par défaut si vous ne passez pasreturn_sequences
au constructeur).Voici des exemples de ces deux modes.
Exemple 1: apprentissage de la séquence
Voici un exemple rapide de formation d'un LSTM (type de RNN) qui conserve toute la séquence. Dans cet exemple, chaque point de données d'entrée a 2 pas de temps, chacun avec 3 caractéristiques; les données de sortie ont 2 pas de temps (parce que
return_sequences=True
), chacun avec 4 points de données (parce que c'est la taille à laquelle je passeLSTM
).Exemple 2: apprentissage du dernier pas de temps
Si, d'autre part, vous souhaitez former un LSTM qui ne produit que le dernier pas de temps dans la séquence, vous devez le définir
return_sequences=False
(ou simplement le supprimer entièrement du constructeur, carFalse
c'est la valeur par défaut). Et puis vos données de sortie (data_y
dans l'exemple ci-dessus) doivent être réorganisées, car vous n'avez qu'à fournir le dernier pas de temps. Donc, dans ce deuxième exemple, chaque point de données d'entrée a toujours 2 pas de temps, chacun avec 3 fonctionnalités. Les données de sortie, cependant, ne sont qu'un seul vecteur pour chaque point de données, car nous avons tout aplati en un seul pas de temps. Cependant, chacun de ces vecteurs de sortie a toujours 4 fonctionnalités (car c'est la taille à laquelle je passeLSTM
).la source
data_x
il contiendrait simplement un seul point de données, et ce point de données aurait quatre pas de temps, chacune de 3 dimensions (et de même, vous devriez fusionnerdata_y
de la même manière). Le nombre de pas de temps que vous utilisez dépend simplement de ce que vous essayez de modéliser (et du nombre de pas de temps pertinents pour ce processus).