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

 
J'ai une question pour Yuri. Lorsque je calcule les résultats d'un modèle trinaire, lorsque j'entre manuellement les données, les résultats affichent parfois un symbole de tiret. C'est-à-dire que j'ai 0, 1 et un tiret. Alors, que signifie un tiret ?
 

J'ai essayé de classer le zigzag, oui, mais pas le point pivot, mais la tendance entière que le zigzag montre, le résultat est 0 si la tendance actuelle du zz est à la baisse, et 1 si la tendance est à la hausse. Les tendances zz sont assez déséquilibrées, mais ce n'est pas pour cela que je les ai abandonnées. Ce que je n'aime pas, c'est que le modèle nécessite une très grande précision. Si le modèle commet une ou deux erreurs dans la tendance et inverse une transaction au mauvais moment, ne serait-ce que d'une seule barre, cela entraîne généralement des pertes supplémentaires et le paiement d'une commission à chaque fois avec le spread. Le modèle ne sera rentable que s'il ouvre la transaction, attend la fin de la tendance et effectue un retournement. Sans une seule erreur dans chaque tendance.

S'il prédit la prochaine barre plutôt que la tendance, alors chaque erreur se traduira par une perte d'argent moindre.


Je ne fais pas d'équilibrage, quand on prévoit la prochaine barre, la dispersion des classes est minimale, je ne pense pas que +-10% d'une classe influencera beaucoup les résultats.

Dans l'article, il est écrit que l'équilibrage peut être remplacé par une estimation correcte du modèle (F-measure ou R-Precision). Il s'agit de l'équivalent russe de l'article que SanSanych a lié plus tôt.

http://bazhenov.me/blog/2012/07/21/classification-performance-evaluation.html

...

Toutefois, cette métrique [fidélité] présente une particularité dont il faut tenir compte. Il donne à tous les documents le même poids, ce qui peut être incorrect si la distribution des documents dans l'ensemble d'apprentissage est décalée vers une ou plusieurs classes. Dans ce cas, le classificateur dispose de plus d'informations sur ces classes et, par conséquent, au sein de ces classes, il prendra des décisions plus adéquates. En pratique, cela conduit à une situation où vous avez, disons, une précision de 80 %, mais au sein d'une classe particulière, le classificateur travaille hors de toute proportion, ne définissant même pas correctement un tiers des documents.

Une façon de sortir de cette situation consiste à entraîner le classificateur sur un corpus de documents équilibré et spécialement formé. L'inconvénient de cette solution est qu'elle prive le classificateur d'informations sur la fréquence relative des documents. Ces informations, toutes choses égales par ailleurs, peuvent s'avérer très utiles pour prendre la bonne décision.

Une autre solution consiste à modifier l'approche de l'évaluation formelle de la qualité.

Exactitude et exhaustivité

La précision et le rappel sont des mesures utilisées pour évaluer la plupart des algorithmes d'extraction d'informations. Elles sont parfois utilisées seules, parfois comme base pour des mesures dérivées telles que la F-mesure ou la R-précision. L'essence de l'exactitude et de l'exhaustivité est très simple.

La précision d'un système au sein d'une classe est la proportion de documents qui appartiennent réellement à cette classe, par rapport à l'ensemble des documents que le système a affectés à cette classe. La complétude est la proportion de documents qui appartiennent à la classe trouvée par le classificateur par rapport à tous les documents de cette classe dans l'échantillon test.

....

Mesure F

Il est clair que plus la précision et l'exhaustivité sont grandes, mieux c'est. Mais dans la vie réelle, il n'est pas possible d'obtenir simultanément une précision et une exhaustivité maximales, et il faut trouver un équilibre. C'est pourquoi nous aimerions disposer d'une sorte de métrique qui combine des informations sur la précision et l'exhaustivité de notre algorithme. Dans ce cas, il sera plus facile pour nous de décider quelle implémentation lancer en production (celle qui en a le plus est la meilleure). Il s'agit exactement d'une telle métrique - F-mesure1.

Lamesure F estune moyenne harmoniqueentre la précision et l'exhaustivité. Elle tend vers zéro si la précision ou l'exhaustivité tend vers zéro.


Il y a plusieurs graphiques intéressants dans l'article.

 
Dr. Trader:

