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

 
Yuriy Asaulenko:

Comment lisez-vous les livres ? Vous les mettez sous votre cul ?

Très populaire. Un problème a une solution ou il n'en a pas. Si ce n'est pas le cas, vous ne pouvez pas le résoudre. Si c'est le cas, vous ne pourrez pas le résoudre. Et la NS n'a rien à voir avec ça.

Lisez donc le livre suggéré ci-dessus. Il y a toujours une solution optimale dans une quantité de un, le degré de satisfaction est une autre question.

 

Comme promis, je rapporte les résultats du test des différents indicateurs pour la sélection d'un modèle de classification binaire. Le test comprend 17 indicateurs : Logloss ; BalancedErrorRate ; LogLikelihoodOfPrediction ; WKappa ; Kappa ; BrierScore ; ZeroOneLoss ; Accuracy ; BalancedAccuracy ; MCC ; Precision ; Recall ; F1 ; AUC ; HingeLoss ; HammingLoss ; CrossEntropy, le défaut est Logloss. La méthodologie est simple, il s'agit d'exécuter CatBoost avec les mêmes paramètres sur les mêmes échantillons pour la formation, le test et la vérification finale, les valeurs numériques sont prises dans le fichier de la vérification finale, qui ne participe pas à la formation. Pour chaque indicateur, 8 arbres de tailles différentes de 1 à 8 sont formés, ce qui permet d'obtenir une moyenne de la capacité à sélectionner de bonnes valeurs dans l'ensemble, et a également été utilisé dans le but de déterminer la signification du redimensionnement des arbres. Quatre cibles ont été utilisées pour l'entraînement, les stratégies différant davantage par la cible du mouvement de tendance. Les résultats de chaque indicateur ont été résumés dans le tableau suivant :



Il s'est avéré que certains indicateurs sont parfaitement cohérents les uns avec les autres et ils ont été rassemblés en groupes - l'identifiant du groupe d'indicateurs est indiqué en vert.


Vous trouverez ci-dessous un tableau récapitulatif pour chaque indicateur, avec les valeurs maximales et minimales de l'indicateur mises en évidence et un marquage en couleur des valeurs maximales dans l'ensemble de l'échantillon.

Un tableau récapitulatif du bénéfice moyen de chaque indicateur est présenté ensuite, comme une variante de l'identification d'un indicateur universel pour toutes les variantes de l'objectif - le montant moyen maximum.



Comme je l'ai écrit précédemment, je testais ma formule sur ces données en parallèle afin de sélectionner le meilleur indicateur parmi les données obtenues - "%All*1%", les résultats ont été combinés dans un tel tableau pour chaque indicateur participant au test.

Cette approche a permis d'établir un classement basé sur la somme des scores des facteurs de sélection pour chaque indicateur, comme le montre le tableau ci-dessous.

Il est intéressant de noter que le favori du premier classement, Precision, se trouvait tout en bas, ce qui suggère qu'il n'est pas polyvalent, mais plutôt que ses performances étaient très bonnes pour la première cible.

Il est également possible d'examiner les options que ce facteur a sélectionnées dans le tableau de chaque indicateur et de regarder le classement sur la somme de ces indicateurs.

Pour résumer, il est possible d'agréger les résultats dans un tableau récapitulatif et d'additionner les scores des lieux - celui qui a le moins de cette métrique peut être meilleur.

Nous pouvons conclure que Logloss est plutôt une moyenne que la meilleure métrique pour la sélection de modèles, en même temps que différentes TS peuvent exiger différentes méthodes de sélection de modèles formés. Ainsi, par exemple, pour un échantillon plus équilibré par la cible (colonnes_100), la précision est parfaite, mais pour un échantillon déséquilibré, où par exemple 20% (colonnes_200) et moins que la cible "1", les choses ne vont pas bien et ici il est raisonnable d'utiliser HingeLoss qui a fait face à cette tâche parfaitement. Le plus équilibré, peut-être, était l'indicateur de rappel - il peut être utilisé pour sonder le sol, je pense. Un indicateur tel que la précision s'est avéré extrêmement peu fiable et déséquilibré : d'une part, il a été capable de trouver la meilleure option avec la cible la plus équilibrée, mais d'autre part, la moyenne de toutes les options de l'arbre n'a pas été bien sélectionnée, ce qui fait qu'il n'est pas très adapté à la recherche d'échantillons déséquilibrés ou au réglage de modèles.

 
Alexander_K2:


La tendance est facilement et gentiment balayée dans les toilettes avec une clé convoitée que j'ai trouvée littéralement "à genoux".


Je me demande ce qu'il a inventé.

 
Aleksey Vyazmikin:

Bons tests, merci

Existe-t-il des informations sur le différentiel d'erreurs des tests de formation ? Prenez n'importe quel test de précision ou de perte de logarithme, les plus populaires.

par exemple quelque chose comme ceci

2018.11.27 02:26:37.780 Core 2  2018.11.23 23:59:59   RlMonteCarlo TRAIN LOSS
2018.11.27 02:26:37.780 Core 2  2018.11.23 23:59:59   0.19023
2018.11.27 02:26:37.780 Core 2  2018.11.23 23:59:59   RlMonteCarlo TEST LOSS
2018.11.27 02:26:37.780 Core 2  2018.11.23 23:59:59   0.43959

piste droite test gauche :

Je m'intéresse à la capacité du modèle à généraliser, et à la façon dont il est possible de gérer les surcharges. Je vois que vous avez maîtrisé l'outil rapidement. Enfin des conversations de fond :))

 
Maxim Dmitrievsky:

