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

 

J'aimerais ajouter mon opinion : ces derniers jours, j'ai également pensé à réduire le nombre de variables d'entrée pour accélérer le processus d'optimisation. Et je dois dire que j'ai réussi à passer au crible les contributions inutiles ces derniers temps.

Question : Quelles variables d'entrée doivent être supprimées de l'échantillon de formation, car elles sont bruyantes ????

En fait, cette question n'est pas triviale, si nous savions quelles entrées sont du bruit et lesquelles ne le sont pas. Il serait facile de construire un modèle. Mais quand nous avons toutes les entrées d'une manière ou d'une autre liées à la sortie. Quoi alors ????? Quels sont ceux à enlever ?

Pour moi, la réponse est très simple : ..... Vous ne devez garder que les entrées qui ont une loi de distribution normale. Lorsqu'un histogramme présente une distribution normale et que son centre se situe au milieu de la plage. Ce sont les variables qui peuvent être utiles pour la formation. Je ne dis pas qu'il y a un alpha de sortie dans de telles variables. Il se peut qu'il ne soit pas là. Mais la recherche elle-même sera plus approfondie et dans de telles variables, l'algorithme a plus de chances de s'accrocher et d'augmenter le nombre d'entrées. Voici un exemple :

Cette entrée est considérée comme bonne. Puisqu'il a une distribution normale et que la partie centrale de l'histogramme se trouve au milieu de l'intervalle

Mais ces données ont une distribution asymétrique avec des valeurs aberrantes en dehors de l'histogramme principal. Cet histogramme montre que les données sont inclinées d'un côté qui n'est probablement pas utile pour construire le modèle.

Au stade initial de la sélection des intrants, nous ne pouvons pas juger de l'importance d'un intrant pour l'extrant. Parce que c'est le travail de l'optimiseur. Au stade initial, nous ne pouvons que juger de la distribution de la variable par rapport à zéro. Et si cette distribution est normale (les données sont uniformément réparties d'un côté et de l'autre par rapport au zéro), alors l'optimiseur aura très probablement plus de choix, contrairement aux données obliques par rapport au zéro où la plupart des données sont dans la zone négative ou vice versa.

C'est donc comme ça : ....

 

Cela dépend du modèle pour lequel vous les choisissez :) si après avoir supprimé une caractéristique non informative, le modèle ne perd pas beaucoup en précision, alors vous n'en avez pas besoin. Vous le supprimez, le réentraînez à nouveau et voyez s'il y a encore quelque chose en plus.

Et si vous avez un modèle de régression avec un processus non stationnaire à la sortie, vous allez tout gâcher avec cette approche, car il sera réentraîné sur un bruit normalement distribué.

 
Maxim Dmitrievsky:

Cela dépend du modèle pour lequel vous les choisissez :) si après avoir supprimé une caractéristique non informative, le modèle ne perd pas beaucoup en précision, alors vous n'en avez pas besoin. Vous le supprimez, le réentraînez à nouveau et voyez s'il y a encore quelque chose en plus.

Et si vous avez un modèle de régression avec un processus non stationnaire à la sortie, avec cette approche, vous allez inversement tout gâcher, car il se réentraînera sur des bruits normalement distribués.


Classification par rapport à zéro. À ces fins, cette approche est tout à fait appropriée, selon moi !

 
Mihail Marchukajtes:

Ces données, en revanche, présentent une distribution asymétrique avec des valeurs aberrantes en dehors de l'histogramme principal. Cet histogramme indique que les données sont inclinées d'un côté, ce qui n'est probablement pas utile pour la construction de modèles.

Dans les articles de Vladimir, il y a un point sur la suppression des valeurs aberrantes, si les valeurs aberrantes de votre figure n°2 sont supprimées, vous obtiendrez une distribution plus normale.

Et il y a aussi le centrage des données d'entrée - cela améliorera encore plus la situation.

 
elibrarius:

Dans les articles de Vladimir, il y a un point sur la suppression des valeurs aberrantes, si les valeurs aberrantes de votre figure n°2 sont supprimées, vous obtiendrez une distribution plus normale.

Et puis il y a le centrage des entrées - cela améliorera encore plus les choses.


Que faisons-nous lorsque cette valeur aberrante arrive dans les nouvelles données ? Comment le modèle l'interprète-t-il ?

