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

 
D.h. wenn es 20 Prädiktoren gibt, wer weiß, was Bayes herausfindet, wenn er zu wenig trainiert.
 
Maxim Dmitrievsky:

nicht ganz, hier sollte es deutlicher sein

https://habr.com/ru/post/276355/

die Bandbreite der Anwendungen ist groß, wie genau sie genutzt wird, ist eine andere Frage

Ich werde es am Abend lesen

 
Maxim Dmitrievsky:

Sie und ich haben nichts zu besprechen, denn ich erkenne an Ihrem Psycho-Typ, dass Sie entweder ein Kind sind oder einfach... vergessen Sie es.

"Wir" wie Sie? Such dir erst einmal einen Job, es ist eine Schande, in diesem Alter auf den Schultern deiner Eltern zu sitzen.

 
Maxim Dmitrievsky:

nicht ganz, hier sollte es deutlicher sein

https://habr.com/ru/post/276355/

die Bandbreite der Anwendungen ist groß, wie genau sie genutzt wird, ist eine andere Frage

Das Fazit aus Teil 2 des Artikels:
Dropout kann als eine billige Version des Bayesianismus betrachtet werden, die sehr einfach ist. Die Idee basiert auf der gleichen Analogie zu Ensembles, die ich am Ende des letzten Beitrags erwähnt habe: Stellen Sie sich ein neuronales Netzwerk vor. Nun stellen Sie sich vor, Sie nehmen es, reißen wahllos ein paar Neuronen ab und legen es zur Seite. Nach ~1000 solcher Operationen erhält man ein Ensemble von tausend Netzen, von denen sich jedes nach dem Zufallsprinzip leicht von den anderen unterscheidet. Wir mitteln ihre Vorhersagen und stellen fest, dass sich die zufälligen Abweichungen teilweise ausgleichen und tatsächliche Vorhersagen ergeben. Stellen Sie sich nun vor, Sie haben ein Bayes'sches Netz, und Sie nehmen tausendmal einen Satz seiner Gewichte aus der Ungewissheit heraus, und Sie erhalten das gleiche Ensemble leicht unterschiedlicher Netze.

Das Tolle am Bayes'schen Ansatz ist, dass man diese Zufälligkeit kontrolliert nutzen kann.

....

In der Praxis bedeutet dies, dass ein dimensionales Netz bessere Ergebnisse liefert als ein Dropout-Netz, wenn auch nur geringfügig.

Das Coolste am Dropout ist natürlich, dass es sehr einfach ist.

D.h. ein tiefes NS mit Dropout ist das Äquivalent eines Bayes'schen Netzes. Und Dropout ist in vielen Paketen enthalten. Sie können es zunächst verwenden, um nach Fischen in Ihren Prädiktoren/Zielen zu suchen. Und dann versuchen Sie, die Ergebnisse mit Bayes zu verbessern. In den Artikeln von Vladimir Perervenko wurde Dropout verwendet, es ist möglich, auf ihrer Grundlage zu experimentieren.

Ich habe experimentiert, aber keinen Durchbruch bei meinen Prädiktoren gefunden.
Aber ich habe die Netze nicht so tief geknüpft, dass ich 1000 Neuronen aus ihnen herausnehmen musste. Ich habe nicht mehr als N-100-100-100-100-1 (401 Neuronen) ausprobiert. D.h. 100 können entfernt worden sein, aber nicht 1000. Um 1000 zu entfernen, bräuchte man ein Netzwerk mit 4-10 Tausend Neuronen, und das Zählen würde wahrscheinlich sehr lange dauern.
Es ist möglich, dass Wälder mit 1000 Bäumen ähnliche Ergebnisse erzielen und viel schneller als NS zählen würden.
 
elibrarius:
Ich habe nicht mehr als N-100-100-100-1 (401 Neuronen) ausprobiert.

Solche Monster kann man nicht richtig trainieren. Imho brauchen wir einen einfacheren NS. Irgendwo bis zu 100 Neuronen.

 
elibrarius:
Das Fazit aus Teil 2 des Artikels:

D.h. ein tiefes NS mit einem Aussetzer ist analog zu einem Bayes'schen Netz. Und Dropout gibt es in vielen Paketen, Sie können sie zunächst für die Suche nach Fischen auf ihre Prädiktoren/Ziele verwenden. Und dann versuchen Sie, die Ergebnisse mit Bayes zu verbessern. In Artikeln von Vladimir Perervenko Aussteiger verwendet wurde, können Sie auf ihrer Grundlage zu experimentieren.

Ich habe experimentiert, aber keinen Durchbruch bei meinen Prädiktoren gefunden.
Aber ich habe die Netze nicht so tief geknüpft, dass ich 1000 Neuronen aus ihnen herausnehmen musste. Ich habe nicht mehr als N-100-100-100-100-1 (401 Neuronen) ausprobiert. D.h. 100 können entfernt worden sein, aber nicht 1000. Um 1000 zu entfernen, bräuchte man ein Netzwerk mit 4-10 Tausend Neuronen, und das Zählen würde wahrscheinlich sehr lange dauern.
Es ist möglich, dass Wälder mit 1000 Bäumen ähnliche Ergebnisse erzielen und viel schneller als NS zählen würden.

Oh, ich weiß nicht, bei einer beliebigen Anzahl von Bäumen/Hölzern hört der Akurasi auf zu wachsen, und sie liegen einfach als Ballast da, ohne irgendetwas zu verbessern. Das Fallenlassen oder Nicht-Fallenlassen ist ein eindeutiges Zeichen.

Meiner Meinung nach ein grober Vergleich zwischen Bayes und den Aussteigern, aber ich bin immer noch nicht sehr sachkundig auf diesem Gebiet, also werde ich nicht darüber streiten, vielleicht so

 
Maxim Dmitrievsky:

Meiner Meinung nach ein grober Vergleich zwischen Bayes und Aussteigern, aber ich bin noch nicht sehr bewandert auf diesem Gebiet und werde nicht widersprechen, vielleicht so

Nicht ich, sondern der Autor dieses Artikels hat diesen Vergleich angestellt. Er schrieb seinen Artikel aus einem anderen, größeren, den er für seine Experimente verwendete. Das heißt, dieser Vergleich stammt offenbar von den Entwicklern der Methode.

 
Maxim Dmitrievsky:

Oh, ich weiß nicht, bei einer beliebigen Anzahl von Bäumen/Hölzern hört der Akurasi auf zu wachsen, und sie liegen einfach als Ballast da, ohne irgendetwas zu verbessern. Ob man sie fallen lässt oder nicht, sie sind ein totes Taschentuch.

wenn Sie einen Wald mit 1000 Bäumen aufbauen wollen, sollten Sie wahrscheinlich jedem Wald 1% der Daten zur Verfügung stellen, d.h. r=0,01, nicht 0,1 ... 0,6 wie für Wälder mit 100 empfohlenen Bäumen empfohlen.
 

Ich habe einen obskuren Code im Alglib-Wald gefunden. Vollständiger Code der Funktion zur Berechnung der Kreuz-Etropie aus dataanalysis.mqh:

//+------------------------------------------------------------------+
//| Average cross-entropy (in bits per element) on the test set      |
//| INPUT PARAMETERS:                                                |
//|     DF      -   decision forest model                            |
//|     XY      -   test set                                         |
//|     NPoints -   test set size                                    |
//| RESULT:                                                          |
//|     CrossEntropy/(NPoints*LN(2)).                                |
//|     Zero if model solves regression task.                        |
//+------------------------------------------------------------------+
static double CDForest::DFAvgCE(CDecisionForest &df,CMatrixDouble &xy,
                                const int npoints)
  {
//--- create variables
   double result=0;
   int    i=0;
   int    j=0;
   int    k=0;
   int    tmpi=0;
   int    i_=0;
//--- creating arrays
   double x[];
   double y[];
//--- allocation
   ArrayResizeAL(x,df.m_nvars);
   ArrayResizeAL(y,df.m_nclasses);
//--- initialization
   result=0;
   for(i=0;i<=npoints-1;i++)
     {
      for(i_=0;i_<=df.m_nvars-1;i_++)
         x[i_]=xy[i][i_];
      //--- function call
      DFProcess(df,x,y);
      //--- check
      if(df.m_nclasses>1)
        {
         //--- classification-specific code
         k=(int)MathRound(xy[i][df.m_nvars]);
         tmpi=0;
         for(j=1;j<=df.m_nclasses-1;j++)
           {
            //--- check
            if(y[j]>(double)(y[tmpi]))
               tmpi=j;
           }

         //--- check
         if(y[k]!=0.0)
            result=result-MathLog(y[k]);
         else
            result=result-MathLog(CMath::m_minrealnumber);
        }
     }
//--- return result
   return(result/npoints);
  }

Das rot markierte Codefragment berücksichtigt etwas(tmpi), das in keiner Weise verwendet wird. Warum ist sie dann enthalten?
Entweder fehlt etwas oder der Code ist nicht vollständig bereinigt.
Im Allgemeinen begann ich, mich mit dieser Funktion zu beschäftigen, weil ich 1 Baum suchen wollte. Und wenn ich die Anzahl der Bäume im Wald = 1 einstelle, sehe ich, dass alle Fehler zwischen 0 und 1 liegen, und dieser Fehler von 100 bis 300 + auftritt.
Versteht jemand die Kreuzentropie - ist der Code überhaupt korrekt, oder stimmt etwas nicht?

Laut wikipedia sollte es lauten



 

Ich verglich es mit catbust - es gibt gut, in der Regel > 0,5 auf den Test ... gut, wie üblich

Ich werde mir die Berechnung morgen ansehen, vielleicht ist der Fehlerbehebungscode noch vorhanden.

Im Allgemeinen ist diese Kennzahl hier nicht von Nutzen, da sie nicht für eine frühe Pause oder ähnliches verwendet wird... und daher wenig informativ ist. Es wird ein Klassifizierungsfehler gemacht und das war's.