Superbes tests, merci.

y a t-il des informations sur le différentiel d'erreurs traine\test ? prenez juste un Accuracy ou logloss là, les plus communs

par exemple quelque chose comme ceci

piste droite test gauche :

Je suis intéressé par la capacité du modèle à généraliser, et quels sont les feats pour combattre les overfits. Je vois que vous avez maîtrisé l'outil rapidement. Enfin des discussions de fond :))

Catbust utilise trois échantillons - l'un est un échantillon de test utilisé pour la formation, le second pour tester la formation de chaque modèle et sélectionner le meilleur modèle, qui a été obtenu dans le processus de formation et s'est avéré stable sur les données de test, et le troisième est un échantillon d'examen, qui est marqué après la fin de la formation par le modèle sélectionné. Puisqu'il peut en fait apprendre très bien sur l'échantillon d'entraînement, il n'est pas logique de comparer les résultats sur l'échantillon d'essai avec l'échantillon d'entraînement, mais le test avec l'échantillon d'examen le fait. Mais comme je gérais tout cela à la main dans Excel, je n'étais pas assez fort pour vérifier également les résultats de l'échantillon test. Ces données sont bien sûr nécessaires pour évaluer le modèle, et doivent être prises en compte et analysées, mais le processus n'est pas encore automatisé (j'ai juste commencé à écrire un script pour préparer la configuration pour le traitement - loin de l'analyse) et je ne peux pas parler de chiffres.

Je n'ai pas remarqué de méthodes particulières pour lutter contre le surentraînement, si ce n'est des méthodes permettant d'arrêter l'entraînement en cas de très bonnes lectures... L'algorithme lui-même comporte une part d'aléatoire qui peut être désactivée - il permet également de ne pas choisir les meilleurs prédicteurs pour ramifier l'arbre, ce qui devrait permettre d'éviter le sur-apprentissage.

Maintenant, je veux alimenter les prédicteurs par portions et voir ce qui se passe, car le modèle a de toute façon un principe d'arbre gourmand et cela l'empêche parfois d'obtenir de meilleurs résultats.

 
Aleksey Vyazmikin:

Catbust utilise trois échantillons - l'un est le test, sur lequel il apprend, le second sert à tester l'apprentissage de chaque modèle et à sélectionner le meilleur modèle, qui a été obtenu au cours du processus d'apprentissage et s'est avéré stable sur les données de test, et le troisième est l'échantillon de test, qui est marqué par le fait que le modèle sélectionné a été entraîné. Puisqu'il peut en fait apprendre très bien sur l'échantillon d'entraînement, il n'est pas logique de comparer les résultats sur l'échantillon d'essai avec l'échantillon d'entraînement, mais le test avec l'échantillon d'examen le fait. Mais comme je gérais tout cela à la main dans Excel, je n'étais pas assez fort pour vérifier également les résultats de l'échantillon test. Ces données sont bien sûr nécessaires pour évaluer le modèle, et doivent être prises en compte et analysées, mais le processus n'est pas encore automatisé (j'ai juste commencé à écrire un script pour préparer la configuration pour le traitement - loin de l'analyse) et je ne peux pas parler de chiffres.

Je n'ai pas remarqué de méthodes particulières pour lutter contre le surentraînement, si ce n'est des méthodes permettant d'arrêter l'entraînement en cas de très bonnes lectures... L'algorithme lui-même comporte une part d'aléatoire qui peut être désactivée - il permet également de ne pas choisir les meilleurs prédicteurs pour ramifier l'arbre, ce qui devrait permettre d'éviter le sur-apprentissage.

Je veux maintenant introduire des portions de prédicteurs, et voir ce qui se passe, car le modèle a toujours un principe de construction d'arbre avide et cela l'empêche parfois d'obtenir de meilleurs résultats.

Oui, c'est exactement ce qui est exaspérant, les éternelles intégrations qui prennent plus de temps que le développement des TC. J'aimerais aussi travailler sur python, mais pas encore le temps.

 
Maxim Dmitrievsky:

C'est ce qui est si ennuyeux, les éternelles intégrations qui prennent plus de temps que le développement du TC. J'aimerais aussi faire un peu de python, mais je n'ai pas encore le temps.

Je veux l'utiliser avec MT5 car je ne travaille pas avec python, j'aime que ketbust ait une version console.

 
Aleksey Vyazmikin:

Je ne suis pas avec python, j'ai aimé que ketbust ait une version console, je veux rendre cette version compatible avec MT5.

Vous pouvez utiliser des consoles, mais elles sont inconfortables.

 
Maxim Dmitrievsky:

presque tout le monde a des consoles, c'est gênant de travailler avec elles

Je ne savais pas, qui d'autre en a ?

Pourquoi pas pratique - il y aura un script dans MT5, où vous pourrez mettre en œuvre les réglages et l'énumération des paramètres - bien mieux qu'avec du code Python ou R pur.

Catbust est capable de travailler avec des fermes graphiques, ce qui a également attiré mon attention.

 
Aleksey Vyazmikin:

Je ne savais pas, qui d'autre l'a exactement ?

Pourquoi pas pratique - il y aura un script sur MT5, où vous pourrez implémenter les réglages et l'énumération des paramètres - de toute façon, c'est mieux qu'avec du code Python ou R pur.

Catbust sait travailler avec les fermes grpf, ce qui a également retenu mon attention.

toutes les bibliothèques ont le mbo, celui-là c'est juste les libs sur les pros.

pas à l'aise avec le MO dans les langages de bas niveau, en particulier la recherche, et cela prend beaucoup de temps