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

 
Aleksey Vyazmikin:

Un dicton intéressant. Cependant, les arbres suivants sont construits afin de réduire l'erreur de la composition de l'arbre existant, mais je ne comprends pas pourquoi ils n'utilisent pas l'échantillonnage alors, dites-moi plus en détail, peut-être que je ne comprends pas quelque chose de profond....

Vous n'êtes pas là par hasard que vous examinez les feuilles de boosting des arbres avec un nombre > 1 en leur fournissant des données brutes ? Si oui, le résultat devrait être aléatoire, car ces arbres n'ont pas appris à partir des données d'entrée, mais à partir d'erreurs. Vous résolvez donc un problème que l'arbre et ses feuilles n'ont pas été formés à résoudre.
Si ces arbres proviennent d'une forêt aléatoire, ils sont tous formés sur des données brutes et vous pouvez les utiliser (mais cela ne sert à rien, car un seul arbre est nettement inférieur à la forêt en termes d'erreur). Dans le boosting - non, parce qu'un arbre sans tous les autres arbres n'a aucun sens à considérer.

 
elibrarius:

Y a-t-il par hasard des feuilles d'arbres de boosting avec un nombre > 1, en leur fournissant des données d'entrée ? Si c'est le cas, le résultat devrait être aléatoire, car ces arbres n'ont pas été formés sur des données d'entrée, mais sur des erreurs. Vous résolvez donc un problème que l'arbre et ses feuilles n'ont pas été formés à résoudre.
Si ces arbres proviennent d'une forêt aléatoire, ils sont tous formés sur des données brutes et vous pouvez les utiliser (mais cela ne sert à rien, car un seul arbre est nettement inférieur à la forêt en termes d'erreur). Dans le boosting - non, car un arbre sans tous les autres n'a aucun sens à considérer.

Cela découle donc de la définition du boosting comme une méthode séquentielle d'amélioration où chaque algorithme successif cherche à compenser les défauts de composition des précédents.
 
elibrarius:

Oui, afin de réduire l'erreur, ils prennent l'erreur comme cible, puis la soustraient.

Voici l'algorithme pour le boosting, je l'étudie moi-même https://neurohive.io/ru/osnovy-data-science/gradientyj-busting/


Je comprends que c'est du boosting classique. Peut-être que Catbust a inventé quelque chose de son cru...

J'ai regardé l'article. Oui, il me semble qu'un arbre est construit, appliqué à l'échantillon et que le delta entre les cibles réelles et les cibles prédites est calculé, puis l'arbre suivant est construit pour réduire l'erreur, c'est-à-dire pour prédire le delta. Mais, en fait, de nouveaux arbres sont construits de la même manière sur le même échantillon et de nouvelles connexions sont formées, c'est-à-dire qu'en fait, seule la cible change. Mais une telle approche donne l'occasion de trouver de nouvelles connexions (feuilles) qui ne seront pas évidentes dans une forêt aléatoire, et ces connexions dépendent du premier arbre, et il dépend de l'échantillon (ce qui n'est pas nouveau), mais les arbres suivants dans CatBoost seront construits soit au nombre d'itérations fixé, soit au signe d'arrêt, et ce signe est défini sur un échantillon de test. Le signe est tout indicateur estimé de la qualité du modèle (il existe une liste de différents indicateurs). Je sélectionne l'arrêt de l'entraînement sur l'indicateur, car j'aimerais obtenir une amélioration sur deux échantillons à la fois, et si c'est seulement sur l'échantillon d'entraînement, c'est clairement du sur-entraînement. C'est la raison pour laquelle on s'interroge sur la taille de l'échantillon comme affectant directement l'apprentissage, c'est-à-dire que si même la taille de l'échantillon de formation est constante, la taille de l'échantillon de test affectera l'apprentissage.


elibrarius:

Avez-vous par hasard les feuilles de boosting des arbres avec un nombre > 1, en leur fournissant les données brutes ? Si c'est le cas, le résultat devrait être aléatoire, car ces arbres n'ont pas appris à partir de données brutes, mais à partir d'erreurs. Vous résolvez donc un problème que l'arbre et ses feuilles n'ont pas été formés à résoudre.
Si ces arbres proviennent d'une forêt aléatoire, ils sont tous formés sur des données brutes et vous pouvez les utiliser (mais cela ne sert à rien, car un seul arbre est nettement inférieur à la forêt en termes d'erreur). Dans le boosting - non, car un arbre sans tous les autres n'a aucun sens à considérer.

Bon point, je suis juste en train de préparer une plateforme pour étudier les feuilles (dans catbust c'est plus comme des arbres binaires). Le résultat peut être négligeable s'il y a un très grand nombre d'arbres, mais il peut y avoir des liens décents, même en théorie, si le premier arbre avait une grande erreur dans sa feuille, et que le quatrième arbre corrige cette erreur dans sa feuille, alors en fait le nouveau lien aura un sens logique et classera lui-même correctement l'échantillon. Techniquement, catbust a un tableau avec le résultat de la réponse de chaque arbre binaire (feuille), puis ces réponses sont additionnées, mais l'astuce est que par ligne d'échantillonnage, seule une petite fraction des arbres binaires (feuilles) donne une réponse. Par conséquent, il est théoriquement possible de supprimer (mettre à zéro) les arbres binaires (feuilles), qui ont une capacité prédictive très faible, parce qu'ils sont soit des arbres avec une erreur initiale, soit de petits ajustements (sur le fait du réentraînement) et de ne laisser que les feuilles avec des valeurs significatives. L'autre direction consiste à utiliser ces connexions pour estimer l'importance des prédicteurs, lorsqu'il y a un poids important dans le tableau final, ces connexions et donc les prédicteurs sont significatifs, les autres sont éliminés par seuil comme étant moins significatifs. Si nous effectuons un tel tri, le modèle peut être entraîné d'abord sur les prédicteurs les plus significatifs, puis sur les prédicteurs moins significatifs, ce qui devrait améliorer le résultat de l'entraînement, car les prédicteurs moins significatifs n'empêcheront pas la construction de relations plus stables, mais ne feront que les compléter lorsque cela est possible.

En fin de compte, les arbres binaires inutiles ne présentent aucun intérêt pour l'adaptation, tandis que les micro-analyses (2 ou 3 arbres binaires (feuilles)) avec un poids élevé commun ou les arbres binaires uniques sont également très importants et peuvent être utilisés séparément pour la classification.

Malheureusement, je n'ai pas de mécanisme pour extraire les arbres binaires individuels (au sens normal de feuille) et les convertir en une règle lisible normale, donc tout est juste en théorie, mais je suis ouvert à la coopération.

 
Aleksey Vyazmikin:

Malheureusement, je ne dispose pas actuellement d'un mécanisme permettant d'extraire des arbres binaires individuels (dans le sens normal de feuilles) et de les convertir en une règle lisible normale, donc tout n'est encore qu'en théorie, mais je suis ouvert à la coopération.

Et comment tirez-vous le modèle dans mt5 ? J'aimerais l'échanger ou l'utiliser dans le testeur. Je travaille dessus depuis longtemps mais je n'ai aucune idée, je devrais soit utiliser Python et le connecter avec mt5 ou utiliser le binaire katbust.

 
Maxim Dmitrievsky:

Comment dessiner le modèle dans mt5 ? Ce qu'il faut échanger là-dessus ou l'exécuter dans le testeur. Je réfléchis, quelle serait la meilleure façon de le construire, je n'ai pas encore décidé : passer à Python et le connecter à mt5 ou utiliser le binaire katbust.

Je vais convertir un modèle pour C++ en MQL5 - en fait, seuls les tableaux y sont pris, et il existe un interprète de ce modèle en MQL (pas mon code). Ainsi, les modèles sont chargés dans l'Expert Advisor et je peux maintenant charger des centaines de modèles par le biais du fichier et les regarder dans le terminal, y compris l'exécution par l'optimiseur.

 
Aleksey Vyazmikin:

J'ai converti un modèle pour C++ en MQL5 - en fait, seuls les tableaux y sont pris, et il existe un interprète de ce modèle en MQL (le code n'est pas de moi). En conséquence, les modèles sont chargés dans Expert Advisor et je peux maintenant charger des centaines de modèles par le biais d'un fichier et les observer dans le terminal, y compris les faire passer par l'optimiseur.

Eh bien, voici un article à écrire avec un certain cadre et une idée (l'idée ne doit pas être moins que l'espace), et l'aide nécessaire, ou la coopérative ce qui est là

Je comprends que la communauté est divisée : certains se retirent, d'autres généralisent. Moi, par exemple, je ne suis pas d'accord avec cette approche, peut-être n'ai-je pas tout à fait saisi l'idée...
 
Maxim Dmitrievsky:

voici un article à écrire avec un cadre et une idée (l'idée ne doit pas être moins que cosmique), et l'aide nécessaire, ou la cooptation de ce qui existe.

Je n'ai pas de connaissances théoriques approfondies pour les articles, j'invente des concepts différents et je change les interprétations de phénomènes établis - ce n'est pas une approche académique.

Je pense qu'un interprète du modèle serait intéressant, mais je ne peux pas le publier car le code n'est pas écrit par moi.

Et tout ce qui reste en théorie, avec un code qui ne peut pas être appliqué (à cause des classes fermées), je ne pense pas que ce soit intéressant. Et le processus de création et de sélection des modèles, je pense que tout est résolu, et il n'y a aucun intérêt.

 
Maxim Dmitrievsky:

Je comprends que la communauté soit divisée : certains se retirent, d'autres généralisent. Pour ma part, je ne suis pas d'accord avec cette approche, mais je n'ai peut-être pas encore tout à fait saisi l'idée.

Et je ne connais pas la communauté, c'est-à-dire que je ne sais pas comment les autres personnes dans d'autres domaines font ?

L'extraction de données me semble logique, car je cherche un modèle de comportement humain (ou un algorithme) à l'aide du MO, il peut y avoir de nombreux modèles de comportement de ce type et ils peuvent être indépendants, il est donc logique d'en extraire autant que possible, car il est impossible de les généraliser tous ensemble. Et pour quelqu'un d'autre, le marché est quelque chose d'entier, le résultat du travail d'un esprit collectif, une sorte d'organe de vote sans règles. Apparemment, pour cette situation, ils cherchent un modèle décrivant le comportement du marché comme un organisme distinct.

 
Aleksey Vyazmikin:

Si le premier arbre comportait une erreur importante dans sa propre feuille et que le quatrième arbre a corrigé cette erreur dans sa propre feuille, alors le nouveau lien aura un sens logique et classera lui-même correctement l'échantillon.

Je n'en suis pas sûr, le 4ème arbre corrige les erreurs du premier avec ses feuilles. Je pense qu'ils n'ont de sens que par paire. Mais je peux me tromper. Puisque je n'ai pas expérimenté de telles choses.

 
elibrarius:

Je n'en suis pas sûr, le 4ème arbre corrige les erreurs du premier avec ses feuilles. Je pense que c'est seulement par paire qu'ils ont un sens. Mais je peux me tromper. Je n'ai jamais expérimenté ce genre de choses.

Si nous sommes très primitifs, le premier arbre n'a aucune réponse à l'échantillon, il renvoie zéro, tandis que le quatrième arbre a cette réponse et considère la "probabilité" 0,6 - techniquement, nous avons corrigé l'erreur du premier arbre, mais en fait nous avons révélé une connexion qui n'existait pas du tout auparavant. Même si nous supposons que tous les arbres partagent l'ensemble de l'échantillon (ce qui n'est apparemment pas le cas), qu'il soit de 0,1 au lieu de zéro, et que l'arbre suivant ait 0,5, le même effet se produit ici. Là, la probabilité n'est pas exactement la probabilité, les valeurs du tableau sont alors converties en quelque chose de similaire à la probabilité seulement après l'addition de toutes les valeurs des arbres binaires activés.