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

 
forexman77:

Wie identifiziere ich "Rauschprädiktoren"? Beim Versuch, nach Relevanz auszuwählen und auf diese Weise zu entfernen, wurde das Ergebnis schlechter.

Es wurden hier schon viele Empfehlungen ausgesprochen.

Ich verwende ein sehr einfaches Schema, das nicht genau sein muss, aber sehr klar ist.

Ich nehme einen Prädiktor - einen Vektor - und teile ihn in zwei Teile: Ein Teil bezieht sich auf eine Klasse des Ziels, der andere Teil auf eine andere Klasse des Ziels. Dann erstelle ich Histogramme für jeden Teil und vergleiche sie: Wenn sie übereinstimmen, handelt es sich um Rauschen, wenn sie divergieren, haben sie eine gewisse Vorhersagekraft. Wenn sie vollständig voneinander abweichen, haben sie eine 100%ige Vorhersagekraft (habe ich nicht gesehen). Die Überschneidung von Histogrammen ist ein Klassifizierungsfehler, der im Prinzip nicht überwunden werden kann.

Ich habe die Diagramme hier gepostet, mit rsi als Prädiktor. Es ist möglich, ein Maß für die Divergenz der Histogramme zu erstellen.


Das ist eine Spielerei - ohne Kosten können Sie eine beliebige Anzahl von Prädiktoren mit einer großen Anzahl von Zielvariablen vergleichen, was ich manchmal aus Höflichkeit gegenüber besonders Faulen tue.

 
Aleksey Vyazmikin:

Es ist nicht klar, wie Ihr Indikator zu lesen ist.

Es ist kein Indikator, es ist ein Zufallswald...

Sie können Modelle nach OOB, RMS usw. bewerten, aber Sie können das Ergebnis des Modells nicht verstehen.

Erst durch die Kombination des Ergebnisses eines Zufallsforsts mit einem Kurschart lassen sich die Besonderheiten des Modellverhaltens erkennen.

Mit https://github.com/Roffild/RoffildLibrary/blob/mast er/Include/Roffild/ToIndicator.mqh erstellte Grafik

 
Dr. Trader:

Filter_02 2016 arr_Buy

Dort übersteigt die Klasse "1" sogar die Zahl der "0", so dass es weniger Fehleingaben gibt als zuvor. Versuchen Sie bitte diesen Baum im EA? Ich bin selbst gespannt, was die Gewinntabelle zeigen wird.


y_pred
y_true01
0
1


Die erste Spalte mit Ziffern ist ungefiltert, die zweite ist gefiltert

Vielleicht habe ich die Logik des Baums durcheinander gebracht?


void FilterTree()
{
int arr_DonProc=DonProcf();
int arr_DonProcVisota=DonProcVisotaf();
int arr_DonProc_M15=DonProc_M15f();
int Level_Support_D1=LevlSupportf(PERIOD_D1);
int Level_Support_W1=LevlSupportf(PERIOD_W1);
int arr_Regressor=RegressorP();
bool BlockBuy=false;

if (arr_DonProc>=2.5)
   {
   if (arr_DonProcVisota>=7.5)
      {
         BlockBuy=true;      
      }
   else
      {
       if (arr_DonProc>=6.5)
          { 
            if (Level_Support_D1>=-2.5)
            {
               if (Level_Support_W1<=1.5)BlockBuy=true;                  
            }          
          }
       else
          {
            if (arr_Regressor>=2.5)
               {
                  if(arr_DonProc_M15>=4.5)BlockBuy=true;
               
               }
            else
               {
                  if(Level_Support_D1<1.5)
                  {
                     if(Level_Support_W1<-1.5)BlockBuy=true;
                  }
               }
          }         
      }   
   
   }

if (BlockBuy==true)BuyNow=false;
SellNow=false;
}
 
Roffild:

Es handelt sich nicht um einen Indikator, sondern um einen Zufallswald...

