Regressione bayesiana - Qualcuno ha fatto un EA usando questo algoritmo? - pagina 26

 
СанСаныч Фоменко:

Sì, l'ho fatto... Non ricordo...

Se parliamo del tester, questo è il problema, secondo me.

Prendiamo qualche campione e usiamo il tester per calcolare, per esempio, il fattore di profitto. Poi prendiamo un altro campione e otteniamo un nuovo valore del fattore di profitto. Complessivamente otteniamo due cifre. Due cifre sono la base delle conclusioni statistiche? Queste cifre non significano assolutamente nulla.

Deve essere risolto e viene risolto in modo diverso.

Viene preso un campione. Un certo sottoinsieme viene selezionato a caso da questo campione e contato come fattore di profitto su di esso. Poi di nuovo si prende un campione casuale e così via, per esempio 1000 volte. Otterrete 1000 fattori di profitto. Questo insieme può già servire come base per conclusioni statistiche.

A proposito, questo metodo non esclude l'uso di un tester, demo...

SS, buona giornata!

Un campione di cosa? Affare fatto?

Ho capito dove vuoi arrivare - stimare i quantili delle statistiche del campione per tipo di bootstrap.

Ma la questione rimane, se il TS è montato su tutto il campione disponibile, allora questo metodo mostrerà ciò che già sappiamo, cioè che il fattore di profitto è così buono.

Nel mio blog affronterò la questione in modo un po' diverso. In primo luogo, l'allenamento con k-fold crossvalidation; prendete 5 sottoinsiemi (nel mio caso saranno i dati di 5 coppie di valute) e otterrete un esperimento interessante: l'allenamento del modello su 4 coppie e il test sulla quinta. Voglio ripetere questo esperimento 5 volte. Ma non è tutto. Originariamente ero interessato solo a dimostrare che il forex è predittivo. Quindi, i modelli m-best (sul cutoff della crossvalidation) passeranno la validazione su un grande campione che la macchina non ha ancora visto. Un'altra proprietà del campionamento di convalida è che aggrega prezzi separati per tempo nel futuro. Mi aspetto di ottenere una matrice di 100 * 18 con i risultati di convalida per i primi 100 modelli su 18 variabili di uscita previste (da 2 a 724 minuti nel futuro), ad esempio con il criterio R^2. Questo mostrerà immediatamente se le mie "scatole" prevedono meglio della media.

E se ci fosse uno sponsor per la mia auto-scoperta, si potrebbe affittare una nuvola di Amazon e ripetere l'esperimento 1.000 volte, generando ogni volta un diverso set di allenamento e validazione. E poi ci sarebbe una matrice tridimensionale 1000 * 100 * 18 che permetterebbe di stimare l'errore standard della metrica R^2 per i migliori modelli e per diversi obiettivi. Ma questo è già spesso.

Il mio punto è che dovremmo testare su dati futuri (o su dati passati, ma chiaramente separati dal tempo) e tutto andrà bene.

 
Alexey Burnakov:

CC, buon pomeriggio!

Una selezione di cosa? Transazioni?

Ho capito dove vuoi arrivare - stimare i quantili delle statistiche del campione per tipo di bootstrap.

Ma la questione rimane, se il TS è montato su tutto il campione disponibile, allora questo metodo mostrerà ciò che già sappiamo, cioè che il fattore di profitto è così buono.

Nel mio blog affronterò la questione in modo un po' diverso. In primo luogo, l'allenamento con k-fold crossvalidation; prendete 5 sottoinsiemi (nel mio caso saranno i dati di 5 coppie di valute) e otterrete un esperimento interessante: l'allenamento del modello su 4 coppie e il test sulla quinta. Voglio ripetere questo esperimento 5 volte. Ma non è tutto. Originariamente ero interessato solo a dimostrare che il forex è predittivo. Quindi, i modelli m-best (sul cutoff della crossvalidation) passeranno la validazione su un grande campione che la macchina non ha ancora visto. Un'altra proprietà del campionamento di convalida è che aggrega i prezzi separati per tempo nel futuro. Mi aspetto di ottenere una matrice di 100 * 18 con i risultati di convalida per i primi 100 modelli su 18 variabili di uscita previste (da 2 a 724 minuti nel futuro), ad esempio con il criterio R^2. Questo mostrerà immediatamente se le mie "scatole" prevedono meglio della media.

