Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Dans le 1er commentaire de la vidéo, notez que vous devez spécifier explicitement la version 2.10.0 de tensorflow.
Merci, je veux dire
Il est inutile d'expérimenter ici, car une telle prévision ne diffère pas d'une prévision naïve (la valeur du prix de clôture précédent est prise comme prévision). Dans ce cas, vous obtenez pratiquement la plus petite erreur d'apprentissage (RMS), ce qui ne dit rien sur la capacité prédictive du modèle. Il s'agit plutôt d'un exemple éducatif sur ONNX qui montre que même une architecture complexe peut être facilement transférée au terminal. Je ne sais pas ce que les auteurs de cet article sur la recherche d'architectures de réseaux neuronaux pour la prévision des séries temporelles ont fumé :) ici, soit l'estimation est nécessaire correctement, soit la classification au lieu de la régression.
Veuillez expliquer l'exemple de l'image où les 20 % restants de bougies de test sont impliqués. S'agit-il d'un forward ? Pourquoi la prévision coïncide-t-elle presque entièrement avec les prix réels (à en juger par l'image, cela ressemble à deux chandeliers, dont un seul est décalé d'une barre), mais le testeur est un peu triste ?
Veuillez expliquer l'exemple de l'image où les 20 % restants des bougies de test sont impliqués. S'agit-il d'un forward ? Pourquoi la prévision coïncide-t-elle presque entièrement avec les prix réels (à en juger par l'image, cela ressemble à deux chandeliers, dont un seul est décalé d'une barre), alors que dans le testeur, il y a une certaine tristesse ?
Vous avez répondu à votre propre question, à savoir que vous obtenez un MA retardé en tant que prévision (généralement avec un simple décalage vers l'arrière). Il s'agit d'une astuce bien connue lors de l'entraînement à l'aide de métriques standard, qui sont minimisées avec ce résultat.
J'ai ajouté ci-dessus un lien vers d'autres mesures.https://stackoverflow.com/questions/65316205/implementation-os-nmae-as-metric-with-keras
Vous avez répondu à votre propre question, à savoir que vous obtenez un MA décalé en tant que prédiction (généralement avec un simple décalage vers l'arrière). Il s'agit d'une astuce bien connue lors de l'apprentissage par le biais de mesures standard, qui sont minimisées grâce à ce résultat.
J'ai ajouté ci-dessus un lien vers d'autres métriques.Un article est nécessaire sur ce sujet.
Il faudrait un article sur ce sujet.
Apparemment, les métriques de l'industrie de l'énergie ne conviennent pas non plus :) Je ne connais pas de bonne solution, j'ai donc opté pour la classification.
Dans Google, pour trouver la meilleure mesure de prévision, c'est MAPE (Mean absolute percentage error) qui apparaît.
Pour utiliser explicitement les métriques dans l'optimisation des modèles keras, elles doivent être spécifiées explicitement comme une fonction de perte, et non comme dans #13.
Une implémentation de plus de 100 métriques de régression en Python peut être trouvée ici (Akaike Information Criterion, Aitchison distance, Amemiya's Adjusted R-squared, Amemiya's Prediction Criterion, Bias as and given by Gupta, Bayesian Information Criterion, Brier score, Pearson correlation coefficient, Centered root-mean-square (RMS) difference, Decomposed MSE developed by Kobayashi and Salam...).
Exemple avec l'optimisation de la métrique MAPE (keras devrait être utilisé au lieu des fonctions mathématiques numpy, à cause des tenseurs).
# example from https://github.com/AtrCheema/SeqMetrics/blob/master/SeqMetrics/_rgr.py
# Mean Absolute Percentage Error (MAPE)
# The MAPE is often used when the quantity to predict is known to remain way above zero_.
# It is useful when the size or size of a prediction variable is significant in evaluating the accuracy of a prediction_.
# It has advantages f scale-independency and interpretability.
# However, it has the significant disadvantage that it produces infinite or undefined values for zero or close-to-zero actual values_.
# .. _zero:
# https://doi.org/10.1016/j.neucom.2015.12.114 // Mean Absolute Percentage Error for regression models
# .. _prediction:
# https://doi.org/10.1088/1742-6596/930/1/012002 // Forecasting Error Calculation with Mean Absolute Deviation and Mean Absolute Percentage Error
# .. _values:
# https://doi.org/10.1016/j.ijforecast.2015.12.003 // A new metric of absolute percentage error for intermittent demand forecasts
from keras import backend as K
def MAPE_metric(y_true, y_pred):
return (K.mean(K.abs((y_true - y_pred) / (y_true+1e-8)) * 100))
#define the model
model = Sequential()
model.add(Conv1D(filters=256, kernel_size=2,activation='relu',padding = 'same',input_shape=(120,1)))
model.add(MaxPooling1D(pool_size=2))
model.add(LSTM(100, return_sequences = True))
model.add(Dropout(0.3))
model.add(LSTM(100, return_sequences = False))
model.add(Dropout(0.3))
model.add(Dense(units=1, activation = 'sigmoid'))
model.compile(optimizer='adam', loss=MAPE_metric , metrics = [MAPE_metric])
Comment se présente l'optimisation
graphique prédictif :
Cependant, l'utilisation de MAPE dans l'optimisation ici a également produit un changement.
Peut-être devons-nous envisager des directions d'optimisation plus complexes sous la forme de produits de métriques.
Ce sujet nécessite des recherches approfondies.
Google pour la meilleure métrique de prévision montre MAPE (Mean absolute percentage error).
Pour utiliser explicitement les métriques dans l'optimisation des modèles keras, elles doivent être spécifiées explicitement comme une fonction de perte, et non comme dans #13.
L'implémentation de plus de 100 métriques de régression en Python peut être trouvée ici (critère d'information d'Akaike, distance d'Aitchison, R-carré ajusté d'Amemiya, critère de prédiction d'Amemiya, biais tel que donné par Gupta, critère d'information bayésien, score de Brier, coefficient de corrélation de Pearson, différence quadratique moyenne centrée, MSE décomposée développée par Kobayashi et Salam...).
Cependant, lorsque le MAPE a été utilisé dans le processus d'optimisation, un changement a également été obtenu ici.
Peut-être devons-nous envisager des directions d'optimisation plus complexes sous la forme de produits de métriques.
Ce sujet nécessite une étude détaillée.
Selon moi, le problème ne réside jamais dans la métrique, mais dans la structure des données sélectionnées pour la prévision - dans ce cas, l'ensemble d'échantillons le plus "simple" a été choisi pour l'exemple. Essayez, par exemple, d'échantillonner des vecteurs dans l'espace d'intégration (prenez des échantillons avec un pas où l'autocorrélation de la série disparaît) - vous obtiendrez une prévision plus similaire à la prévision réelle - cela signifie non seulement l'absence de retard de type MA, mais aussi qu'elle sera parfois très erronée ;-).
Si l'on découpe et recolle les parties de la série qui n'ont pas de nouvelles, le résultat devrait être acceptable.
Selon moi, le problème ne réside pas dans la métrique, mais dans la structure des données sélectionnées pour la prévision - dans ce cas, l'ensemble d'échantillons le plus "simple" a été choisi pour l'exemple. Essayez, par exemple, d'échantillonner des vecteurs dans l'espace d'intégration (prenez des échantillons avec un pas où l'autocorrélation de la série disparaît) - vous obtiendrez une prévision plus proche de la prévision réelle - ce qui signifie non seulement l'absence de retard de type MA, mais aussi qu'elle sera parfois très erronée ;-).
Cela nécessite des processus de prétraitement des données plus complexes et un traitement séparé du sujet. Il semble que beaucoup de choses dépendent de la nature des relations entre les données (les marchés ont des relations complexes).
D'après ce que j'ai compris, s'il n'y a pas de nouvelles informations (ou si leur rôle est insignifiant au sens des transformations linéaires Traitement optimal des signaux, 1.4 Annulation de la corrélation 1.5 Orthogonalisation de Gram-Schmidt), la meilleure prévision sera la valeur passée (mais si elle est correctement prise en compte, elle ne devrait pas se tromper beaucoup, bien qu'il faille procéder à des expériences).
En ce qui concerne les métriques ("directions" de l'optimisation des poids du réseau) que je pense nécessaire de comprendre (pour les séries temporelles financières), la question nécessite un article séparé.
Nous invitons tout le monde à partager son expérience.
Tout projet d' apprentissage automatique se compose de trois étapes :
L'utilisation des modèles ONNX dans le µl résout le problème de l'implémentation. Il est vrai que tous les modèles ne sont pas faciles à utiliser.
L'entraînement et l'optimisation des modèles sont résolus par un processus séparé en Python.
Mais de tout ce qui précède, la première étape est la plus longue, la plus créative et la plus importante. Et il est impossible de la réaliser sur le µl. Nous ne considérons pas la mise à l'échelle primitive comme un prétraitement. Et la sagesse populaire dit : "Garbage in - rubbish out". Il y a trop de choses à développer et à mettre en œuvre en plus dans MCL pour que la MO ne soit pleinement utilisée que sur MCL. Il n'est pas possible d'embrasser l'immensité, d'autant plus qu'elle ne cesse de s'étendre.
Par conséquent, pour exécuter un prétraitement, il faut soit le faire dans un autre langage (celui qui maîtrise R/Python/Julia, etc.), soit essayer de le convertir en ONNX.
L'avantage d'implémenter ONNX jusqu'à présent est que nous allons apprendre à convertir, créer, simplifier et optimiser les modèles ONNX. Cela pourrait s'avérer utile à l'avenir.