Sie können Modelle nach OOB, RMS usw. bewerten, aber Sie können das Ergebnis des Modells nicht verstehen.

Erst nach Überlagerung des Ergebnisses des Random Forest mit dem Kurschart werden die Besonderheiten des Modellverhaltens deutlich.

Mit https://github.com/Roffild/RoffildLibrary/blob/mast er/Include/Roffild/ToIndicator.mqh erstellte Grafik

Es ist nicht klar, Sie haben eindeutig nicht den Wald, sondern den Indikator - vielleicht die Tatsache, dass es einige Logik des "Waldes" verarbeitet hat und es ausgeben, aber es wird nicht nicht ein Indikator.

Was wollten Sie also zeigen, wie man die Lesungen liest, was geben sie her?

 
Aleksey Vyazmikin:


Die erste Spalte mit Zahlen ist ungefiltert und die zweite Spalte mit einem Filter versehen

Vielleicht habe ich die Logik des Baums durcheinander gebracht?


Das war ein Irrtum.

if (BlockBuy==false)BuyNow=false;


 
Aleksey Vyazmikin:

Das ist nicht klar, denn es handelt sich eindeutig nicht um einen Wald, sondern um einen Indikator - vielleicht geht es darum, dass er eine gewisse Logik des "Waldes" verarbeitet und daraus abgeleitet hat, aber das macht ihn nicht zu einem Indikator.

Also, was wollten Sie zeigen, wie man die Lesungen liest, was geben sie her?

CDForest::DFProcess(forest1, netinputs, netoutputs);
indicSymbol.buffer(netoutputs[1] * 100.0, 0);

CDForest::DFProcess(forest2, netinputs, netoutputs);
indicSymbol.buffer(netoutputs[1] * 100.0, 1);
Wenn Sie nicht glauben, dass das Diagramm ein echter Wald ist, dann ist die Vorstellung von Wäldern eindeutig falsch...
 
Roffild:
Wenn Sie nicht glauben, dass das Diagramm ein echter Wald ist, dann ist die Vorstellung von Wäldern eindeutig falsch...

Was hat das mit einer Frage des Glaubens zu tun? Ich sehe Schnörkel in der Grafik - und ich verstehe nicht, wie ich sie interpretieren soll - alles.

 

Dr. Trader, in der Regel muss man sich weiter oben im Baum verzweigen, da es nur sehr wenige Informationen gibt, um eine Entscheidung zu treffen.

 
Aleksey Vyazmikin:

Die erste Spalte mit Zahlen ist ohne Filter und die zweite mit Filter

Ich verstehe. Der Baum konnte nicht lernen, wie man richtig filtert, so dass das Ergebnis mit Filterung nicht viel besser war, sondern nur weniger Angebote. Im Grunde genommen wurden einige der guten und einige der schlechten Geschäfte nach dem Zufallsprinzip herausgefiltert,

Ich habe den Baum auf 2015 nur für malovhodov trainiert.
Filter_02 und mnogovhodov_02 wurden für 2016 trainiert, es ist besser, 2016 und 2017 im Testgerät zu vergleichen (2017 - neue Daten, die überhaupt nicht im Archiv waren, das ist am interessantesten zu sehen).

 
Aleksey Vyazmikin:

Dr. Trader, im Allgemeinen müssen Sie den Baum weiter verzweigen, da es nur sehr wenige Informationen gibt, um eine Entscheidung zu treffen.

Ich habe festgestellt, dass weitere Verzweigungen zu einer Überanpassung führen. Für eine bessere Genauigkeit sollten wir zu komplexeren Modellen übergehen - Wald oder Neuronik.

Sie können immer noch Verzweigungen mit einer Genauigkeit von 100 % bei Trainingsdaten erzeugen, aber was nützt das, wenn ein solcher Baum nur bei neuen Daten versagt. Ich möchte ein solches Modell anlernen, das bei neuen Daten fast das gleiche Ergebnis wie bei den Trainingsdaten zeigt.