Optimisation et tests hors échantillon. - page 4

 

Oui, en effet !

En outre, (en tenant compte également de la critique) je voudrais signaler qu'il y a une objection importante pour ceux qui ne sont pas tout à fait d'accord avec la simple exécution de l'idée.

"Il ne faut pas compliquer l'essence des choses au-delà de ce qui est nécessaire !" (Frère Occam)

La première optimisation suivie de la seconde (hors échantillon) est une solution simple et suffisante !

Après tout, notre objectif est de réaliser des bénéfices, et non de nous engager dans l'optimisation, pour le plaisir de l'optimisation.

 
Vita:

--> Le fractionnement fait la même chose (marquage, contrôle). Qu'est-ce que le fractionnement apporte de plus par rapport à une course directe ?


Le fractionnement permet de filtrer efficacement les informations. En termes de quantité.

Vita a écrit (a) :

--> Si par "traiter les résultats de l'optimisation sur l'ensemble de l'échantillon" vous voulez dire écarter l'ensemble D, alors je ne suis pas d'accord - écarter les résultats qui donnent des pertes intermédiaires (dans l'échantillon ou hors de l'échantillon) est une tâche élémentaire qui est résolue pendant l'optimisation elle-même sur l'ensemble de l'échantillon, c'est-à-dire qu'aucun traitement après l'optimisation n'est nécessaire. Le résultat est l'ensemble B immédiatement. Et pas de vérifications supplémentaires hors échantillon qui prennent du temps.

Voulez-vous dire l'optimisation au sens mathématique ou au sens du testeur réel ? L'échantillon, tel que je le comprends, comprend maintenant les deux échantillons. Pensez-vous pouvoir gagner du temps en effectuant trois séries inutiles sur les deux échantillons ? Quant à la mise en œuvre, si vous écrivez votre propre testeur à partir de zéro, les coûts de mise en œuvre seront peut-être négligeables. Essayez de le mettre en œuvre, puis nous pourrons revenir à la question.

 
leonid553:

Oui, en effet !

En outre, (en tenant compte également de la critique) je voudrais signaler qu'il y a une objection importante pour ceux qui ne sont pas tout à fait d'accord avec la simple exécution de l'idée.

"Il ne faut pas compliquer l'essence des choses au-delà de ce qui est nécessaire !" (Frère Occam)

La première optimisation suivie de la seconde (hors échantillon) est une solution simple et suffisante !

Après tout, nous poursuivons l'objectif du profit, et non l'optimisation, pour le plaisir de l'optimisation.


Moi aussi, et je suis en parfait accord avec Occam. Vous ne devriez pas faire deux optimisations - une seule suffit.

Vous avez dit : "Après l'optimisation d'un conseiller expert, nous devons souvent passer en revue, de manière fastidieuse, plus d'une douzaine de jeux de paramètres suggérés par l'optimiseur.

Un essai sur l'ensemble de la population, sans division en échantillon-sous-échantillon, est une solution non moins suffisante et encore plus simple.

 

En désaccord catégorique, Vita. Sinon, dans les réseaux neuronaux, il n'y aurait pas de division de toutes les données en trois parties, fondamentalement différentes : l'optimisation réelle - uniquement sur la première partie ; la deuxième ne sert qu'à déterminer le moment de la fin de la formation, et la troisième - uniquement pour le test unique. C'est-à-dire que le véritable essayage ne se fait qu'au premier, et au troisième, c'est ce qu'il s'avère être... Et le choix - "rasoir d'Occam" ou perte de confiance dans le système - est laissé au créateur du système.

