Je voudrais savoir s'il existe un code pour former un réseau neuronal convolutionnel à la classification des séries chronologiques.
J'ai vu des articles récents ( http://www.fer.unizg.hr/_download/repository/KDI-Djalto.pdf ) mais je ne sais pas s'il existe quelque chose ou si je dois le coder moi-même.
Réponses:
Si vous voulez une solution de boîte noire open source, essayez de regarder Weka , une bibliothèque java d'algorithmes ML. Ce type a également utilisé Covolutional Layers dans Weka et vous pouvez modifier son code de classification pour l'adapter à une tâche de classification de séries chronologiques.
Quant au codage du vôtre ... Je travaille sur le même problème en utilisant la bibliothèque python, theano (je vais éditer ce post avec un lien vers mon code si je le craque très bientôt). Voici une liste complète de tous les documents que je vais utiliser pour m'aider à passer une bonne heure de recherche sur le Web:
Comme point de départ, vous pouvez modifier le code trouvé ici pour classer selon un nombre différent de catégories, ou le modifier de la classification à la régression - je l'ai fait en supprimant la couche softmax finale et en créant un seul nœud de sortie. Je l'ai formé sur des tranches de fonction comme
y=sin(x)
un test.la source
Il est tout à fait possible d'utiliser un CNN pour faire des prédictions de séries temporelles que ce soit la régression ou la classification. Les CNN sont bons pour trouver des modèles locaux et, en fait, les CNN fonctionnent avec l'hypothèse que les modèles locaux sont pertinents partout. La convolution est également une opération bien connue dans les séries chronologiques et le traitement du signal. Un autre avantage par rapport aux RNN est qu'ils peuvent être très rapides à calculer car ils peuvent être parallélisés par opposition à la nature séquentielle RNN.
Dans le code ci-dessous, je vais démontrer une étude de cas où il est possible de prédire la demande d'électricité en R en utilisant des keras. Notez que ce n'est pas un problème de classification (je n'avais pas d'exemple à portée de main) mais il n'est pas difficile de modifier le code pour gérer un problème de classification (utilisez une sortie softmax au lieu d'une sortie linéaire et une perte d'entropie croisée).
L'ensemble de données est disponible dans la bibliothèque fpp2:
Ensuite, nous créons un générateur de données. Il est utilisé pour créer des lots de données de formation et de validation à utiliser pendant le processus de formation. Notez que ce code est une version plus simple d'un générateur de données trouvé dans le livre "Deep Learning with R" (et la version vidéo de celui-ci "Deep Learning with R in Motion") de publications manning.
Ensuite, nous spécifions certains paramètres à transmettre à nos générateurs de données (nous créons deux générateurs, un pour la formation et un pour la validation).
Le paramètre de rétrospection est de savoir jusqu'où nous voulons regarder dans le passé et d'anticiper jusqu'où nous voulons prédire l'avenir.
Ensuite, nous séparons notre ensemble de données et créons deux générateurs:
train_dm <- dm [1: 15000,]
Ensuite, nous créons un réseau de neurones avec une couche convolutionnelle et formons le modèle:
Enfin, nous pouvons créer du code pour prédire une séquence de 24 points de données en utilisant une procédure simple, expliquée dans les commentaires R.
et le tour est joué:
Pas mal.
la source