Supprimer une valeur aberrante des données signifie supprimer l'ensemble du vecteur d'entrée au niveau d'une valeur aberrante donnée, et que faire s'il y a des données importantes dans ce vecteur au niveau d'autres entrées. Si la nature de l'entrée est sujette à de telles aberrations, il est préférable de ne pas prendre cette entrée du tout. IMHO.

 
Mihail Marchukajtes:

Classification par rapport à zéro. À ces fins, cette approche est tout à fait appropriée, selon moi !


Oui, si les sorties sont distribuées à peu près selon la même loi, sinon - le même recyclage.

 
elibrarius:

Dans les articles de Vladimir, il y a un point sur la suppression des valeurs aberrantes, si les valeurs aberrantes de votre figure n°2 sont supprimées, vous obtiendrez une distribution plus normale.

Et puis il y a le centrage des données d'entrée - cela améliorera encore les choses.


La suppression des valeurs aberrantes est une mesure statistique ou une béquille (à l'instar du désir de rendre tout stationnaire), qui peut considérablement détériorer les prédictions sur le forex et réduire à néant l'ensemble du système (ne fonctionne que lorsque le marché est normalement distribué).

Vous devez comprendre où NS est utilisé et dans quel but... et ne pas vous contenter de faire ce que vous voulez à partir d'un livre :)

Vladimir n'a aucune preuve de la robustesse de ses modèles... seulement des tests très approximatifs de modèles dans le même R

donc je ne sais pas quoi croire dans cette vie... tout doit être revérifié.

 
Maxim Dmitrievsky:

Oui, si les sorties sont distribuées à peu près selon la même loi, sinon, ce sera le même surentraînement.


Eh bien, je balance toujours la sortie pour un nombre égal de classe "0" et "1". C'est-à-dire que la sortie est équilibrée et que je prends des entrées avec une distribution normale par rapport à zéro. L'optimiseur doit être exécuté plusieurs fois, mais en règle générale, plus le modèle utilise d'entrées, meilleures sont ses performances. Je sélectionne donc le modèle le plus paramétrique avec le résultat maximal sur la section d'essai. Ensuite, j'utiliserai le boosting et d'autres astuces...

 
Mihail Marchukajtes:

Que faire lorsque cette valeur aberrante arrive dans les nouvelles données ? Comment le modèle l'interprète-t-il ?

Retirer la valeur aberrante des données signifie supprimer l'ensemble du vecteur d'entrée pour une valeur aberrante donnée, au cas où ce vecteur contiendrait des données importantes pour d'autres entrées. Si la nature de l'entrée est sujette à de telles aberrations, il est préférable de ne pas prendre cette entrée du tout. IMHO.

Dans les nouvelles données, les valeurs aberrantes sont également éliminées, par la fourchette obtenue lors de la formation. Supposons que vous ayez retiré de -100 à +100 pendant la formation, que vous vous en souveniez - et que vous ayez retiré les mêmes niveaux sur les nouvelles données. Vous devriez le faire sur les valeurs absolues et ensuite vous pouvez normaliser. Sans supprimer les valeurs aberrantes, mon centre des données supprimées a continué à se déplacer et est devenu non comparable avec lui-même une semaine plus tôt.

Et les valeurs aberrantes n'apparaissent qu'au moment des nouvelles ou des événements extraordinaires, mais la force de ces valeurs aberrantes sera à chaque fois différente. J'ai décidé pour moi-même qu'il valait mieux s'en débarrasser, et Vladimir, ce n'est pas moi qui ai trouvé cette idée, apparemment elle a été confirmée par les recherches de nombreuses personnes.

 
Mihail Marchukajtes:


Eh bien, je balance toujours la sortie pour un nombre égal de classe "0" et "1". C'est-à-dire que j'équilibre la sortie et je prends les entrées avec une distribution normale par rapport à zéro. L'optimiseur doit être exécuté plusieurs fois, mais en règle générale, plus le modèle utilise d'entrées, meilleures sont ses performances. Je sélectionne donc le modèle le plus paramétrique avec le résultat maximal sur la section d'essai. Ensuite, nous continuons avec le boosting et d'autres trucs...


Ce n'est donc pas jPredictor, finalement ? :)