L'Apprentissage Automatique dans le trading : théorie, modèles, pratique et trading algo - page 412

 
Aleksey Terentev:
Mes solutions étaient initialement basées sur OpenNN (C++).
Maintenant, j'ai appris beaucoup de choses et je suis passé à Keras (Python).

Je m'occupe principalement de l'apprentissage profond de la prédiction des problèmes de classification.

Nous avons donc affaire à la même zone de MO. Keras est un bon paquet, surtout depuis qu'il est porté sur R.

Seulement je ne comprends pas la question de quoi ?

Bonne chance

 
Vladimir Perervenko:

Nous avons donc affaire à la même zone de MO. Keras est un bon paquet, surtout depuis qu'il est porté sur R.

Seulement je ne comprends pas la question de quoi ?

Bonne chance

Je viens de décider de me joindre à la discussion. =)
 
Maxim Dmitrievsky:


C'est intéressant... cela signifie que des tests supplémentaires devront être effectués, peut-être que ce RN n'est pas aussi significatif qu'on le pensait auparavant.

Le seul avantage est la sélection des poids dans l'optimiseur en même temps que les autres paramètres du système.

J'essaie actuellement de déterminer sa capacité de calcul dans une plage de données connues. La table de multiplication par exemple.

Mise à jour.

Des expériences supplémentaires après avoir changé le conseiller expert ont montré les résultats suivants par rapport au MLP 3-5-1 ordinaire.

Différentes formules ont été utilisées pour les tests :

//double func(double d1,double d2,double d3 ){return d1*d2;} //l'erreur est de 0-2%, car la multiplication est inhérente aux formules. 2 % est obtenu parce que l'optimiseur génétique ne s'arrête pas toujours à une solution idéale. Mais il existe aussi une solution absolument exacte avec erreur = 0.
//double func(double d1,double d2,double d3 ){return d1*d2*d3;}// erreur 0-2% de multiplication dans les formules, sur MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1) ;}// erreur 2-6%, sur MLP 0,1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathSin(d2)*MathSin(d3) ;}// erreur 2%, sur MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathSin(d2)*MathSqrt(d3);}// erreur 3-4%, sur MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathPow(d2,.33)*MathSqrt(d3);}// erreur 8-4%, à MLP 1.5%
//double func(double d1,double d2,double d3 ){return MathPow(d1,2)*MathPow(d2,.33)*MathSqrt(d3);}// erreur 8-4%, à MLP 1.5%

La conclusion est que le MLP ordinaire a 2 à 3 fois moins d'erreurs que le RNP de Reshetov. Une partie de cette erreur est peut-être due au fait que l'optimiseur génétique du terminal MT5 ne s'arrête pas à une solution idéale.
 
elibrarius:

J'essaie actuellement de déterminer dans quelle mesure il compte dans une gamme de données connues. Une table de multiplication par exemple.

Mise à jour.

Des expériences supplémentaires après avoir changé l'EA ont montré les résultats suivants, par rapport au MLP 3-5-1 normal.

Différentes formules ont été utilisées pour les tests :

//double func(double d1,double d2,double d3 ){return d1*d2;} //l'erreur est de 0-2%, car la multiplication est inhérente aux formules. 2 % est obtenu parce que l'optimiseur génétique ne s'arrête pas toujours à une solution idéale. Mais il existe aussi une solution absolument exacte avec erreur = 0.
//double func(double d1,double d2,double d3 ){return d1*d2*d3;}// erreur 0-2% de multiplication est inhérente aux formules, à MLP 1%.
//double func(double d1,double d2,double d3 ){return MathSin(d1);}// erreur 2-6%, à MLP 0,1%.
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathSin(d2)*MathSin(d3);}/// erreur 2%, à MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathSin(d2)*MathSqrt(d3);}// 3-4% d'erreur, à MLP 1%.
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathPow(d2,.33)*MathSqrt(d3);}/// erreur 8-4%, à MLP 1.5%.
//double func(double d1,double d2,double d3 ){return MathPow(d1,2)*MathPow(d2,.33)*MathSqrt(d3);}// erreur 8-4%, à MLP 1.5%.

En résumé, nous pouvons conclure que le MLP ordinaire a 2 à 3 fois moins d'erreurs que le RNN de Reshetov. Une partie de cette erreur est peut-être due au fait que l'optimiseur génétique du terminal MT5 ne s'arrête pas à une solution idéale.

Oui, des résultats intéressants, peut-être qu'une énumération complète serait plus précise.
 
Maxim Dmitrievsky:

