L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 1259

 
Cioè, se ci sono circa 20 predittori, chissà cosa otterrà Bayes se si sottoallena.
 
Maxim Dmitrievsky:

non proprio, dovrebbe essere più chiaro qui

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

la gamma di applicazioni è grande, come esattamente sarà utilizzato è un'altra questione

Lo leggerò la sera

 
Maxim Dmitrievsky:

Io e te non abbiamo niente di cui parlare, perché dal tuo psicotipo capisco che sei un bambino o semplicemente... lascia perdere.

"Noi" come voi? Trova un lavoro per cominciare, è un peccato sedersi sulle spalle dei tuoi genitori a quell'età.

 
Maxim Dmitrievsky:

non proprio, dovrebbe essere più chiaro qui

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

la gamma di applicazioni è grande, come esattamente sarà utilizzato è un'altra questione

La linea di fondo della parte 2 dell'articolo:
L'abbandono può essere visto come una versione economica del bayesianismo, che è molto semplice. L'idea si basa sulla stessa analogia con gli insiemi che ho menzionato alla fine dell'ultimo post: immaginate di avere una rete neurale. Ora immaginate di prenderlo, strappare a caso qualche neurone e metterlo da parte. Dopo ~1000 operazioni di questo tipo, si ottiene un insieme di mille reti, dove ognuna è leggermente diversa dall'altra in modo casuale. Facciamo la media delle loro previsioni, e otteniamo che le deviazioni casuali si compensano a vicenda in alcuni punti e danno previsioni reali. Ora immaginate di avere una rete bayesiana, e di prendere mille volte un insieme dei suoi pesi per incertezza, e di ottenere lo stesso insieme di reti leggermente diverse.

La cosa più bella dell'approccio bayesiano è che permette di usare la casualità in modo controllato.

....

In pratica, questo si traduce nel fatto che una rete dimensionale dà risultati migliori di una rete a caduta, anche se non di molto.

Ciò che rende il dropout più fresco è che è molto semplice, ovviamente.

Cioè un NS profondo con dropout è l'equivalente di una rete bayesiana. E dropout è in molti pacchetti, puoi prima usarlo per cercare i pesci sui tuoi predittori/target. E poi cercare di migliorare i risultati con Bayes. Negli articoli di Vladimir Perervenko è stato usato il dropout, è possibile sperimentare sulla loro base.

Ho sperimentato, ma non ho trovato alcuna svolta nei miei predittori.
Ma non ho creato reti così profonde da doverne eliminare 1000 neuroni. Non ho provato più di N-100-100-100-100-1 (401 neuroni). Cioè 100 possono essere stati rimossi, ma non 1000. Per rimuoverne 1000, avresti bisogno di una rete con 4-10 mila neuroni e probabilmente ci vorrebbe molto tempo per contarli.
È possibile che le foreste con 1000 alberi abbiano risultati simili, e che contino molto più velocemente di NS.
 
elibrario:
Non ho provato più di N-100-100-100-1 (401 neuroni).

Non si possono addestrare mostri del genere in modo adeguato. Imho, abbiamo bisogno di un NS più semplice. Da qualche parte fino a 100 neuroni.

 
elibrario:
La linea di fondo della parte 2 dell'articolo:

Cioè una NS profonda con un dropout è analoga a una rete bayesiana. E dropout è in molti pacchetti, puoi prima usarli per cercare i pesci sui loro predittori/target. E poi cercare di migliorare i risultati con Bayes. In articoli di Vladimir Perervenko dropout è stato utilizzato, è possibile sperimentare sulla loro base.

Ho sperimentato, ma non ho trovato nessuna svolta nei miei predittori.
Ma non ho creato reti così profonde da doverne eliminare 1000 neuroni. Non ho provato più di N-100-100-100-100-1 (401 neuroni). Cioè 100 possono essere stati rimossi, ma non 1000. Per rimuoverne 1000, avresti bisogno di una rete con 4-10 mila neuroni e probabilmente ci vorrebbe molto tempo per contarli.
È possibile che le foreste con 1000 alberi abbiano risultati simili, e che contino molto più velocemente di NS.

Oh non lo so, con qualsiasi numero di alberi/foreste l'akurasi smette di crescere e se ne sta lì come una zavorra, senza migliorare nulla. Lasciarli cadere o non lasciarli cadere è un indizio di morte.

Un confronto grossolano tra bayesiani e dropout secondo me, ma non sono ancora molto esperto in materia e non voglio discutere, forse così

 
Maxim Dmitrievsky:

Un confronto grossolano tra Bayes e gli abbandoni secondo me, ma non sono ancora molto esperto in materia e non voglio discutere, forse così

È stato l'autore di questo articolo a fare il confronto, non io. Ha scritto il suo articolo da un altro, più grande, che ha usato per i suoi esperimenti. Cioè, questo confronto viene apparentemente dagli sviluppatori del metodo.

 
Maxim Dmitrievsky:

Oh non lo so, con qualsiasi numero di alberi/foreste l'akurasi smette di crescere e se ne sta lì come una zavorra, senza migliorare nulla. Che li faccia cadere o no, sono un fazzoletto morto.

se hai intenzione di costruire una foresta con 1000 alberi, probabilmente dovresti fornire l'1% dei dati ad ogni foresta, cioè r=0,01, non 0,1 ... 0,6 come raccomandato per le foreste con 100 alberi raccomandati.
 

Ho trovato un codice oscuro nella foresta di Alglib. Codice completo della funzione di calcolo della cross-etropia da 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);
  }

Il frammento di codice segnato in rosso considera qualcosa(tmpi) che non viene utilizzato in alcun modo. Perché è incluso allora?
O manca qualcosa o il codice non è completamente pulito.
In generale, ho iniziato a entrare in questa funzione perché volevo cercare 1 albero. E quando ho impostato il numero di alberi nella foresta = 1, ho visto che tutti gli errori sono tra 0 e 1, e questo da 100 a 300 + succede.
Qualcuno capisce l'entropia incrociata - il codice è anche corretto, o qualcosa è annullato?

Secondo wikipedia dovrebbe essere



 

L'ho confrontato con catbust - ritorna bene, di solito > 0,5 sul test... bene, come al solito

Domani guarderò il calcolo, forse il codice di debug è ancora lì

in generale questa metrica non è di alcuna utilità qui, poiché non viene utilizzata per una pausa anticipata o altro... ed è poco informativa di conseguenza. Si prende un errore di classificazione e questo è tutto