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

 

1) Ho capito bene il significato di dividere il dataset in training, validazione e test:?

a) lo insegniamo su un trainer
b) controllare l'errore nella validazione, se è molto più grande che nel trainer, tornare a 1, fino a quando l'errore è lo stesso (quanto è lo stesso - 5% dell'errore totale? Per esempio il 15% sul tutorial e il 20% su quello di convalida)
c) Controllare su un test, se l'errore è lo stesso con i primi due set (quanto lo stesso?) allora il modello è stabile e può essere eseguito, se non lo è allora possiamo dimenticarlo. E cerca altri predittori, cambia filtro, ecc.

2) A proposito, qual è il tasso di errore per la formazione/validazione/test a cui mirare? 15/20/20% o forse 5/10/15%? o altro?

3) Non ho capito bene perché si consiglia di mescolare gli esempi di allenamento? Elaboreremo comunque ogni esempio.

 
elibrario:

A proposito, qual è il livello di errore nella formazione/validazione/test a cui puntare? 15/20/20% o forse 5/10/15% o altro?

In precedenza, sì, qualcosa del genere.

Per quanto riguarda l'errore, dipende dalle specifiche. Se, per esempio, MO o NS determinano l'entrata in un trade, allora il 50% di errore può essere sufficiente. Per esempio, in un trade di successo si ottiene una media di 2-3p di profitto, e in uno senza successo 1p di perdita. In questo caso 0,5 non è una cattiva probabilità.

 
Yuriy Asaulenko:

Il precedente, sì, in qualche modo.

Per quanto riguarda l'errore, dipende dalle specifiche. Se, per esempio, MO o NS determinano l'entrata in un trade, allora il 50% di errore può essere sufficiente. Per esempio, in un trade di successo si ottiene una media di 2-3p di profitto, e in uno senza successo 1p di perdita. In questo caso 0,5 non è una cattiva probabilità.

0,5 sembra essere troppo piccolo... Quali valori dovreste cercare di raggiungere nella pratica (non qualche altro problema NS, ma per il trading)?
Perché voglio imparare fino al 10%, ma se questa cifra non è realistica, sprecherò il mio tempo e la mia CPU. Diciamo - qual è il miglior errore che avete raggiunto e a quale livello è possibile fermarsi e non cercare di migliorare?
 
elibrario:
0,5 potrebbe essere un po' troppo piccolo... E a quali valori dovrei tendere? Quali posso davvero raggiungere nella pratica (non qualche altro compito NS, ma per il trading)?
Perché voglio imparare fino al 10%, ma se questa cifra non è realistica, sprecherò il mio tempo e la mia CPU. Diciamo - qual è il miglior errore che avete raggiunto e a quale livello è possibile fermarsi e non cercare di migliorare?

0,5 non è sufficiente? Non ci posso credere). Ho già fatto questo esempio: il giocatore di poker ha 1/9-1/6 di probabilità di vincere, e i buoni giocatori sono sempre in nero.

E tutti i miei sistemi funzionavano a ~0,5 di probabilità, ed erano sempre in positivo. Per quanto ne so, molti TS lavorano con probabilità vicine allo 0,5 - è stato menzionato alla conferenza di autotrading, in particolare.

"Altrimenti voglio allenarmi fino al 10%, ma se è una cifra irrealistica" - che sia reale o irrealistica dipende dal compito specifico. Per esempio, ho insegnato a NS a incrociare le MA - quindi è quasi affidabile al 100%)).

 
Yuriy Asaulenko:

0,5 non è sufficiente? Non ci posso credere). Ho già fatto questo esempio: il giocatore di poker ha 1/9-1/6 di probabilità di vincere, e i buoni giocatori sono sempre in nero.

E tutti i miei sistemi funzionavano a ~0,5 di probabilità, ed erano sempre in positivo. Per quanto ne so, molti TS lavorano con probabilità vicine allo 0,5 - è stato menzionato alla conferenza di autotrading, in particolare.

"Altrimenti voglio allenarmi fino al 10%, ma se è una cifra irrealistica" - che sia reale o irrealistica dipende dal compito specifico. Per esempio, ho insegnato a NS a incrociare le MA - quindi è quasi affidabile al 100%)).

È vero, si può fare senza alcuna previsione (50%), basta prendere profitto più dello stop. In realtà non si può prevedere nulla, nessuno sa dove andrà il prezzo nel Forex, solo gli addetti ai lavori, i burattinai lo sanno.

 
Vasily Perepelkin:

In realtà è impossibile prevedere qualcosa, nessuno sa dove andrà il prezzo nel mercato del forex, solo gli addetti ai lavori, i burattinai lo sanno.

In realtà è possibile. Non credo che sia possibile usare lo 0,5 con previsioni e takeaway superiori allo stop, non è lo stesso del 50/50 e se Dio vuole). - Cioè, senza una previsione. Stiamo lanciando una moneta completamente diversa)).
 
elibrario:

1) Ho capito bene il significato di dividere il dataset in training, validazione e test:?