E se ci fosse uno sponsor per la mia auto-scoperta, si potrebbe affittare una nuvola di Amazon e ripetere l'esperimento 1.000 volte, generando ogni volta un diverso set di allenamento e validazione. E poi ci sarebbe una matrice tridimensionale 1000 * 100 * 18 che permetterebbe di stimare l'errore standard della metrica R^2 per i migliori modelli e per diversi obiettivi. Ma questo è già spesso.

Il mio punto è che dovete fare dei test su dati futuri (o passati, ma chiaramente separati dal tempo) e sarete a posto.

La parola chiave del tuo post è evidenziata in rosso.

L'overfitting (adattamento eccessivo) di un modello è un problema metodologico di tutta la scienza: un modello overfitted (qualsiasi in qualsiasi ramo della conoscenza) rende conto di alcuni particolari sui dati di addestramento, e poi quei particolari non si trovano fuori dai dati di addestramento. Così facendo, il modello non riesce a catturare alcuni modelli che sono comuni alla popolazione generale.

La mia comprensione è che questo problema non è risolto dai modelli stessi, o da qualsiasi tecnica di test statistico: lei nota giustamente che i risultati sovrallenati saranno giustificati. Tentare di usare tecniche di "coartazione" dei modelli nelle mie mani non ha portato a risultati.

Per me il problema del sovrallenamento è interamente generato dal set di dati di input. A livello intuitivo: i dati grezzi (predittori) si riferiscono alla variabile o no. Il caso estremo - non averne affatto - non lo considero. Intermedio: alcuni lo fanno e altri no. Una situazione perfettamente praticabile per esperienza personale è quando i predittori che non sono rilevanti per la variabile obiettivo "mettono a tacere" i predittori che sono rilevanti per la variabile obiettivo. Se si è riusciti a schermare manualmente i predittori rumorosi più odiosi, allora a un certo punto gli algoritmi di screening dei predittori iniziano a funzionare.

I numeri sono i seguenti. Ho selezionato circa 30 predittori dal set iniziale di 50-200 con i miei metodi. Questi 30 item non generano alcun modello sovrallenato, cioè l'efficacia sui campioni di formazione, AOVA, test e validazione è approssimativamente la stessa. Poi usando dei pacchetti (io uso varSelRF, altri sono anche possibili) seleziono i predittori usando una finestra scorrevole, circa 300-500 barre. Ottengo un insieme funzionante di 10-15 predittori. Mentre la finestra si muove, la composizione dei predittori cambia. Anche uno qualsiasi dei set di predittori risultanti non porta al sovrallenamento, ma aumenta le prestazioni dal 5% al 10%. Per i compiti di classificazione questo è circa il 20% di errore.

 
СанСаныч Фоменко:


Per me, il problema del sovraapprendimento è interamente generato dal set di dati di input. A livello intuitivo: se i dati grezzi (predittori) sono rilevanti o meno per la variabile. Il caso estremo - non averne affatto - non lo considero. Intermedio: alcuni lo fanno e altri no. Una situazione perfettamente praticabile per esperienza personale è quando i predittori che non sono rilevanti per la variabile obiettivo "mettono a tacere" i predittori che sono rilevanti per la variabile obiettivo. Se si è riusciti a schermare manualmente i predittori rumorosi più odiosi, allora a un certo punto gli algoritmi di screening dei predittori iniziano a funzionare.

