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

 
Non so come conta, il mio conta la percentuale di opzioni non indovinate.
Per esempio su questa variante era 1000 ingressi di cui 600 hanno lavorato in più (ho indovinato) 400 hanno lavorato in rosso (ho indovinato). così l'errore è il numero di opzioni indovinate in relazione a tutte le varianti, in questo esempio, errore = 400/1000 = 0,4

Con rispetto.
 
Andrey Kisselyov:
Non so come funziona per qualcun altro, ma per me conta la percentuale di varianti non fortunate.
Per esempio su questa variante erano 1000 voci di cui 600 lavoravano in più (ho indovinato) 400 lavoravano in rosso (non ho indovinato). Quindi l'errore è il numero di varianti non indovinate in relazione a tutte le varianti, in questo esempio, errore = 400/1000 = 0,4

Con rispetto.

Qui ho capito che l'errore finale è diviso per il numero di campioni moltiplicato per il numero di ingressi per qualche motivo, se lo rimuovi:

return(result/(npoints*df.m_nclasses));

Se lo si moltiplica, si ottiene un risultato abbastanza comprensibile, per esempio 0,5578064232767638 :)


 
Maxim Dmitrievsky:

Qui capisco che l'errore finale è diviso per il numero di campioni moltiplicato per il numero di ingressi per qualche motivo, se lo rimuovi:

Se lo moltiplichi allora il risultato è abbastanza chiaro, per esempio 0,5578064232767638 :)


molto probabilmente
return(result/(npoints*df.m_nclasses));
significa _Point (punti) come punti indovinati da ... o viceversa.

Saluti.
 
Andrey Kisselyov:
molto probabilmente
Significa _Point (punti) come punti indovinati da ... o viceversa.

Cordiali saluti.

No, qui npoints significa la lunghezza del vettore di input :)

Mentre nclasses è il numero di uscite, come

//+------------------------------------------------------------------+
//| This subroutine builds random decision forest.                   |
//| INPUT PARAMETERS:                                                |
//|     XY          -   training set                                 |
//|     NPoints     -   training set size, NPoints>=1                |
//|     NVars       -   number of independent variables, NVars>=1    |
//|     NClasses    -   task type:                                   |
//|                     * NClasses=1 - regression task with one      |
//|                                    dependent variable            |
//|                     * NClasses>1 - classification task with      |
//|                                    NClasses classes.             |
//|     NTrees      -   number of trees in a forest, NTrees>=1.      |
//|                     recommended values: 50-100.                  |
//|     R           -   percent of a training set used to build      |
//|                     individual trees. 0<R<=1.                    |
//|                     recommended values: 0.1 <= R <= 0.66.        |
//| OUTPUT PARAMETERS:                                               |
//|     Info        -   return code:                                 |
//|                     * -2, if there is a point with class number  |
//|                           outside of [0..NClasses-1].            |
//|                     * -1, if incorrect parameters was passed     |
//|                           (NPoints<1, NVars<1, NClasses<1,       |
//|                           NTrees<1, R<=0 or R>1).                |
//|                     *  1, if task has been solved                |
//|     DF          -   model built                                  |
//|     Rep         -   training report, contains error on a training|
//|                     set and out-of-bag estimates of              |
//|                     generalization error.                        |
//+------------------------------------------------------------------+
static void CDForest::DFBuildRandomDecisionForest(CMatrixDouble &xy,
                                                  const int npoints,
                                                  const int nvars,
                                                  const int nclasses,
                                                  const int ntrees,
                                                  const double r,int &info,
                                                  CDecisionForest &df,
                                                  CDFReport &rep)

Quindi, l'errore finale dovrebbe essere moltiplicato per la lunghezza del campione di allenamento moltiplicato per il numero di uscite (se 1, allora le uscite dovrebbero essere omesse).

Può essere utile per qualcuno

Spero di non aver confuso nulla e di averlo fatto bene :) almeno i valori di errore sono chiari
 
Maxim Dmitrievsky:

No, qui npoints significa la lunghezza del vettore di input :)

Allora avete bisogno di guardare cosa è rezult, dato che il divisore è un parametro di input.

Con rispetto.
 
Andrey Kisselyov:
Se questo è il caso, allora ho bisogno di vedere qual è rezult, dato che il divisore è il parametro di input.

Con rispetto.

In breve, è solo un errore medio su tutti i campioni, e non ci serve... rezult restituisce solo l'errore totale, e poi viene diviso per il numero di esempi nel campione (questo può essere rimosso)

 
Maxim Dmitrievsky:

In breve, è solo un errore medio su tutti i campioni, e non ne hai bisogno... rezult restituisce solo l'errore totale, e poi viene diviso per il numero di esempi nel campione

Quindi, dovete riportarlo alla normalità, cosa che avete fatto moltiplicando per il divisore.

Т.е. итоговую ошибку нужно домножить на длину обучающей выборки умноженную на кол-во выходов (если 1 то выходы опускаем)



Con rispetto.

 
Andrey Kisselyov:

Quindi deve essere riportato alla normalità, cosa che avete fatto moltiplicando per il divisore.



Con rispetto.


È la sensazione di ritoccare qualcosa e poi gioire come un bambino :)

 
Maxim Dmitrievsky:

La sensazione quando metti a punto qualcosa e poi gioisci come un bambino :)

Guarda in una credenza e prendi un dolce da un vaso.

Sinceramente.
 
Maxim Dmitrievsky:

In teoria, ci dovrebbero essere pochi errori nelleforeste casuali, perché tutte le variabili sono usate negli alberi decisionali e non c'è una restrizione sull'uso della memoria come nelle reti neurali - il numero di neuroni. Lì si possono usare solo operazioni separate per "offuscare" il risultato, come la restrizione dei livelli, il taglio degli alberi o il backgammon. Non so se l'implementazione di MQ di alglib ha il pruning, backgammon sì

//      R           -   percent of a training set used to build      |
//|                     individual trees. 0<R<=1.                    |
//|                     recommended values: 0.1 <= R <= 0.66.  

Se questa variabile è più piccola di 1, l'errore dovrebbe aumentare.