a) imparare su un allenatore
b) controllare l'errore su quello di convalida, se è molto più grande di quello di addestramento, andare al passo 1 fino a quando l'errore è lo stesso (quanto è lo stesso - 5% dell'errore totale? Per esempio il 15% sul tutorial e il 20% su quello di convalida)
c) Controllare su un test, se l'errore è lo stesso con i primi due set (quanto lo stesso?) allora il modello è stabile e può essere eseguito, se no, possiamo dimenticarlo. E cerca altri predittori, cambia filtro, ecc.

2) A proposito, qual è il tasso di errore per la formazione/validazione/test a cui mirare? 15/20/20% o forse 5/10/15%? o altro?

3) Non ho capito bene perché si consiglia di mescolare gli esempi di allenamento? Elaboreremo comunque ogni esempio.


1) Non tutti e questo è fondamentale.

Prendiamo un grande file. Dividilo in due parti disuguali.

La parte più grande è divisa come hai descritto. Otteniamo gli errori che dovrebbero essere approssimativamente uguali.

Dopo di che controlliamo il modello nella seconda parte del file. L'errore in questa parte di nuovo non dovrebbe essere molto diverso.

Questa è la prova più importante della mancanza di perobuchi (overfitting).


L'entità dell'errore? Questa è una specie di costante che deriva dall'insieme dei predittori che possono essere ridotti adattando il tipo di modello.


Per esempio.

Se avete tutti e quattro gli errori intorno al 35%, allora selezionando un modello, Dio non voglia che riduciate l'errore al 30%.


PS.

Un errore inferiore al 10% è un chiaro segno di sovrallenamento. Se avete un tale errore, dovreste ricontrollare cento volte.

 

Ho trovato un arresto anticipato con sezione di convalida in ALGLIB:

Addestramento della rete neurale con arresto anticipato (algoritmo di base - L-BFGS con regolarizzazione).
...
L'algoritmo si ferma se l'errore del set di convalida aumenta per un lungo
abbastanza o la dimensione del passo è abbastanza piccola (ci sono compiti in cui
set di convalida può diminuire per l'eternità). In ogni caso la soluzione
restituito corrisponde al minimo dell'errore del set di convalida.

A giudicare dal codice, non confronta l'errore nelle sezioni di allenamento e di convalida, ma cerca l'errore minimo nella sezione di convalida. E si ferma se non ne trova uno migliore dopo 30 iterazioni, o se tutte le iterazioni sono passate.

Ma non sono sicuro che questo metodo sia migliore/più accurato del solito... A meno che il numero di cicli di allenamento non venga aumentato di diverse volte...

Ecco cosa ne è venuto fuori:

Errore medio in formazione (80%) =0,535 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
Errore medio sulla sezione di convalida (20%) =0,298 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
Trama completa (formazione + convalida):
Errore medio di apprendimento=0,497 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
Errore medio sul test (20%) sezione =0.132 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6

Sembra che ci sia stato un adattamento alla trama di convalida. Quello di prova ha generalmente successo, ma non era in allenamento e non è stato confrontato, probabilmente solo una coincidenza.
Questo f conta gli insiemi, e c'è una divisione di 2/3 e tutto è mescolato tra le due trame, cercherò di fare lo stesso...
L'ha mischiato:

Errore medio in formazione (60%) area =0.477 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
Errore medio sulla convalida (40%) sezione =0,472 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
Trama completa (formazione + convalida):
Errore medio di apprendimento=0.475 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
Errore medio sul test (20%) sezione =0.279 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6

A causa della miscelazione, l'errore è livellato nelle sezioni di addestramento e di convalida.

Qualcosa mi sembra sbagliato, perché nel trading reale le barre andranno nel loro ordine, e non mescolate con quelle di un'ora e un giorno fa.
E se la "natura" del mercato cambia, significa che dobbiamo reimparare o cercare nuovi modelli NS.

 
Yuriy Asaulenko:
In realtà è possibile. 0,5 con previsione e presa non è lo stesso che 50/50 con la volontà di Dio)) - Cioè, senza una previsione. Stiamo lanciando una moneta completamente diversa)).
Se apriamo a caso e prendiamo uno stop loss 2 volte superiore, per esempio, e basta, avremo un profitto statistico, per esempio 100 trade con 10 punti di profitto e 100 con 5 punti di perdita, come risultato abbiamo 500 punti di profitto, non abbiamo bisogno di alcuna previsione.
 
SanSanych Fomenko:


1) Non tutti ed è fondamentale.

Prendiamo un grande file. Dividilo in due parti disuguali.

Dividi la parte più grande nel modo che hai descritto. Otteniamo gli errori, che dovrebbero essere circa uguali.

Dopo di che il modello viene controllato sulla seconda parte del file. L'errore in questa parte di nuovo non dovrebbe essere molto diverso.

Questa è la prova più importante della mancanza di feathering (overfitting).

Si scoprono 4 trame? Formazione/validazione/test1/test2 ?

Quanti cicli di formazione/convalida devi fare? Non ho visto nessuna informazione al riguardo da nessuna parte... 1 ciclo in totale? - e subito dopo approviamo o cambiamo qualcosa nel set di predittori o nello schema della rete? Più precisamente per N cicli di allenamento ci verrà mostrato uno dei migliori.