I numeri sono i seguenti. Ho selezionato circa 30 predittori dal set iniziale di 50-200 con i miei metodi. Questi 30 item non generano alcun modello sovrallenato, cioè l'efficacia sui campioni di formazione, AOVA, test e validazione è approssimativamente la stessa. Poi usando dei pacchetti (io uso varSelRF, altri sono anche possibili) seleziono i predittori usando una finestra scorrevole, circa 300-500 barre. Ottengo un insieme funzionante di 10-15 predittori. Mentre la finestra si muove, la composizione dei predittori cambia. Anche uno qualsiasi dei set di predittori risultanti non porta al sovrallenamento, ma aumenta le prestazioni dal 5% al 10%. Per i compiti di classificazione questo è circa il 20% di errore.

Puoi affrontare il rumore selezionando le variabili, come hai detto tu. Ma ho ragione nel dire che stai dicendo che i dati rumorosi impediscono la selezione di buone variabili e dovrebbero essere trovate e rimosse in anticipo da qualche euristica?

E un'altra domanda. State usando una specie di foresta decisionale, come ho capito da questa abbreviazione (io stesso non ho usato un tale metodo).

Qualsiasi albero della foresta decisionale è un algoritmo di selezione della variabile greedy + metrica che permette di tracciare una divisione (confine di cutoff) sull'area dei valori di quella variabile. Quindi, sulla base degli alberi "greedy", dovrebbero selezionare le variabili più significative individualmente ai livelli superiori dei rami. Ai livelli più bassi dell'albero (già a partire dal secondo livello, in effetti), la selezione delle prossime variabili più importanti è già fatta su un sottocampione di osservazioni che sono state generate dai cut-off intermedi. E in questo sottocampione cerchiamo anche la prossima variabile più importante (per ogni variabile passiamo attraverso tutti i cutoff possibili e selezioniamo il migliore, per il quale viene calcolata la metrica di rilevanza della variabile). Ma poiché questo sta già lavorando con un sottocampione di osservazioni, si scopre che in generale la distribuzione condizionata entra in vigore: la var #18 è migliore nel sottocampione #4 data la variabile #2 usata prima. Così, la significatività delle variabili diventa sempre più dipendente dalle variabili utilizzate in precedenza man mano che aumenta la profondità dell'albero.

Secondo l'idea degli autori, le variabili di rumore dovrebbero essere lasciate fuori. MA! La natura avida dell'approccio porta al fatto che, per esempio, le variabili rifiutate al livello 1, in combinazione con altre possibili variabili ad un altro possibile livello 2, possono anche dare un guadagno significativo nella metrica obiettivo, che di per sé è in eccesso. Può anche accadere, nel caso estremo, che due variabili indipendenti, ognuna delle quali è un rumore in termini della variabile obiettivo, diano una tale distribuzione congiunta con la variabile obiettivo che diventano un'interazione significativa. Un modello avido lo cercherà, ma succede raramente, intendo questa configurazione di dati.

Cosa ne pensate?

 
Per favore, rispondete a una domanda: qualcuno di voi ha fatto dei soldi con il forex? Ho già speso 5 anni della mia vita e più di un milione di rubli e finora non ne è venuto fuori niente.
 
Alexey Burnakov:

Puoi affrontare il rumore selezionando le variabili, come hai detto tu. Ma ho ragione nel dire che stai dicendo che i dati rumorosi ci impediscono di selezionare buone variabili e dobbiamo trovarli e rimuoverli prima usando qualche euristica?

Esattamente.

E un'altra domanda. State usando una specie di foresta decisionale, come ho capito da questo acronimo (io stesso non ho usato un tale metodo).

La foresta come esempio, ma il modello scelto del problema, quando le variabili rumorose "affogano" le variabili normali, non risolve il problema: la selezione delle variabili è un problema separato.

 
Mikhail Gorenberg:
Per favore, rispondete a una domanda: qualcuno di voi ha fatto dei soldi con il forex? Ho già speso 5 anni della mia vita e più di un milione di rubli e finora non ne è venuto fuori niente.
Iniziare con i segnali, imparare a selezionare quelli redditizi...
 