Grosso modo, l'optimisation sur A+B+C n'est pas du tout la même chose que le traitement décrit ci-dessus.

 
Mathemat, je pense que ce qu'il veut dire, c'est qu'il faut rassembler l' ensemble (n'oubliez pas la combinatoire) des résultats, le diviser en 4 ensembles et en écarter trois.
 
Mathemat:

En désaccord catégorique, Vita. Sinon, il n'y aurait pas de division de toutes les données en trois parties dans les réseaux neuronaux. D'ailleurs, la véritable optimisation ne porte que sur la première partie ; la deuxième ne sert qu'à déterminer le moment de la fin de la formation, et la troisième ne sert qu'à effectuer des tests uniques.


La division des données en trois parties dans les réseaux neuronaux, je suppose, existe pour apprendre des lois (comme 2x2=4), pour révéler ces modèles. Et seulement s'il y en a. Sinon, le réseau neuronal s'ajustera de lui-même à la courbe.

Et puis, comme il m'a semblé, la tâche du testeur n'est pas de s'entraîner ou de détecter des modèles, mais de trouver l'ensemble optimal de paramètres. Cela peut se faire par simple force brute ou avec des algorithmes génétiques ou encore avec un réseau neuronal. Mais une fois qu'un ensemble de paramètres optimaux a été trouvé pour un échantillon, comment éviter l'ajustement de la courbe ? Le principe ? Quels sont les mauvais éléments de l'ensemble qui disparaissent lorsque l'on teste hors échantillon ?

 
lna01:
Vita:

--> Le fractionnement fait la même chose (marquage, contrôle). Qu'est-ce que le fractionnement apporte de plus par rapport à une course directe ?


Le fractionnement permet de filtrer efficacement les informations. En termes de quantité.

--> le fractionnement filtre les résultats avec des pertes dans l'échantillon ou hors échantillon, mais avec des gains cumulés totaux. Ce n'est pas quelque chose que j'aimerais écarter.

Vita a écrit (a) :

--> Si par "traiter les résultats de l'optimisation sur l'ensemble de l'échantillon" vous voulez dire écarter l'ensemble D, alors je ne suis pas d'accord - écarter les résultats qui donnent des pertes intermédiaires (dans l'échantillon ou hors de l'échantillon) est une tâche élémentaire résolue pendant l'optimisation elle-même sur l'ensemble de l'échantillon, c'est-à-dire qu'aucun traitement après l'optimisation n'est nécessaire. Le résultat est l'ensemble B immédiatement. Et aucune vérification supplémentaire hors de l'échantillon ne prend du temps.

Voulez-vous dire l'optimisation au sens mathématique ou au sens du testeur réel ? L'échantillon, tel que je le comprends, comprend maintenant les deux échantillons. Pensez-vous pouvoir gagner du temps en effectuant trois séries inutiles sur les deux échantillons ? Quant à la mise en œuvre, si vous écrivez votre propre testeur à partir de zéro, les coûts de mise en œuvre seront peut-être négligeables. Essayez la mise en œuvre, puis nous pourrons revenir à la question.

--> " L'échantillonnage, tel que je le comprends, inclut maintenant les deux échantillons " - désolé, je ne voulais pas vous faire penser cela. Oublie ça.

Ce que je voulais dire, c'est que le vrai testeur de MetaTrader vous permet d'obtenir les mêmes résultats lors de l'optimisation d'une population échantillon+déséchantillon que lors de l'optimisation d'un échantillon suivie d'un test hors échantillon. Dans le testeur, le bouton "Propriétés de l'expert", puis les onglets "Test" et "Optimisation" vous permettent de vous débarrasser des pertes de la longueur et de la profondeur que vous voulez. Et comme je m'en tiens au fait que l'optimisation d'un échantillon suivie d'un test hors échantillon n'élimine rien d'autre et n'ajoute rien du tout, voilà la solution au problème.

Malheureusement, c'est au sens mathématique que l'on peut atteindre une optimisation parfaite des paramètres sous une courbe donnée. Le truc avec comme si le test "pour le futur" en dehors de l'échantillon est une optimisation cachée mais toujours aussi triviale sur l'ensemble de la populationdonnée de l'échantillon+hors échantillon. Il n'y a pas de garantie pour l'avenir, pas de suppression de l'ajustement des courbes. Il faut trouver un ensemble de paramètres utilisables d'une autre manière.

 
La division des données en trois parties dans les réseaux neuronaux existe, je le soupçonne, pour enseigner des lois (comme 2x2=4), pour révéler ces modèles.

C'est ça, Vita, pour l'identification des modèles. Que faisons-nous ici ? Deux autres ensembles de données sont inventés pour éviter que cette identification ne dégénère en une banale "mémorisation" de la population initiale (= curvafitting). En NS, cela fonctionne comme suit : apprentissage sur l'ensemble A (ensemble d'apprentissage) vers la réduction de la fonction cible (il s'agit généralement d'une erreur de prédiction ou de classification). L'apprentissage est organisé de telle sorte que l'erreur sur A diminue de façon monotone.

En même temps, la même erreur avec les mêmes paramètres est testée sur l'ensemble B (ensemble de validation). Là, l'erreur évolue comme une fonction en cascade (d'abord décroissante, puis minimale, puis croissante). Dès que l'erreur minimale est atteinte sur l'ensemble B, l'apprentissage s'arrête. La poursuite de l'apprentissage sur A, même si l'erreur diminue, conduit à un curvafitting, car l'erreur sur l'ensemble B commence déjà à augmenter. À ce stade, on dit que la capacité du réseau à généraliser diminue. C'est pourquoi l'entraînement est arrêté de force, sans amener l'ajustement sur A à la limite (et c'est la différence fondamentale entre l'algorithme et l'ajustement effectué par l'optimiseur de méta-citations).

Enfin, l'ensemble des paramètres pour lesquels l'apprentissage s'est arrêté est exécuté sur le troisième ensemble C (l'ensemble de test). C'est le véritable contrôle de la qualité de la formation, car les données sur C n'ont aucun effet sur la formation précédente. Bien sûr, il n'y a aucune garantie de fonctionnement stable de NS avec les paramètres trouvés, mais cet algorithme annule au moins 95% des pseudo-graals, dont il y en a plus d'un ici sur le forum :).

Et une simple recherche sur un seul fragment de données est le curvafitting le plus pur, idéal dans la zone d'entraînement et sans valeur en dehors.

Bien sûr, MT4 n'est pas un programme de réseau neuronal et l'algorithme général devra être repensé, mais c'est toujours mieux qu'un banal curvafitting, que nous appelons "optimisation", hehe....

 
Vita:

Je voulais dire que le vrai testeur de MetaTrader permet d'obtenir les mêmes résultats lors de l'optimisation d'un échantillon + population hors échantillon que lors de l'optimisation d'un échantillon suivi d'un test hors échantillon. Le bouton "Propriétés du conseiller expert" et les onglets "Test" et "Optimisation" permettent de se débarrasser des pertes de toute longueur et profondeur.

Tout dépend de la définition de la tâche. Si nous négligeons le degré d'uniformité de la distribution des bénéfices sur le temps de test, les capacités standard du testeur MT sont vraiment suffisantes et le temps passé sera comparable. Cela vaut-il la peine de le négliger ? Chacun a sa propre expérience et son propre point de vue. Le processus peut effectivement être appelé ajustement, mais je pense que le terme approximation serait plus juste. Toutes les approximations ne peuvent pas être extrapolées dans le futur et le critère d'uniformité des bénéfices permet juste de rejeter les variantes qui ne sont manifestement pas adaptées à l'extrapolation. IMHO, bien sûr.

 
Mathemat:

Et un simple dépassement sur un seul élément de données est un pur curvafitting, parfait dans la zone d'entraînement et sans valeur en dehors de celle-ci.

--> Exactement, ça l'est.

Mais à quoi cela sert-il de diviser l'intrigue en fragments ? A quoi mène le "pseudo-apprentissage" sur trois fragments différents ? Est-ce qu'il mène à un profit sur chaque parcelle individuelle ? En quoi un tel ajustement est-il meilleur ? Est-ce qu'il garantit une rentabilité hors plateau ? Si vous le pensez, alors n'hésitez pas. De plus, le testeur vous donne la possibilité d'étouffer la courbe de sorte que sur chaque fragment A, B, C... vous faites des bénéfices.

Mais laissons de côté les réseaux neuronaux, car ils ne sont pas du tout liés à ce sujet. Les gens font manuellement les tracas au nom d'un avantage douteux, que j'ai d'ailleurs signalé, mais dont je n'ai plus entendu parler, en quoi les résultats après optimisation sur l'échantillon et tests sur le hors échantillon sont meilleurs qu'une exécution triviale ? Vous voyez, nous parlons de travaux et de résultats réels, et non de théorie des réseaux neuronaux. Auriez-vous l'amabilité d'indiquer les avantages réels, s'il y en a encore, autres que ceux que j'ai signalés.

Raison: