Y a-t-il un modèle dans ce chaos ? Essayons de le trouver ! Apprentissage automatique sur l'exemple d'un échantillon spécifique. - page 20

 
Aleksey Vyazmikin #:

Comment interpréter cela ? Il y a un modèle, mais vous ne le trouverez pas ? Ou bien le modèle se trouve-t-il dans le hasard ?

Il suffit de lire attentivement ce qui est dit.

Il n'y a rien entre les lignes, c'est textuel et très clair.

Vous avez formulé pour la deuxième fois une question qui ne correspond pas à ce que j'ai écrit.

 
elibrarius #:

Comment faire sans cupidité ? Calculez-en un autre pour chaque fractionnement et sélectionnez une paire à la fois, mais dans votre cas, le temps de calcul sera multiplié par plus de 5 000. Il est plus facile de faire la moyenne d'une centaine de modèles.

Je pense plutôt à la qualité, c'est-à-dire à des critères d'évaluation supplémentaires.

Une autre approche - des pondérations pour les prédicteurs qui garantiront la cohérence de leur application - n'est pas un cadre arborescent clair. Il s'agit en quelque sorte de "définir d'abord le temps", puis d'"estimer la volatilité" et la "position actuelle du prix".

elibrarius #:

Pour réduire l'influence du hasard, c'est correct. Sinon, il faut faire la moyenne de 20 à 100 modèles comme dans la forêt.

Là, ils ont une autre astuce, et je ne comprends pas tout à fait le processus - au début, ils construisent un arbre sur un échantillon tronqué (si ce n'est pas forcé sur l'échantillon entier), puis comptent les résultats dans les feuilles sur l'ensemble de l'échantillon. Apparemment, les divisions se font sur le sous-échantillon, et les poids dans les feuilles sont déjà sur l'échantillon entier.

elibrarius #:

En d'autres termes, il s'avère que les arbres d'affinage ne sont peut-être pas les meilleurs, mais qu'ils sont aléatoirement pires.

D'où la dispersion des modèles, de drainant à rentable.

Nah, l'entraînement améliore toujours le résultat à chaque itération et les modèles de l'échantillon d'entraînement sont toujours positifs. Bien qu'avec un écart financier.

elibrarius #:

A en juger par les graphiques de distribution, il y a plus de modèles drainants, c'est-à-dire que si nous faisons la moyenne, le résultat moyen sera non rentable.

Oui, mais il s'agit plutôt d'un cas particulier.

elibrarius #:

Peut-être random-strength = 0 ? Il faut espérer que les changements de semences cesseront de modifier le modèle après cela. Peut-être créer un modèle avec de meilleurs arbres de raffinement plutôt que de mauvais arbres aléatoires. Si le meilleur modèle sera un drain, alors la recherche sur ces données de 10000 modèles aléatoires au hasard le meilleur est le chemin vers un drain sur le réel.

J'ai essayé avec zéro, mais je comprends que lescore des arbres est devenu le même pour tous, et donc que les mêmes ont été choisis au hasard :)). Ou encore quelque part on utilise un générateur de nombres aléatoires.

elibrarius #:

Ou encore faire une moyenne de plusieurs modèles choisis au hasard, comme dans la forêt. Parce que le meilleur peut être réentraîné.

Par exemple, sélectionner des modèles à partir de trois échantillons et en faire la moyenne ? Peut-être - je ne veux pas encore passer à des ensembles de modèles, je dois encore examiner la possibilité d'améliorer la construction des modèles eux-mêmes.

 
Aleksey Vyazmikin #:

Une autre approche consiste à utiliser des poids pour les prédicteurs qui garantiront la cohérence de leur application - et non un cadre arborescent clair. Cela revient à dire "définissons d'abord le temps", puis "estimons la volatilité" et "la position actuelle du prix".

J'ai essayé de le faire en divisant d'abord par le jour de la semaine et/ou l'heure du jour. Les modèles se sont révélés moins bons que s'il avait trouvé les premières divisions par lui-même. Vous pouvez aussi le faire - diviser l'échantillon en 5 parties par jour de la semaine et former un modèle pour chaque jour. Ou une heure, ou ce que vous voulez.

Aleksey Vyazmikin #:

Nan, l'entraînement améliore toujours le résultat à chaque itération et les modèles de l'échantillon d'entraînement sont toujours dans le positif. Bien qu'avec un écart financier.

Il est clair qu'il y aura une amélioration, mais pas la meilleure, mais avec une randomisation du score.
Je ne regarde pas du tout Trein, pour ne pas me distraire. Il sera toujours bon.

Aleksey Vyazmikin #: J'ai essayé avec zéro, mais j'ai compris que lescore des arbres était le même pour tous, ce qui signifie qu'ils ont été choisis parmi les mêmes au hasard :)) Ou alors un générateur de nombres aléatoires est utilisé quelque part.

Si le score est devenu sans randomisation, et que les résultats sont toujours différents, cela signifie que la randomisation est utilisée ailleurs.

Aleksey Vyazmikin #: C'est-à-dire sélectionner les modèles par trois échantillons et en faire la moyenne ? Peut-être - je ne veux pas encore passer à des ensembles de modèles, je dois encore étudier la possibilité d'améliorer la construction des modèles eux-mêmes.

Il ne s'agit pas de sélectionner, mais de prendre tous les modèles générés de manière aléatoire. Et en faire la moyenne. Comme dans une forêt. Là aussi, on fait la moyenne des arbres aléatoires. Mais vous pouvez expérimenter avec les meilleurs arbres aléatoires.

 
elibrarius #:

J'ai essayé ceci - j'ai divisé le premier par le jour de la semaine et/ou l'heure du jour. Les modèles étaient moins bons que s'ils trouvaient les premières divisions par elles-mêmes. Vous pouvez aussi le faire - diviser l'échantillon en 5 parties par jour de la semaine et former un modèle pour chaque jour. Ou une heure, ou ce que vous voulez.

Oui, j'ai cette option :) J'ai réussi à obtenir des résultats intéressants sur l'un des prédicteurs et à élaborer une stratégie de signalisation pour celui-ci.

Cependant, je parle d'autre chose ici, de la priorité de sélection des prédicteurs par le modèle pendant l'entraînement.

elibrarius #:

Si Score est devenu sans randomisation et que les résultats sont toujours différents, cela signifie que la randomisation est utilisée ailleurs.

Manifestement :) Le développeur est toujours silencieux à ce sujet.

elibrarius #:

Pas le culling - mais prendre tous les résultats générés aléatoirement dans une rangée. Et en faire la moyenne. Comme dans une forêt. Là aussi, on fait la moyenne des arbres aléatoires. Mais vous pouvez expérimenter avec les meilleurs arbres aléatoires.

De telles choses peuvent être faites avec un grand rappel, ou en pré-groupant les modèles par similarité des points de réponse à une classe positive, sinon il y aura toujours une recommandation négative.

 

J'ai réduit l'échantillon de la dernière expérience - avec les prédicteurs que j'ai sélectionnés précédemment - j'ai supprimé deux années 2014-2015 de l'échantillon d'entraînement.

Si la dernière fois il y avait 208 modèles avec des bénéfices supérieurs à 3000 dans l'échantillon de l'examen, il y en a maintenant 277. S'agit-il d'une coïncidence ou les échantillons sont-ils devenus plus similaires ?

En passant, le solde de profit moyen sur l'échantillon de test la dernière fois était de 982 points et sur l'échantillon tronqué était de 2115, mais sur l'examen il est presque inchangé -1114 vs -1214.


Avez-vous une idée de la manière dont vous pourriez améliorer le résultat ?

 
Bonjour, pouvez-vous poster les fichiers du premier message, je veux aussi essayer une idée.
 
Aleksey Vyazmikin #:

Si la dernière fois il y avait 208 modèles avec un bénéfice supérieur à 3000 dans l'échantillon d'examen, il y en a maintenant 277. S'agit-il d'une coïncidence ou les échantillons sont-ils devenus plus similaires ?

Vous êtes extrêmement dépendant de Seed, c'est-à-dire des nouvelles données. Dans les données où il y a des modèles, l'image serait comme sur la piste : tout en + avec de petites déviations.
Essayez de changer la graine initiale (essayez plusieurs variantes). Si le nombre de motifs réussis varie autant, c'est qu'il s'agit d'un hasard, de même que la séquence des HNC lorsque l'on change la grainea.

Aleksey Vyazmikin #:

Au fait, le solde moyen des bénéfices sur l'échantillon des modèles de test de la dernière étape est de 982 points, et sur l'échantillon tronqué il est de 2115, mais sur l'examen il est presque inchangé -1114 vs -1214.

Il est étrange que la moyenne sur le test soit > 0. Peut-être voulez-vous dire traine ? Le test ne semble pas participer à l'apprentissage ou y participe indirectement, en choisissant un stagiaire.

Aleksey Vyazmikin #:

Des idées pour améliorer le résultat ?

Il est très probable que le modèle soit sur-entraîné ou sous-entraîné. Et la dernière option - il n'y a pas de modèle.
S'il est sur-entraîné, essayez de réduire le nombre d'arbres à 1. S'il est sous-entraîné, vous pouvez augmenter la profondeur des arbres.
Vous avez probablement déjà essayé la variante avec plus d'arbres.
L'absence de motifs est plus difficile. Si vous ne les avez pas trouvés avec plus de 5000 prédicteurs, je ne sais même pas comment les chercher autrement. Je ne sais pas non plus comment vous avez trouvé ces plus de 5000 prédicteurs. Je n'ai pas encore creusé dans cette direction. Cela prend beaucoup plus de temps à calculer, mais je suppose que je vais devoir le faire, puisque c'est aussi environ 50/50 sur les OOS.

 

D'ailleurs, construisez-vous la ligne d'équilibre avec le temps sur l'axe horizontal ou simplement avec un pas régulier entre les transactions ? À en juger par les graphiques, c'est la seconde solution.

Voici un exemple :

Le graphique du haut comporte plus de 3 000 transactions, celui du bas plus de 600. Si vous les faites simplement avec un espacement égal, vous obtiendrez de belles tendances. Mais ici, vous pouvez voir que pendant 5 ans, le trading n'a duré que quelques jours et il n'y a pas de sens à créer un robot qui dormira pendant des mois/années. Vous n'aurez qu'à l'éteindre.

L'image est juste dans le thème des cygnes noirs et blancs. Comme vous pouvez le voir, MO les " mord " bien et s'y adapte, s'ils sont présents.
@fxsaber a également étudié cette question https://www.mql5.com/ru/blogs/post/749420
Je suis tout à fait d'accord avec lui pour dire qu'il est nécessaire de supprimer l'influence des cygnes blancs et des cygnes noirs.

Si, dans l'optimiseur, il est possible d'appliquer un critère personnalisé et de sélectionner d'une manière ou d'une autre d'autres options, dans MO, il n'existe que des options standard pour sélectionner les divisions et, ici, on ne peut que couper des morceaux de l'histoire. Le problème est que le moment du cygne blanc est inconnu avant la formation du modèle. Et si vous le supprimez, le modèle deviendra complètement différent et il pourrait y avoir son propre cygne blanc. Nous devons réfléchir et expérimenter...

Фильтр белых лебедей.
Фильтр белых лебедей.
  • www.mql5.com
В любом исследовании сначала идет подготовка исходных данных. На фин. рынках это почти всегда истории котировок. В зависимости от источника, они могут обладать определенными особенностями. Сегодня
 
RomFil #:
Bonjour, pouvez-vous poster les fichiers du premier post, je veux aussi essayer une idée.

Bonjour. Oui, j'essaierai de le poster aujourd'hui.

 
elibrarius #:

Vous avez une très forte dépendance à la graine, c'est-à-dire à la FGH sur les nouvelles données. Dans les données où il existe des motifs, l'image serait comme sur le plateau : tout en + avec de petites déviations.
Essayez de changer la graine initiale (essayez plusieurs variantes). Si le nombre de motifs réussis varie autant, c'est qu'il s'agit d'un hasard, de même que la séquence du HGC lorsque l'on change la grainea.

La graine de chaque modèle change séquentiellement de 1 à 10000 - c'est l'intérêt de générer des modèles différents. Que se passe-t-il si la graine n'est pas fixe et qu'elle est prélevée dans tout l'espace (ou comment elle est générée - c'est aussi une question) - je ne le sais pas - vous pouvez vérifier.

Sur quoi se fonde l'affirmation selon laquelle le résultat doit être similaire au test ? Je suppose que les échantillons ne sont pas homogènes - ils ne contiennent pas un nombre comparable d'exemples similaires, et je pense que les distributions de probabilité sur les quanta diffèrent quelque peu.

Oui, que le modèle soit construit par hasard - admettons, mais cela signifie-t-il qu'il ne décrit pas la régularité identifiée ?

elibrarius #:

Il est étrange que la moyenne du test se soit révélée > 0. Peut-être voulez-vous parler de la traînée ? Le test ne semble pas être impliqué dans l'apprentissage, ou l'est indirectement, de la sélection d'une traîne.

Il participe uniquement au contrôle de l'arrêt de la formation, c'est-à-dire que s'il n'y a pas d'amélioration sur le test pendant la formation sur le train, la formation s'arrête et les arbres sont supprimés jusqu'au point où il y a eu la dernière amélioration sur le modèle de test.

Il peut arriver qu'il n'y ait pas d'amélioration, mais que la détérioration ne soit pas forte, mais qu'il y ait des exemples plus généralisés sur l'échantillon de formation, et l'algorithme d'apprentissage indique qu'il faut arrêter dans ce cas. Si nous désactivons cette fonction, une autre question se pose : combien d'arbres doivent être utilisés dans le modèle ? Je pense à une autre option - nous formons un nombre fixe d'arbres, puis nous tronquons le modèle en utilisant l'échantillon de test, mais nous devrons calculer l'équilibre à chaque étape, ce qui est certainement coûteux.

