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

 
Maxim Dmitrievsky:
alors je ne sais pas quoi croire dans cette vie... tout doit être revérifié

+1 - J'ai commencé sans supprimer les valeurs aberrantes, et j'ai obtenu de forts décalages au centre (ou au zéro) des données. Après avoir supprimé les valeurs aberrantes, tout est devenu plus stable.

 
Maxim Dmitrievsky:

Ce n'est donc pas jPredictor finalement ? :)


Pourquoi exactement avec lui.... Il construit de meilleurs modèles que les bibliothèques et ainsi de suite. Parce qu'il secoue les données en profondeur...

 
Mihail Marchukajtes:

Pourquoi lui exactement.... Il construit de meilleurs modèles que les bibliothèques et ainsi de suite. Parce qu'il secoue les données en profondeur...


mais ça prend beaucoup de temps... :)

 
elibrarius:

+1 - Je l'ai fait initialement sans supprimer les valeurs aberrantes, et j'ai obtenu de forts décalages au centre (ou au zéro) des données attrminées. Après avoir supprimé les valeurs aberrantes, tout est devenu plus stable.


Eh bien, parfois il y a un problème avec le décalage à cause de la normalisation, donc j'ai toutes les entrées à travers les logarithmes des incréments et là le centre sera toujours à zéro si elles doivent être normalisées.

mais en général, les pointes sont enlevées plus pour que les échelles ne se décalent pas trop aux anomalies... et les échafaudages, par exemple, ne s'en soucient pas du tout

 
Maxim Dmitrievsky:

mais ça prend beaucoup de temps... :)


C'est pourquoi je réduis statistiquement le nombre d'entrées et la formation devient adéquate avec le temps. En un jour de travail, j'ai fait le modèle + le boosting de niveau 4. Maintenant je vais faire un autre modèle de rebond et ça devrait marcher pendant des semaines. Du moins, je l'espère...

 
Maxim Dmitrievsky:

Eh bien, parfois il y a un problème avec le décalage à cause de la normalisation, donc j'ai toutes les entrées à travers les logarithmes des incréments et là le centre sera toujours à zéro si elles doivent être normalisées.

mais en général, les pointes sont enlevées plus pour que le NS ne déplace pas les poids lourdement sur les anomalies... et l'échafaudage par exemple ne s'en soucie pas du tout

En fait, le logarithme fait quelque chose de similaire, sauf qu'il ne rejette pas, et apporte, de fortes émissions. Cependant, je ne les rejette pas non plus, mais je les assimile au maximum. si(v>max){v=max;}

En général, je veux définir à l'avance une fourchette acceptable pour chaque prédicteur et réaliser toutes mes expériences dans cette fourchette. Parce que même avec ma méthode et celle du logarithme, il y aura un décalage des données d'un échantillon à l'autre.

 
elibrarius:
En fait, le logarithme fait quelque chose de similaire, sauf qu'il n'élimine pas les pics forts mais les approxime. Cependant, je ne les écarte pas non plus, mais je les assimile au maximum. si(v>max){v=max;}

Oh oui, c'est vrai... je suppose)

Je prends d'abord des séries comme log(close[0]/close[n])

et ensuite

void NormalizeArrays(double &a[]) //нормируем от -1 до 1
  { 
   double multiplier;
   double x_min=MathAbs(a[ArrayMinimum(a)]);
   double x_max=MathAbs(a[ArrayMaximum(a)]);
   if(x_min>=x_max) multiplier = x_min;
     else multiplier = x_max;
   for(int i=0;i<ArraySize(a);i++)
     {
      a[i]=a[i]/multiplier;
     }
  }
et si nous prenons de petits échantillons,nous pouvons la définir de manière préliminaire sur le grand échantillon, donc elle ne changera pas.
 
Maxim Dmitrievsky:

Oh oui, c'est vrai... je suppose)

Je prends d'abord des séries comme log(close[0]/close[n])

et ensuite

Si le min et le max ne sont pas en miroir (par exemple -100 et 90), vous aurez alors une normalisation, par exemple de -1 à 0,9. Mais le centre sera toujours à 0. C'est une approche intéressante pour dévier les décalages.

Et apparemment, vous devez prendre

a[i]=a[i]/Abs(multiplier);

Sinon, un min négatif va tout chambouler.

 
Elibrarius:

Si le min et le max ne sont pas mis en miroir (par exemple -100 et 90), vous aurez une normalisation de -1 à 0,9, par exemple. Mais le centre sera toujours à 0. Une approche intéressante pour lutter contre les décalages.

Et apparemment, nous devrions.

Sinon, un min négatif mettrait tout sens dessus dessous.


Oui, il est important que le centre ne se déplace pas.

Il y a déjà des abysses pour max et min.

double x_min=MathAbs(a[ArrayMinimum(a)]);
double x_max=MathAbs(a[ArrayMaximum(a)]);
 
Maxim Dmitrievsky:

Les abysses pour max et min sont déjà en haut.

Manqué)

Une dernière chose, si vous prenez par exemple non pas 0, mais par exemple 0,5 - même avec votre méthode, il "flottera" d'un échantillon à l'autre.

Le seul moyen d'y remédier est de définir manuellement et de manière rigide la plage de valeurs pour chaque entrée. Mais la manière de le déterminer n'est pas claire. Par exemple, vous pouvez exploiter des données pendant un an et rejeter 1 à 5 % des valeurs aberrantes. Et travaillez avec eux pendant l'année. Même s'ils changeront dans un an.