Oui, les résultats sont intéressants, peut-être qu'un dépassement complet serait plus précis.
serait plus précis, mais après quelques semaines ou mois... 8 coefficients d'ajustement avec un pas de 1% 1008= 100000000000000 itérations, et le terminal lui-même passe à la génétique, avec ce nombre.
 
elibrarius:
Ce serait le cas, mais après quelques semaines ou mois... 8 coefficients sélectionnables avec un pas de 1% 1008= 10000000000000000 itérations, et le terminal lui-même passe à la génétique, avec ce nombre.

Pouvez-vous me dire, la classification des MLP à partir d'alglib, je comprends que cela nécessite au moins 2 sorties, comment travailler avec cela ? aucune aide ou description nulle part... tinny )
 
Maxim Dmitrievsky:

Puis-je demander, classer MLP à partir d'alglib je comprends, exige au moins 2 sorties, comment travailler avec elle ?)

Oui 2, à partir de l'aide http://alglib.sources.ru/dataanalysis/ne uralnetworks.php

Les réseaux neuronaux avec une couche de sortie linéaire et une normalisation SOFTMAX des sorties constituent un cas particulier. Ils sont utilisés pour les problèmes de classification, dans lesquels les sorties du réseau doivent être non négatives et leur somme doit être strictement égale à un, ce qui permet de les utiliser comme des probabilités d'assigner le vecteur d'entrée à l'une des classes (dans le cas limite, les sorties du réseau entraîné convergent vers ces probabilités). Le nombre de sorties d'un tel réseau ne doit jamais être inférieur à deux (limitation imposée par la logique élémentaire).

Je ne m'en suis pas encore occupé, j'expérimente toujours le linéaire.
 
elibrarius:

Oui, à partir de la référence http://alglib.sources.ru/dataanalysis/neuralnetworks.php

Les réseaux neuronaux avec une couche de sortie linéaire et une normalisation SOFTMAX des sorties constituent un cas particulier. Ils sont utilisés pour les problèmes de classification, dans lesquels les sorties du réseau doivent être non négatives et leur somme doit être strictement égale à un, ce qui permet de les utiliser comme des probabilités d'assigner le vecteur d'entrée à l'une des classes (dans le cas limite, les sorties du réseau entraîné convergent vers ces probabilités). Le nombre de sorties d'un tel réseau est toujours au moins deux (limitation dictée par la logique élémentaire).


Ah, bien, c'est-à-dire que nous alimentons la probabilité de l'un ou l'autre résultat, par exemple la probabilité d'acheter 0,9, puis la probabilité de vendre 0,1, un tableau servira de tampon pour les probabilités d'achat, un autre pour la vente, nous les remplissons avec ces valeurs et après la formation, ils seront utilisés pour décharger séparément les probabilités d'achat et de vente, je vois, n'est-ce pas ?
 
Maxim Dmitrievsky:

En d'autres termes, nous introduisons la probabilité de l'un ou l'autre résultat, par exemple la probabilité d'achat est de 0,9, et celle de vente de 0,1. Un tableau servira de tampon pour les probabilités d'achat, et l'autre pour les probabilités de vente, et après l'entraînement, les probabilités seront éliminées séparément, je suppose que c'est correct ?

Et d'après ce que j'ai lu, je suis du même avis.

Bien que je ne sache pas quel est son avantage... ayant 1 sortie, nous obtenons également des probabilités - environ 0 (ou -1) Achat, et environ 1 Vente. (ou vice versa, selon la façon dont vous vous entraînez).

Peut-il être utile s'il y a 3 sorties ou plus ? Après tout, 1 sortie serait difficile à utiliser.... pour 3 ou 4 tâches (bien que vous puissiez également utiliser 0, 0,5 et 1 comme classes Achat, Attente, Vente)

 
elibrarius:

Et d'après ce que j'ai lu, je suis du même avis.

Bien que je ne sache pas quel est son avantage... ayant 1 sortie, nous obtenons également des probabilités - environ 0 (ou -1) Achat, et environ 1 Vente. (Ou vice versa, selon la façon dont vous vous entraînez).

Cela pourrait-il être utile s'il y a 3 sorties ou plus ? Alors 1 sortie serait difficile à utiliser.... pour 3 ou 4 tâches (bien que vous puissiez également utiliser 0, 0,5 et 1 comme classes Achat, Attente, Vente)


Ouais, ils ont probablement fait en sorte qu'il soit possible d'avoir plus de 2 classes... alors il y aura probablement plus de clustering et vous pourrez utiliser d'autres méthodes comme les k-means :)