J'ai essayé de classer le zigzag, oui, mais pas le point pivot, mais la tendance entière que le zigzag montre, le résultat est 0 si la tendance actuelle du zz est à la baisse, et 1 si la tendance est à la hausse. Les tendances zz sont assez déséquilibrées, mais ce n'est pas pour cela que je les ai abandonnées. Ce que je n'aime pas, c'est que le modèle nécessite une très grande précision. Si le modèle fait une ou deux erreurs dans la tendance et tourne une transaction au mauvais moment, même si ce n'est que pour une seule barre, cela entraîne généralement des pertes supplémentaires, plus le paiement d'une commission à chaque fois avec le spread. Le modèle ne sera rentable que s'il ouvre la transaction, attend la fin de la tendance et effectue un retournement. Sans une seule erreur dans chaque tendance.

S'il prédit la prochaine barre plutôt que la tendance, alors chaque erreur se traduira par une perte d'argent moindre.


Je ne fais pas d'équilibrage, pour la prochaine prédiction de barre, la répartition des classes est minimale et je ne pense pas que +-10% d'une classe influencera beaucoup le résultat.

Dans l'article, il est écrit que l'équilibrage peut être remplacé par une estimation correcte du modèle (F-measure ou R-Precision). Il s'agit de l'équivalent russe de l'article que SanSanych a lié plus tôt.

http://bazhenov.me/blog/2012/07/21/classification-performance-evaluation.html

etc., l'article contient plusieurs graphiques intéressants.

Un petit conseil. Tout système conduit à un seul phénomène. C'est un signal ! !! L'ensemble des conditions conduit à un fait accompli, qui est le point de décision. Ainsi, tout système, aussi complexe soit-il, conduit à des signaux d'achat ou de vente. Il est donc recommandé de les classer. Croisement des wagons. Le croisement s'est produit, il y a un signal d'achat, le croisement dans la direction opposée, il y a un signal de vente, et il n'y en a pas de troisième. Ainsi, pour une classification correcte, nous devrions le faire séparément pour la vente et séparément pour l'achat. Ainsi, nous pouvons doubler un intervalle de formation et garder le niveau de généralisation. Au début, mes modèles dépassaient rarement 40-50% de généralisation, mais après avoir compris ce qu'il fallait faire avec les données. Quel est l'intérêt du modèle obtenu après la classification. Sur les mêmes données, j'obtiens maintenant des modèles qui ne sont pas inférieurs à 70%, en moyenne 80-90%, et à l'avenir, sur des données inconnues, les erreurs sont d'environ 1-2 sur 10-12. C'est bien suffisant pour gagner de l'argent. Mais je prends 30% de l'intervalle de formation comme intervalle de confiance. Par exemple, je prends 100 signaux d'achat et 100 signaux de vente et dans 30 ou 50 signaux, vous pouvez travailler sans ré-entraîner le modèle. Dans les premières versions du prédicteur, 6 entrées étaient optimisées en environ 40 minutes, ce qui n'était pas très pratique, et maintenant il fait 9 entrées en 10 minutes. Et cela n'a fait qu'accroître la qualité du modèle. Le problème est maintenant de savoir où trouver autant d'entrées. Mais nous ne sommes pas dans le noir. Nous avons encore quelque chose à offrir au prédicteur :-)
 
Mihail Marchukajtes:
J'ai une question pour Yuri. Lorsque je calcule les résultats d'un modèle trinaire, lorsque j'entre manuellement les données, les résultats affichent parfois un symbole de tiret. C'est-à-dire que j'ai 0, 1 et un tiret. C'est ce que signifie un tiret ?

Comme la célèbre phrase socratique "Je sais ce que je ne sais pas". Le classificateur ternaire, qui répond par un moins, indique que dans l'ensemble d'apprentissage, il n'y avait pas d'exemples similaires au motif à classer et qu'il ne peut donc pas l'attribuer sans ambiguïté à une classe quelconque, c'est-à-dire qu'il ne peut pas donner une réponse affirmative au motif présenté. Il admet honnêtement qu'il manque de compétences dans certains domaines de connaissance, plutôt que d'essayer de répondre à des questions dont il ne connaît pas les réponses avec un air effronté.

 
Yury Reshetov:

C'est la même chose que la célèbre phrase socratique "Je sais ce que je ne sais pas". Un classificateur ternaire qui répond par un moins nous indique qu'il n'y avait pas d'exemples dans l'échantillon d'apprentissage similaires au motif à classer, il ne peut donc pas le classer sans ambiguïté, c'est-à-dire qu'il ne peut pas donner une réponse affirmative au motif présenté.

Hm. Dites-moi, s'il y a une possibilité dans un futur proche de décharger un modèle ternaire dans un fichier, afin de l'utiliser plus tard dans MKUL ? Aussi bien que binaire, mais lorsque vous l'entrez à la main, il y a une chance de faire une erreur et tout ça......
 