Je pense maintenant qu'il serait bon d'arrêter la formation non pas sur un échantillon, mais sur un ensemble de sous-échantillons, ce qui permettrait de vérifier la persistance du modèle dans le temps.

elibrarius #:

Il est très probable que le modèle soit sur-entraîné ou sous-entraîné. Et la dernière option est qu'il n'y a pas de modèle.

S'il est sur-entraîné, essayez de réduire le nombre d'arbres à 1. S'il est sous-entraîné, vous pouvez augmenter la profondeur des arbres.
Vous devez avoir déjà essayé la variante avec un grand nombre d'arbres.
L'absence de motifs est plus difficile. Si vous ne les avez pas trouvés avec plus de 5000 prédicteurs, je ne sais même pas comment les chercher autrement. Je ne sais pas non plus comment vous avez trouvé ces plus de 5000 prédicteurs. Je n'ai pas encore creusé dans cette direction. Cela prend beaucoup plus de temps à calculer, mais je suppose que je vais devoir le faire, puisque c'est aussi environ 50/50 sur les OOS.

Apparemment, je n'ai pas indiqué clairement l'échantillon que j'ai utilisé - il s'agit du sixième (dernier) échantillon de l'expérience décrite ici, de sorte qu'il n'y a que 61 prédicteurs.

Comme je l'ai indiqué plus haut, les modèles ne sont pas entièrement entraînés, en ce sens qu'ils ne décrivent pas l'ensemble de l'échantillon, ce qui est généralement normal, car le marché évolue et toutes les combinaisons ne peuvent tout simplement pas être présentes et, à chaque échantillon ultérieur, il y en aura un nombre différent, avec éventuellement un résultat moyen différent. Nous ne travaillons pas avec un échantillon représentatif, nous ne pouvons donc pas nous attendre à une description complète - mon objectif est d'extraire quelques modèles stables.

En ce qui concerne les arbres, il existe un paramètre pour le taux d'apprentissage (--learning-rate), qui est lié au nombre d'arbres, c'est-à-dire que plus le taux est élevé, moins il faut d'arbres pour décrire l'échantillon. Ainsi, il s'avère que si vous augmentez le taux (0,3), le nombre de modèles qui passent le filtrage conditionnel est plus élevé, parfois plus de deux fois. Les dernières expériences ont été réalisées avec de tels paramètres et le nombre moyen d'arbres est de 10 pièces, tandis que leur profondeur est de 6 divisions. Les arbres en CB sont quelque peu différents - il y a une division sur tout le niveau d'un arbre symétrique, ce qui rend leur application plus rapide que la variante classique, mais ils sont moins informatifs un par un. Dans les dernières versions, vous pouvez utiliser les arbres classiques, mais je n'ai pas d'interprète pour leurs modèles dans MQL5, donc je ne les utilise pas, donc je ne suis pas contrarié.

En général, je peux ajouter plus de prédicteurs, car ils ne sont actuellement utilisés qu'avec 3 TF, à quelques exceptions près - je pense que quelques milliers de prédicteurs supplémentaires peuvent être ajoutés, mais il n'est pas certain qu'ils soient tous utilisés correctement lors de l'apprentissage, étant donné que 10000 variantes de semences pour 61 prédicteurs donnent une telle dispersion.....

Et bien sûr, il faut présélectionner les prédicteurs, ce qui accélère la formation.

elibrarius #:

Au fait, construisez-vous la ligne d'équilibre avec le temps sur l'axe horizontal ou simplement avec un pas régulier entre les transactions ? À en juger par les graphiques, c'est la seconde solution.

Voici un exemple :

Le graphique du haut comporte plus de 3 000 transactions, celui du bas plus de 600. Si vous les faites avec une indentation égale, vous obtiendrez de belles tendances. Mais ici, vous pouvez voir que pendant 5 ans, le trading n'a été que de quelques jours et il n'y a pas de sens à créer un robot qui dormira pendant des mois/années. Vous ne ferez que l'éteindre.

L'équilibre est construit séquentiellement sans tenir compte de la chronologie du calendrier. Oui, je vois ce que vous voulez dire, mais dans mon concept, il s'agit des dernières étapes de la préparation des modèles de négociation.

elibrarius #:

L'image est juste sur le sujet des cygnes noirs et blancs. Comme vous pouvez le voir, le MO les "mord" bien et s'y adapte, s'il y en a.

Il est logique que les émissions soient des déviations, je pense simplement qu'il s'agit d'inefficacités, qui devraient être apprises en éliminant le bruit blanc. Dans d'autres domaines, les stratégies primitives simples fonctionnent souvent, en particulier dans les marchés plats.

Raison: