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

 
Andrey Khatimlianskii:

In questo thread, un post ospite. Sono passato solo per condividere un articolo

Nummerai cadde per lo slogan "Proletari di tutti i paesi unitevi!" di Karl Marx, come interpretato da Geoffrey Hinton:)
 
Maxim Dmitrievsky:

Questo, tra l'altro, è accurato.

Considerando il numero di idioti sul forum (tra cui il tuo mudo mago preferito ...) non credo che sia necessario sostenere questo argomento più, perché ho ricevuto quasi nessun beneficio per me

Maxim, ti sbagli! C'è un beneficio per voi, un beneficio nella stessa formulazione e presentazione dei compiti. Tuttavia, non sto cercando di persuadervi.

 
Yuriy Asaulenko:

Maxim, ti sbagli! C'è un beneficio per voi, un beneficio nella formulazione e presentazione stessa dei compiti. Tuttavia, non sono persuasivo.

Si vede che qui vivono degli idioti clinici, non sono maschere da forum ma casi reali, tu gli dici una parola e loro te ne dicono due dopo ogni post.

 
elibrario:

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



Il valore in generale può essere fino all'infinito quando si calcola il logloss se la classe corretta è prevista avere probabilità zero, perché la formula include tutte le altre classi tranne essa con coefficiente zero, e sembra che ci sia qualche tentativo di risolvere questo inconveniente - in tmpi nel ciclo trova la classe che ha il più alto valore di probabilità nel campione, forse voleva aggiungere alla formula, ma probabilmente non ci ha pensato bene:)
 
Ivan Negreshniy:
Il valore in generale all'infinito può essere quando si calcola il logloss se la probabilità zero è prevista per la classe corretta, perché la formula include tutte le altre classi tranne che con coefficiente zero, e sembra che abbiano cercato di risolvere in qualche modo questo inconveniente - in tmpi nel ciclo trova la classe che in un dato campione ha il più alto valore di probabilità, forse voleva aggiungere alla formula, ma apparentemente non ci ha pensato fino in fondo:)
tmpi è usato solo in 1 su 5 funzioni di errore. Apparentemente è stato usato come manichino per altre funzioni, ma in altre funzioni hanno dimenticato di rimuoverlo.
In totale, 1 tmpi è presente e in uso, altri 2 sono presenti ma non utilizzati.
Nel complesso, non influisce sul funzionamento.
 
elibrarius:
tmpi è usato solo in 1 delle 5 funzioni di errore. Apparentemente è stato usato come manichino per altre funzioni, ma ha dimenticato di rimuoverlo in altre.
Tutto sommato, 1 tmpi è presente e in uso, altri 2 sono presenti ma non sono utilizzati.
In generale, non influisce sul funzionamento.

Quello che voglio dire è che una buona formula per il calcolo dell'errore potrebbe prendere in considerazione la distribuzione di probabilità su tutte le classi invece di una sola corretta.

Detto questo, se uno dei campioni ha probabilità zero di una classe corretta, allora tutto vola all'infinito.

Apparentemente questo è il motivo per cui preferisco la regressione con un errore quadratico:)

 
Ivan Negreshniy:
In pratica sto dicendo che una buona formula di calcolo dell'errore potrebbe prendere in considerazione la distribuzione di probabilità su tutte le classi, non solo una corretta.
Bene, ci sono 5 errori. Questo è un po' strano, ma gli altri 4, come dovrebbero da 0 a 1 cambiano. Quindi c'è una scelta)
 
Ora lasciate che Kesha (il nipote di SanSanych) e l'investitore ucciso Aliosha gestiscano la filiale. Sarebbe giusto.
 
Alexander_K2:
Ora lasciamo che Kesha (nipote di SanSanYch) e Alyosha, che è stato punito dagli investitori, guidino questo thread. Sarà giusto.

Ha più senso abbandonare questo argomento e iniziarne uno nuovo, più adeguato, con altri argomenti correlati.

A proposito, ho trovato una distribuzione normale nei prezzi. Ho già scritto in Tip che tutte le anomalie provengono da un'elaborazione "scorretta" dei dati - lo facciamo noi stessi).

Lo posterò nel thread di Python uno di questi giorni o prima.

 
Yuriy Asaulenko:

Ha più senso abbandonare questo argomento e iniziarne uno nuovo, più adeguato, con altri argomenti correlati.

A proposito, ho trovato una distribuzione normale nei prezzi. Ho già scritto in Tip che tutte le anomalie provengono da un'elaborazione "scorretta" dei dati - lo facciamo noi stessi).

Lo posterò nel thread di Python uno di questi giorni o prima.

Ahimè, a causa della mancanza di persone su questo forum al livello di Matemat, Northwind e Prival, tutti questi argomenti non hanno futuro. IMHO.