Mihail Marchukajtes:
Hm. Eh bien, je vois... Dites-moi, y a-t-il une possibilité dans un futur proche de télécharger un modèle ternaire dans un fichier, afin de pouvoir l'utiliser dans MKUL plus tard ? En plus du binaire, et lorsque vous l'entrez à la main, il y a une chance de faire une erreur et tout ça......
Je suis en train de travailler dessus. Le générateur de code n'est pas encore terminé et pour le moment, il ne donne les sources que d'un seul des classificateurs binaires et non de l'ensemble du classificateur ternaire.
 
Yury Reshetov:

La même chose que la célèbre phrase de Socrate "Je sais ce que je ne sais pas". Le classificateur ternaire, répondant par un moins, dit que dans l'échantillon d'entraînement il n'y avait pas d'exemples similaires au motif à classer, donc il ne peut pas l'attribuer sans ambiguïté à une classe quelconque, c'est-à-dire qu'il ne peut pas donner une réponse affirmative au motif présenté. Admettre honnêtement l'absence de ses compétences dans certains domaines de connaissance, au lieu d'essayer de répondre positivement avec un visage suffisant à des questions dont il ne connaît pas les réponses.

D'après la photo ci-jointe, ai-je bien compris ? À gauche, un classificateur binaire ; à droite, un classificateur ternaire (la zone blanche est "moins").

Si oui, je pense que l'idée est bonne, pour une raison quelconque je ne l'ai pas vu avant, pouvez-vous s'il vous plaît conseiller quelques articles sur le classificateur ternaire ?



J'ai fini ça plus tard :

Intuitivement, cette tâche est assez simple. Supposons qu'il y ait 2 prédicteurs (X et Y), cela signifie que nous devons travailler dans un espace bidimensionnel (comme sur les images ci-dessus). Ensuite, nous devons entourer un tel espace bidimensionnel qui inclut toutes les classes "acheter" (remplissage bleu). Puis, entourez un deuxième espace qui comprend toutes les classes de "vente" (en rouge). Les deux espaces clôturés ne doivent pas se chevaucher. Pour classer de nouvelles données, il suffit de regarder dans quel espace clôturé se trouve le point souhaité. S'il n'arrive à rien (en blanc sur l'image de droite) - alors il est clair que le modèle ne peut rien dire sur ce point et que la transaction ne doit pas être exécutée à ce moment-là.

Avec 3 prédicteurs, il y aura un espace tridimensionnel où les classes seront entourées de certaines formes volumétriques tridimensionnelles. Etc, plus il y a de prédicteurs, plus les formes sont multidimensionnelles.

De tels modèles existent-ils ? Habituellement, les classificateurs trouvent une sorte d'hyperplan dans l'espace qui sépare les classes. Mais ici nous avons besoin de deux hyperfigures fermées.

 

Mihail Marchukajtes:

...

Dans les premières versions du prédicteur, 6 entrées étaient optimisées en 40 minutes environ, ce qui était extrêmement gênant, mais maintenant 9 entrées le font en 10 minutes. Et cela n'a fait qu'augmenter la qualité du modèle. Le problème est maintenant de savoir où trouver autant d'entrées. Mais nous ne sommes pas dans le noir. Nous avons encore quelque chose à offrir au prédicteur :-)
Oui, moi aussi j'essaie de classer strictement achat/vente. Mais comment avez-vous obtenu les 6 entrées originales, les avez-vous simplement prises dans une stratégie connue ? Des apports adéquats sont l'une des choses les plus importantes. Au contraire, j'ai des milliers d'entrées (prix et indicateurs sur une centaine de barres) et j'ai besoin de les trier pour n'en garder que quelques douzaines, car avec autant d'entrées, tout modèle est sur-entraîné.
 
Dr. Trader:

À en juger par la photo ci-jointe, ai-je bien compris ?


Classificateur binaire à gauche ; classificateur ternaire à droite (la zone blanche est "moins")

Si c'est un primitif pour les nuls, ça fera l'affaire comme aide visuelle.

Dr. Trader:
Si c'est le cas, je pense que c'est une bonne idée, pour une raison quelconque je ne l'ai pas rencontré avant, pouvez-vous s'il vous plaît conseiller quelques articles sur le classificateur ternaire ?

Si google n'est pas interdit, vous pouvez faire une recherche par la phrase "ternary classifier machine learning".

 
Yury Reshetov:

Si vous n'êtes pas banni de Google, vous pouvez rechercher "ternary classifier machine learning".

En d'autres termes, "cherchez le premier lien google qui mène à mon site web" :)

Je l'ai trouvé, vous avez un comité de deux modèles, ce n'est pas ce que j'ai compris et écrit plus haut.