Mikhail Gorenberg:
Per favore, rispondete a una domanda: qualcuno di voi ha fatto dei soldi con il forex? Ho già speso 5 anni della mia vita e più di un milione di rubli e finora non ne è venuto fuori niente.
Non c'è da stupirsi, non sei un botanico in termini di quantili, valutazioni incrociate e bootstraps.
 
Mikhail Gorenberg:
Ho già speso 5 anni della mia vita e più di un milione di rubli e finora non ho ottenuto nulla.

Ho finito con circa zero (forse un po' di più). Tutte le mie imprese sono state rovinate dall'avidità.

Anche se hai un robot di trading redditizio (io ne ho uno) - intendo davvero redditizio e consistente - quando funziona e stai aspettando i risultati per mesi, inizia a sembrare che il 30% di crescita non sia sufficiente. E poi viene più lontano. Cioè, anche con il trading completamente automatizzato, dove i rischi sono calcolati e il massimo drawdown è controllato, psicologicamente non mi sento a mio agio.

Ho deciso quindi di usare i quantili.

PS: se farò un buon sistema di trading automatico, lo metterò a disposizione di tutti. E lo affitterò a qualcuno che ha soldi.

 
СанСаныч Фоменко:

Puoi affrontare il rumore selezionando le variabili, come hai detto tu. Ma ho ragione nel dire che stai dicendo che i dati rumorosi ci impediscono di selezionare buone variabili e dobbiamo trovarli e rimuoverli prima usando qualche euristica?

Esattamente.

E un'altra domanda. Stai usando una specie di foresta decisionale, come capisco da questo acronimo (non ho usato io stesso un tale metodo).

Forest come esempio, ma il modello scelto del problema di cui sopra, quando le variabili di rumore "affogano" le variabili normali, non risolve il problema: la selezione delle variabili è un problema indipendente.

Perché il rumore copre il segnale? Non mi è del tutto chiaro.

Vedete, se il modello stesso incorpora la regolarizzazione delle caratteristiche, allora tutti i dati di rumore vengono ignorati dopo aver confrontato il loro effetto sulla variabile obiettivo. Se il modello non fornisce protezione dal sovrallenamento (per esempio, non è stata impostata una soglia più bassa di numero di osservazioni nel nodo terminale dell'albero), allora tutto il rumore sarà utilizzato. Ma questo è risolto anche all'interno della foresta casuale.

Forse puoi spiegare la tua idea in modo più dettagliato?

 
Alexey Burnakov:

Perché il rumore blocca il segnale? Non mi è del tutto chiaro.

Vedete, se il modello stesso include la regolarizzazione delle caratteristiche, allora tutti i dati di rumore vengono ignorati dopo aver confrontato il loro effetto sulla variabile obiettivo. Se il modello non fornisce protezione dal sovrallenamento (per esempio, non è stata impostata una soglia più bassa di numero di osservazioni nel nodo terminale dell'albero), allora tutto il rumore sarà utilizzato. Ma questo è risolto anche all'interno della foresta casuale.

Forse potresti spiegare la tua idea in modo più dettagliato?

Perché il rumore disturba il segnale? Non mi è molto chiaro.

Io no.

Ho un programma che calcola una misura del rapporto tra il predittore e la variabile obiettivo. È un valore astratto.

Se è < 1, è rumore.

1-2 - meglio non scherzare.

oltre 3 - bene.

oltre 5 - buona fortuna, ma rara.

Quindi, se ci sono troppi predittori con un punteggio inferiore a 2, non posso distinguere i predittori utili con nessun altro mezzo se non il mio. Come interpretare questo - non lo so. Non dimentichiamo che i predittori hanno un impatto non solo sulla variabile obiettivo, ma anche tra di loro. Molto spesso non è importante solo la lista dei predittori da eliminare, ma anche l'ordine in cui vengono eliminati.

Dove voglio arrivare?

Il problema di base del trading è il problema dell'overtraining (overfitting), questo è un problema a sé stante e non dipende dai modelli e dai metodi utilizzati.

Motivazione: