Comment appliquer le réseau de neurones à la prévision de séries chronologiques?

83

Je suis novice en apprentissage automatique et j'essaie de comprendre comment appliquer le réseau de neurones à la prévision de séries chronologiques. J'ai trouvé des ressources liées à ma requête, mais il me semble que je suis encore un peu perdu. Je pense qu'une explication de base sans trop de détails aiderait.

Disons que j'ai des valeurs de prix pour chaque mois sur quelques années et que je veux prédire de nouvelles valeurs de prix. Je pourrais obtenir une liste des prix des derniers mois, puis essayer de trouver des tendances similaires dans le passé en utilisant K-Nearest-Neighbor. Je pourrais les utiliser le taux de changement ou une autre propriété des tendances passées pour essayer de prévoir de nouveaux prix. Comment puis-je appliquer le réseau de neurones à ce même problème?

solartic
la source
1
La prédiction utilisant les réseaux de neurones et la prédiction de Bayer dans le fil de discussion Une manière correcte d'utiliser un réseau de neurones récurrent pour l'analyse de séries chronologiques a permis d'améliorer ma compréhension.
solartic
@solartic, juste curieux, avez-vous mis en œuvre cette méthode avec succès?
Saggy Manatee And Swan Folk -

Réponses:

102

Voici une recette simple qui peut vous aider à commencer à écrire du code et à tester des idées ...

Supposons que vous ayez des données mensuelles enregistrées sur plusieurs années, vous avez donc 36 valeurs. Supposons également que vous ne vous souciez que de prédire un mois (valeur) à l'avance.

  1. Analyse de données exploratoire: Appliquez certaines des méthodes traditionnelles d’analyse de séries chronologiques pour estimer la dépendance des données en termes de décalage (par exemple, diagrammes de corrélation automatique et de corrélation partielle, transformations, différenciation). Supposons que vous trouviez que la valeur d'un mois donné est corrélée avec les données des trois derniers mois, mais pas tant que cela.
  2. Partitionnez vos données dans des ensembles de formation et de validation: Prenez les 24 premiers points en tant que valeurs de votre formation et les points restants en tant que jeu de validation.
  3. Créez la disposition du réseau de neurones: vous prendrez les valeurs des trois derniers mois comme entrées et vous souhaitez prédire la valeur du mois suivant. Vous avez donc besoin d’un réseau de neurones avec une couche d’entrée contenant trois nœuds et une couche de sortie contenant un nœud. Vous devriez probablement avoir une couche cachée avec au moins deux nœuds. Malheureusement, la sélection du nombre de couches masquées et de leur nombre respectif de nœuds n'est pas une tâche pour laquelle des directives claires sont définies. Je commencerais petit, comme 3: 2: 1.
  4. Créer les modèles d'apprentissage: Chaque modèle d'apprentissage aura quatre valeurs, les trois premières correspondant aux nœuds d'entrée et la dernière définissant la valeur correcte pour le nœud de sortie. Par exemple, si vos données d’entraînement sont les valeurs puis le
    X1,X2,X24
    punettern1:X1,X2,X3,X4
    punettern2:X2,X3,X4,X5
    punettern21:X21,X22,X23,X24
  5. Former le réseau de neurones sur ces modèles
  6. Testez le réseau sur le jeu de validation (mois 25 à 36): vous allez indiquer ici les trois valeurs nécessaires au réseau de neurones pour la couche d'entrée et voir comment le nœud de sortie est défini. Donc, pour voir dans quelle mesure le réseau de neurones formés peut prédire la valeur du mois 32, vous passerez des valeurs pour les mois 29, 30 et 31.

Cette recette est évidemment de haut niveau et vous risquez de vous perdre la tête en essayant de faire correspondre votre contexte à différentes bibliothèques / programmes de logiciels. Mais espérons que ceci résume l’essentiel: vous devez créer des modèles d’entraînement qui contiennent raisonnablement la structure de corrélation de la série que vous essayez de prévoir. Et que vous fassiez des prévisions avec un réseau de neurones ou un modèle ARIMA, le travail exploratoire visant à déterminer quelle est cette structure est souvent la partie la plus longue et la plus difficile.

D'après mon expérience, les réseaux de neurones peuvent fournir d'excellentes fonctionnalités de classification et de prévision, mais leur mise en place peut prendre beaucoup de temps. Dans l'exemple ci-dessus, vous constaterez peut-être que 21 modèles d'entraînement ne suffisent pas; différentes transformations de données d'entrée conduisent à des prévisions meilleures / pires; la variation du nombre de couches et de nœuds de couche masqués affecte grandement les prévisions; etc.

Je recommande fortement de consulter le site Web neural_forecasting , qui contient des tonnes d'informations sur les compétitions de prévision de réseau neuronal. La page Motivations est particulièrement utile.

Josh Hemann
la source
12
+1 à cette réponse, mais nous ajoutons également que même si les 3 derniers mois sont les seuls à être en corrélation avec la réponse, il peut également y avoir des facteurs comme le même mois de l'année des 5 dernières années qui constituent des intrants utiles ( Par exemple, si les mois de décembre ont tendance à ressembler aux mois de décembre précédents, généralement).
rossdavidh
1
Très bonne réponse. J'ai trouvé cela très utile. Une explication de haut niveau est exactement ce que je voulais. @rossdavidh: Bon point +1.
Solartic
2
Ce serait bien d’obtenir quelques exemples de codes ici.
Léo Léopold Hertz
1
La chose intéressante serait un ensemble de données de séries chronologiques multivariées avec régresseurs ..
Tommaso Guerrini
1
Est-ce que quelqu'un connaît du papier avec une application aux données réelles et une comparaison avec la méthode des séries chronologiques "traditionnelles"?
Marco Fumagalli