PC & Mobile

Prévisions de séries temporelles avec TensorFlow.js – Vers la science des données

Prévisions de séries temporelles avec TensorFlow.js - Vers la science des données


Visite guidée du projet

Cette procédure pas à pas comporte 4 parties:

  1. Obtenir des données sur les stocks à partir de l'API en ligne
  2. Calculer une moyenne mobile simple pour une fenêtre temporelle donnée
  3. Former le réseau de neurones LSTM
  4. Prédire et comparer les valeurs prévues aux valeurs réelles

Obtenir des données sur les stocks

Avant de pouvoir former le réseau de neurones et faire des prévisions, nous aurons d’abord besoin de données. Le type de données que nous recherchons est une série chronologique: une séquence de nombres dans l’ordre chronologique. Un bon endroit pour récupérer ces données sont celles de alphavantage.co. Cette API nous permet de récupérer des données chronologiques sur les prix des actions de sociétés spécifiques des 20 dernières années.

L'API génère les champs suivants:

  • prix ouvert
  • le prix le plus élevé de cette journée
  • le prix le plus bas de cette journée
  • Prix ​​de clôture (utilisé dans ce projet)
  • le volume

Pour préparer le jeu de données de formation pour notre réseau de neurones, nous utiliserons les cours de clôture. Cela signifie également que nous viserons à prévoir le cours de clôture futur. Le graphique ci-dessous montre les cours de clôture hebdomadaires de Microsoft Corporation pour 20 ans.

20 ans de données de clôture hebdomadaires de Microsoft Corporation provenant d'alphavantage.co

Moyenne mobile simple

Pour cette expérience, nous utilisons l'apprentissage supervisé, ce qui signifie que le réseau de neurones est alimenté en données et qu'il apprend en mappant les données d'entrée sur l'étiquette de sortie. Une façon de préparer l'ensemble de données d'apprentissage consiste à extraire la moyenne mobile de ces données chronologiques.

La moyenne mobile simple (SMA) est une méthode permettant d'identifier la direction des tendances pour une certaine période en examinant la moyenne de toutes les valeurs comprises dans cette fenêtre temporelle. Le nombre de prix dans une fenêtre temporelle est sélectionné de manière expérimentale.

Par exemple, supposons que les prix de clôture des 5 derniers jours étaient de 13, 15, 14, 16, 17, la SMA serait de (13 + 15 + 14 + 16 + 17) / 5 = 15. Ainsi, l'entrée de notre formation ensemble de données est l'ensemble des prix dans une seule fenêtre temporelle et son étiquette est la moyenne mobile calculée de ces prix.

Calculons le SMA des données de prix de clôture hebdomadaires de Microsoft Corporation, avec une fenêtre de 50.

Et c’est ce que nous obtenons: cours de clôture hebdomadaire en bleu et SMA en orange. SMA étant une moyenne mobile de 50 semaines, il est plus fluide que le prix hebdomadaire, qui peut fluctuer.

Moyenne mobile simple des données de prix de clôture de Microsoft Corporation

Données d'entraînement

Nous pouvons préparer les données de formation avec les cours boursiers hebdomadaires et la SMA calculée. Étant donné que la taille de la fenêtre est de 50, cela signifie que nous utiliserons le cours de clôture toutes les 50 semaines consécutives comme fonction de formation et la SMA de ces 50 semaines comme label de formation. Ce qui ressemble à quelque chose comme…

Ensuite, nous divisons nos données en 2 ensembles, ensemble de formation et de validation. Si 70% des données sont utilisées pour la formation, 30% pour la validation. L'API nous renvoie environ 1000 semaines de données, soit 700 pour la formation et 300 pour la validation.

Former le réseau de neurones

Maintenant que les données de formation sont prêtes, il est temps de créer un modèle pour la prévision de séries chronologiques. Pour ce faire, nous allons utiliser le cadre TensorFlow.js (TFJS). TFJS est une bibliothèque permettant de développer et de former des modèles d'apprentissage automatique en JavaScript. Nous pouvons également déployer ces fonctionnalités d'apprentissage automatique dans un navigateur Web.

Le modèle séquentiel est sélectionné, il connecte simplement chaque couche et transmet les données d'entrée à la sortie pendant le processus d'apprentissage. Pour que le modèle puisse apprendre des données de série temporelle séquentielles, une couche de réseau neuronal récurrent (RNN) est créée et un certain nombre de cellules LSTM sont ajoutées au RNN.

Le modèle sera formé à l'aide d'Adam (document de recherche), un algorithme d'optimisation populaire pour l'apprentissage automatique. Erreur quadratique moyenne qui déterminera la différence entre les valeurs prédites et les valeurs réelles afin que le modèle puisse apprendre en minimisant l'erreur pendant le processus de formation.

Ce sont les hyper-paramètres (paramètres utilisés dans le processus de formation) disponibles pour peaufiner dans le front-end:

  • Taille du jeu de données de formation (%): la quantité de données utilisée pour la formation et les données restantes seront utilisées pour la validation
  • Epoques: nombre de fois que le jeu de données est utilisé pour former le modèle (en savoir plus)
  • Taux d'apprentissage: la quantité de changement dans les poids lors de la formation à chaque étape (en savoir plus)
  • Calques LSTM cachés: pour augmenter la complexité du modèle à apprendre dans un espace de dimension supérieure (en savoir plus)
Interface Web [https://lonedune.github.io/tfjs-stocks/demo/], montrant les paramètres disponibles pour le peaufinage

Cliquez sur le bouton Commencer le modèle de formation…

Le modèle semble converger vers 15 ans.

Validation et Prédiction

Maintenant que le modèle est formé, il est temps de l'utiliser pour prédire les valeurs futures. Dans notre cas, il s'agit de la moyenne mobile. Nous utilisons en réalité les 30% restants des données pour la prévision, ce qui nous permet de voir à quel point nos valeurs prédites sont comparées aux valeurs réelles.

La ligne verte indique la prédiction des données de validation

Cela signifie que les 30% restants des données ne sont pas vus par le modèle et donnent l'impression que le modèle fait un bon travail en effectuant un tracé proche de la ligne de la moyenne mobile.

Conclusion

Il existe de nombreuses façons de faire des prévisions chronologiques autres que l’utilisation d’une simple moyenne mobile. Les travaux futurs possibles consistent à implémenter cela avec plus de données provenant de diverses sources.

Avec TensorFlow.js, l’apprentissage automatique sur un navigateur Web est possible, et c’est en fait plutôt cool.

Voir la démo ou voir le code sur Github, cette expérience est 100% éducative et en aucun cas un outil de prédiction de trading.

Show More

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Related Articles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Close
Close