Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 552

 
Maxim Dmitrievsky:
Ich weiß also nicht, was ich in diesem Leben glauben soll... alles muss doppelt geprüft werden

+1 - Ich begann ohne die Ausreißer zu entfernen und erhielt starke Verschiebungen in der Mitte (oder Null) der Daten. Nach dem Entfernen der Ausreißer wurde alles stabiler.

 
Maxim Dmitrievsky:

Es ist also doch nicht jPredictor? :)


Warum gerade bei ihm.... Es baut bessere Modelle als Bibliotheken und so weiter. Denn es schüttelt die Daten gründlich durch...

 
Mihail Marchukajtes:

Warum gerade er.... Es baut bessere Modelle als Bibliotheken und so weiter. Denn es schüttelt die Daten gründlich durch...


aber es dauert sehr lange... :)

 
elibrarius:

+1 - Ich habe es anfangs ohne Ausreißer gemacht und starke Verschiebungen in der Mitte (oder Null) der attrminierten Daten erhalten. Nach dem Entfernen der Ausreißer wurde alles stabiler.


Nun, manchmal gibt es ein Problem mit der Verschiebung wegen der Normalisierung, so habe ich alle Eingaben durch Logarithmen von Inkrementen und dort wird der Mittelpunkt immer bei Null sein, wenn sie normalisiert werden müssen

aber im Allgemeinen werden die Spikes eher entfernt, damit sich die Skalen an den Anomalien nicht zu sehr verschieben... und das Gerüst kümmert sich zum Beispiel überhaupt nicht um sie

 
Maxim Dmitrievsky:

aber es dauert sehr lange... :)


Deshalb reduziere ich statistisch gesehen die Anzahl der Eingaben und die Ausbildung wird mit der Zeit angemessen. An einem Arbeitstag habe ich das Modell + Level 4-Boosting gemacht. Jetzt mache ich noch ein Bounce-Modell, und das sollte wochenlang funktionieren. Zumindest hoffe ich das...

 
Maxim Dmitrievsky:

Nun, manchmal gibt es ein Problem mit der Verschiebung wegen der Normalisierung, so habe ich alle Eingaben durch Logarithmen von Inkrementen und dort wird der Mittelpunkt immer bei Null sein, wenn sie normalisiert werden müssen

aber im Allgemeinen werden die Spikes eher entfernt, damit der NS die Gewichte nicht stark auf die Anomalien verlagert... und das Gerüst kümmert sich zum Beispiel überhaupt nicht um sie

Nun, der Logarithmus tut etwas Ähnliches, nur dass er nicht verwirft und starke Emissionen bringt. Ich werfe sie aber auch nicht weg, sondern setze sie mit dem Maximum gleich. if(v>max){v=max;}

Im Allgemeinen möchte ich im Voraus einen akzeptablen Bereich für jeden Prädiktor festlegen und alle meine Experimente innerhalb dieses Bereichs durchführen. Denn selbst mit meiner Methode und der Logarithmus-Methode werde ich einige Datenverschiebungen von Probe zu Probe haben.

 
elibrarius:
Der Logarithmus macht etwas Ähnliches, nur dass er starke Spikes nicht verwirft, sondern annähert. Ich werfe sie aber auch nicht weg, sondern setze sie mit dem Maximum gleich. if(v>max){v=max;}

Oh ja, das stimmt... denke ich)

Ich nehme zunächst einige Reihen wie log(close[0]/close[n])

und dann

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;
     }
  }
und wenn man kleine Stichproben nimmt, kann man sie für die große Stichprobevorläufig festlegen, so dass sie sich nicht ändert.
 
Maxim Dmitrievsky:

Oh ja, das stimmt... denke ich)

Ich nehme zunächst einige Reihen wie log(close[0]/close[n])

und dann

Wenn Min. und Max. nicht gespiegelt sind (z. B. -100 und 90), dann haben Sie eine Normalisierung z. B. von -1 bis 0,9. Aber der Mittelpunkt wird immer bei 0 sein. Das ist ein interessanter Ansatz für die Ablenkung von Offsets.

Und offenbar müssen Sie die

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

Andernfalls wird eine negative Min. alles auf den Kopf stellen.

 
Elibrarius:

Wenn Min und Max nicht gespiegelt sind (z. B. -100 und 90), ergibt sich eine Normalisierung von z. B. -1 bis 0,9. Aber der Mittelpunkt wird immer bei 0 liegen. Das ist ein interessanter Ansatz für den Umgang mit Offsets.

Und offensichtlich sollten wir das auch.

Sonst würde eine negative Min. alles auf den Kopf stellen.


Ja, es ist wichtig, dass die Mitte nicht verrutscht.

Es gibt bereits Abysses für Max und Min.

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

Die Abysses für Max und Min sind bereits dort oben

Verfehlt)

Und noch etwas: Wenn Sie z. B. nicht 0, sondern z. B. 0,5 nehmen, wird der Wert auch mit Ihrer Methode von Probe zu Probe "schwanken".

Die einzige Möglichkeit, hier Abhilfe zu schaffen, besteht darin, den Bereich für jeden Eingang manuell festzulegen. Aber es ist nicht klar, wie sie zu bestimmen ist. Sie können zum Beispiel Daten für ein Jahr prüfen und 1-5 % der Ausreißer zurückweisen. Und arbeiten Sie im Laufe des Jahres mit ihnen zusammen. Allerdings werden sie sich in einem Jahr ändern.