L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 521

 
Grigoriy Chaunin:

Découvrez les fonctions d'activation des neurones. Vous pouvez fournir les valeurs que vous souhaitez à la sortie, mais une fonction d'activation incorrecte produira des valeurs négatives. Il s'agit généralement d'une tangente hyperbolique. La fonction de perte softmax ne fonctionnera pas correctement avec elle. Bien que cela dépende beaucoup de la bibliothèque et de l'implémentation de la fonction de perte. Par exemple, dans Tensorflow, les neurones de sortie de la fonction de perte softmax ne doivent pas avoir de fonction d'activation. Et pour une utilisation correcte du réseau formé, nous devons ajouter l'activation softmax. Je n'aipas travaillé avecALGLIB, peut-être ont-ils fait quelque chose de mal. Dans tous les cas, un réseau entraîné avec softmax ne devrait pas donner de valeurs négatives.

Softmax n'est pas une fonction de perte. Vous êtes confus à propos de quelque chose. Softmax est une fonction d'activation de la couche de sortie pour les tâches de classification. N'embrouillez pas l'homme, il s'embrouillera lui-même.

Vous utilisez Alglib à vos propres risques. Faites tout dans Rstudio.

Bonne chance

 
Dr. Trader:

C'est le cas lorsqu'une des classes a un très grand nombre d'exemples d'apprentissage par rapport aux autres classes. Par exemple, 2000 exemples d'entraînement pour l'achat et seulement 1000 pour la vente. Le neurone peut toujours renvoyer "Acheter" et, dans ce cas, il aura raison dans 66 % des cas. Il est préférable de rendre le nombre d'exemples de formation de chaque classe égal.

La classe NA - prévaudra, de 50% dans les échanges fréquents, à 99% dans les échanges rares. Mais j'ai la 3ème, et j'ai le NA classe 1 coincé.

Je me demande pourquoi les articles n'utilisent pas d'exemples de formation pour les moments où il n'y a rien à faire ? Il est également important de ne rien faire au bon moment, car c'est généralement à ce moment-là que l'opération se solde par une perte.
Sans apprendre à faire une pause, NS peut commencer à trader et perdre son dépôt.

 
Vladimir Perervenko:

Softmax n'est pas une fonction de perte. Vous êtes confus à propos de quelque chose. Softmax est une fonction d'activation de la couche de sortie pour les tâches de classification. N'embrouillez pas l'homme, il s'embrouillera lui-même.

Vous utilisez Alglib à vos propres risques. Faites tout dans Rstudio.

Bonne chance


Pour être précis, la fonction de perte s'appelle softmax crossentropy. Oui, je n'ai pas été clair.

 
Vladimir Perervenko:

Softmax n'est pas une fonction de perte. Vous êtes confus à propos de quelque chose. Softmax est une fonction d'activation de la couche de sortie pour les tâches de classification. N'embrouillez pas l'homme, il s'embrouillera lui-même.

Vous utilisez Alglib à vos propres risques. Faites tout dans Rstudio.

Bonne chance

Il est fort probable que j'utiliserai la fixation R après votre prochain article (où il y aura une connexion avec le terminal).
 

A propos, il est intéressant de noter que dans l'exemple ci-dessus

Achat Vente NA
0.10302356, 0.01091621, 0.88606040
0.09705416, 0.01083526, 0.89211080
0.08283979, 0.12548789, 0.79167247
1.02522414,-0.00119697,-0.02403573
0.09498582, 0.01529507, 0.88971917
1.01878489,-0.00111341,-0.01767998
0.07906346, 0.05960769, 0.86132762
0.00201949, 0.00497863, 0.99300189

La somme de chaque ligne est égale à 1. (les 4 premiers cochés). C'est-à-dire une certaine analogie avec le softmax, où la somme (c'est-à-dire la probabilité) est également égale à 1. Mais cela a été fait par NS - régression avec sortie linéaire.

 
elibrarius:

La classe NA - prévaudra, de 50% dans les transactions fréquentes, à 99% dans les transactions peu fréquentes.

Il est très dangereux de distribuer des classes à un enseignant au hasard, comme si l'on prenait un indicateur pour créer des classes d' enseignants et que l'on remplaçait certaines des valeurs par NA également.

Même s'il y a de bons prédicteurs et de bonnes classes à enseigner, et que le modèle donne de bons résultats sur de nouvelles données, toute tentative de modifier les valeurs des classes peut briser complètement le modèle. Trouver des indicateurs pour les prédicteurs et un indicateur pour les classes qui permettront au modèle de rester rentable sur les nouvelles données est un grand succès.

Je recommanderais de prendre deux cours simples pour commencer - la couleur de la prochaine barre (c'est-à-dire achat/vente). Prenez au moins 10000 exemples d'entraînement (barre de l'historique), entraînez le modèle et évaluez le résultat sur les 10000 barres suivantes de l'historique (qui étaient inconnues du modèle pendant l'entraînement). Lorsque nous parvenons à trouver des prédicteurs qui maintiendront la précision du modèle au même niveau sur les anciennes et les nouvelles données - vous pouvez commencer à sélectionner un indicateur pour les classes d'un enseignant. Et il s'avérera que le modèle ne maintiendra pas la précision sur les nouvelles données en prenant simplement le premier indicateur disponible. Pourquoi certains indicateurs peuvent servir à un enseignant et d'autres non - je ne le sais pas.

 
elibrarius:

Il y a un problème avec la version SOFTMAX de NS sur ALGLIB. Toutes les réponses sont biaisées vers la première sortie (pour moi c'est BUY).
Sur les mêmes données NS - la régression avec 3 sorties (avec activation linéaire) donne des résultats plus fiables :

Achat Vente NA
0.10302356, 0.01091621, 0.88606040
0.09705416, 0.01083526, 0.89211080
0.08283979, 0.12548789, 0.79167247
1.02522414,-0.00119697,-0.02403573
0.09498582, 0.01529507, 0.88971917
1.01878489,-0.00111341,-0.01767998
0.07906346, 0.05960769, 0.86132762
0.00201949, 0.00497863, 0.99300189

en >0,5 donneront des réponses plausibles.

Lesa, d'ailleurs, a également biaisé sur la 1ère sortie.


Avez-vous réglé la somme des 2 sorties sur 1 ? Je ne sais pas, ça a bien fonctionné pour moi, pas d'asymétrie. J'ai aimé le softmax.

Et oui, si je me souviens bien pour softmax j'ai rationné les entrées de 0 à 1

Les forêts en général fonctionnent toujours clairement pour la régression et la classification. Parfois, j'obtiens des signaux d'achat ou de vente uniquement, mais j'ai alors creusé l'échantillon d'entraînement et il y avait une certaine distorsion dans les exemples, ce qui n'est pas étonnant (car ils se réentraînent à certains intervalles et je ne sais pas à l'avance ce qui peut apparaître dans l'échantillon). N'oubliez pas non plus que l'échafaudage ne peut pas extrapoler. Vous devez enseigner toutes les futures valeurs connues.

 

D'ailleurs, cela ne semble même pas nécessaire :

Prétraitement des données

Pour améliorer la vitesse de convergence et la qualité des solutions, ALGLIB met en œuvre un prétraitement des données (normalisation de l'ensemble d'entraînement). Le prétraitement est implicitement effectué pour l'utilisateur - avant que les données ne soient transférées au réseau neuronal, elles sont automatiquement prétraitées, le résultat du réseau est rétro-transformé.

 

Voici un contrôle NS sur la table de multiplication

J'ai fait la même chose pour les échafaudages et ça marche bien.

Библиотеки: ALGLIB - библиотека численного анализа
Библиотеки: ALGLIB - библиотека численного анализа
  • 2012.10.12
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: ALGLIB - библиотека численного анализа
 
Maxim Dmitrievsky:

Avez-vous réglé la somme des 2 sorties sur 1 ? Je ne sais pas, ça a bien fonctionné pour moi, pas d'asymétrie. J'ai aimé le softmax.

Et oui, autant que je me souvienne pour softmax j'ai rationné les entrées de 0 à 1

Les forêts en général fonctionnent toujours clairement pour la régression et la classification. Parfois, je me retrouve dans des situations où ils ouvrent uniquement à l'achat ou à la vente, mais j'ai alors creusé l'échantillon d'entraînement et oui, il y avait une distorsion dans les exemples, ce qui n'est pas étonnant (parce qu'ils se réentraînent à certains intervalles et je ne sais pas à l'avance ce qui peut apparaître dans l'échantillon). N'oubliez pas non plus que l'échafaudage ne peut pas extrapoler. Vous devez former toutes les valeurs connues à l'avenir.

J'ai la somme de 3 sorties = 1, ou plutôt pas la somme, mais seulement 1 des sorties = 1, le reste=0.
Je n'ai pas normalisé les entrées, vous avez confirmé ci-dessous que ce n'est pas nécessaire. J'ai vérifié la table de multiplication (mais ce n'est pas un softmax).
Si softmax a fonctionné pour vous - je vais essayer de le faire tourner un peu plus, peut-être qu'il fonctionnera (bien que sur absolument les mêmes données la régression avec les sorties lin. fonctionne comme il se doit).
Raison: