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

 
Yury Reshetov:
Ebbene, la sostenibilità si ottiene prevenendo il potenziale eccesso di apprendimento. E un campione di allenamento sbilanciato è una potenziale causa di sovrallenamento per le classi poco rappresentative. Dopo tutto, l'algoritmo di apprendimento cerca di agire come meglio crede, non come deve per aumentare la generalizzabilità. Se il campione è sbilanciato, minimizzerà gli errori di apprendimento sulle classi meno rappresentative, perché gli esempi per queste classi sono pochi ed è più facile imparare a memoria invece di generalizzare. Dopo un tale apprendimento meccanico non c'è nulla di cui sorprendersi se al di fuori del campione di allenamento gli errori algoritmici più probabili saranno nelle classi meno rappresentative.
Non ho nulla contro il bilanciamento del campione di allenamento. Non ho nulla in contrario a prendere un sottocampione casuale per la convalida senza tagliare per date. Si sopravvaluterebbe la metrica sulla convalida.
 
Alexey Burnakov:

Il pensiero è semplice. Nella vita reale, nessuno vi permetterà di prendere un campione misto contenente osservazioni del futuro per valutare la qualità del trading reale. Tutte le osservazioni andranno dopo il giorno X.

Quindi, prendendo un campione misto nella convalida (senza separazione delle date), state sovrastimando la metrica di qualità sulla convalida. Questo è tutto. Allora ci saranno sorprese spiacevoli.

Cosa c'entra il pensiero? Il pensiero è soggettivo. Il pensiero può essere sia corretto che deliberatamente sbagliato. Perché l'immaginazione è problematicamente limitata. Il criterio della verità è sempre l'esperienza.

Prendete due campioni di allenamento, uno pre-bilanciato e l'altro altamente sbilanciato. Addestrare l'algoritmo su entrambi i campioni e misurare la capacità di generalizzazione sulle parti di prova. Poi confrontare la capacità di generalizzazione. Quello che dà la migliore capacità di generalizzazione sarà il criterio di verità.

Altrimenti penseremo e speculeremo fino a perdere il polso. Dopo tutto, il disaccordo nasce nel dibattito, la verità nasce nell'esperienza.

Quindi ho finito di discutere ulteriormente l'argomento del campione di allenamento bilanciato. Altrimenti questo coro può continuare all'infinito, dato che ci sono due opinioni diverse e continuare a misurare chi di noi pensa più correttamente è una perdita di tempo.

 
Yury Reshetov:
Bene, la stabilità si ottiene evitando il sovrallenamento. E un campione di allenamento sbilanciato è una potenziale ragione di sovrallenamento per le classi poco rappresentative. Dopo tutto, l'algoritmo di apprendimento cerca di agire come meglio crede, non come deve per aumentare la generalizzabilità. Se il campione è sbilanciato, minimizzerà gli errori di apprendimento sulle classi meno rappresentative, perché gli esempi per queste classi sono pochi ed è più facile imparare a memoria invece di generalizzare. Dopo un tale apprendimento meccanico, non è sorprendente che al di fuori del campione di allenamento, gli errori dell'algoritmo nelle classi meno rappresentative sono più probabili.

1. Su classi sbilanciate, è un casino: l'errore tra le classi può divergere di diverse volte. E qual è quello giusto?

2. Non è sempre possibile bilanciare le classi.

Il tuo esempio con BUY|SELL. Quando il numero di osservazioni (barre) è superiore a 3000 la differenza di squilibrio sarà del 10% al massimo del 20%. È abbastanza possibile bilanciare.

E quiDr.Trader ha suggerito la variabile target "Pivot/Non Pivot". Credo che l'abbia preso da ZZ. Quindi, in questa variabile obiettivo, le classi sbilanciate varieranno di ordini di grandezza. Se aumentiamo alla classe massima, possiamo insegnare su un campione così equilibrato? Mi sembra di no.

Quindi non è così semplice con il bilanciamento.

Dalla mia esperienza personale:

  • se lo squilibrio non è grande (non più del 20%) allora il bilanciamento è obbligatorio.
  • Se lo squilibrio è grande (multiplo), allora non si può bilanciare e non si dovrebbe usare affatto questa variabile obiettivo.

Non ho potuto trovare altre soluzioni.

 
Yury Reshetov:
Mollo tutto e divento un adepto della R per poter giocare i numeri con una faccia seria.
Finora non ho notato che giochi a numeri, ma non so la tua faccia.
 
SanSanych Fomenko:
Finora non ho notato che giochi a numeri, ma non so la tua faccia - non riesco a vederla.
Beh, ho una faccia piuttosto seria nel mio avatar, no? Almeno ho cercato di renderlo il più serio possibile. Ma a quanto pare non è andata molto bene, vero?
 
Yury Reshetov:

Cosa c'entra il pensiero? Il pensiero è soggettivo. Il pensiero può essere sia corretto che deliberatamente sbagliato. Perché l'immaginazione è problematicamente limitata. Il criterio della verità è sempre l'esperienza.

Prendete due campioni di allenamento, uno pre-bilanciato e l'altro altamente sbilanciato. Addestrare l'algoritmo su entrambi i campioni e misurare la capacità di generalizzazione sulle parti di prova. Poi confrontare la capacità di generalizzazione. Quello che dà la migliore capacità di generalizzazione sarà il criterio di verità.

Altrimenti penseremo e speculeremo fino a perdere il polso. Dopo tutto, il disaccordo nasce nella discussione e la verità nasce nell'esperienza.

E quindi smetterò di discutere ulteriormente l'argomento del bilanciamento del campione di allenamento. Altrimenti questo cholivar può continuare all'infinito perché ci sono due opinioni diverse e continuare a misurare a chi di noi pensa correttamente - una perdita di tempo.

Io intendo una cosa, tu un'altra. Io dico che dovremmo dividere il set rigorosamente per date. E tu parli di equilibrio.
 
Alexey Burnakov:
Io intendo una cosa, tu un'altra. Io dico che bisogna dividere il set rigorosamente per date. E tu parli di equilibrio.

Mi dispiace, ma ho già detto che non vedo il motivo di continuare questo coro. Ho già cercato di spiegare i difetti dell'equilibrio con degli esempi. Probabilmente non è molto convincente, vero? Non sono bravo nella retorica nera, quindi non posso trasformare il nero in bianco con una faccia seria. Quindi non siate troppo duri con me.

È più probabile che tu stia cercando di convincermi che stai presumibilmente cercando di "costringerti" a bilanciare la realtà? Ma non ho questa intenzione. So che la realtà è, purtroppo per me, spesso sbilanciata e le opportunità di equilibrarla non sono sempre disponibili. Perciò nei miei post ho cercato di spiegarvi che non è necessario cercare di bilanciare la realtà al di fuori del campione di allenamento, ma è necessario e sufficiente bilanciare il campione di allenamento, in modo che il modello ottenuto da esso non sia sbilanciato nella direzione delle classi altamente rappresentative. Quando si divide il campione generale in parti per date, è anche spesso impossibile raggiungere un equilibrio. Ecco perché io bilancio il campione di formazione non in base alle date, ma in base all'equa rappresentatività delle classi in esso contenute.

Non ho intenzione di rispondere ad altre domande sul bilanciamento del set di allenamento. Quindi questo coro si è già trascinato.

 
Yury Reshetov:

Mi dispiace, ma ho già detto che non vedo il motivo di continuare questo coro. Ho già cercato di spiegare i difetti dell'equilibrio con degli esempi. Probabilmente non è molto convincente, vero? Non sono bravo nella retorica nera, quindi non posso trasformare il nero in bianco con una faccia seria. Quindi non siate troppo duri con me.

È più probabile che tu stia cercando di convincermi che stai presumibilmente cercando di "costringerti" a bilanciare la realtà? Ma non ho questa intenzione. So che la realtà è, purtroppo per me, spesso sbilanciata e le opportunità di equilibrarla non sono sempre disponibili. Perciò nei miei post ho cercato di spiegarvi che non è necessario cercare di bilanciare la realtà al di fuori del campione di allenamento, ma è necessario e sufficiente bilanciare il campione di allenamento, in modo che il modello ottenuto da esso non sia sbilanciato nella direzione delle classi altamente rappresentative. Quando si divide il campione generale in parti per date, è anche spesso impossibile raggiungere un equilibrio. Perciò equilibro il campione di allenamento non in base alle date, ma in base all'equa rappresentatività delle classi in esso contenute.

Non risponderò ad altre domande sul bilanciamento del set di allenamento. Quindi stiamo già facendo un gran casino.

OK . Non vi convincerò.
 

Voglio intervenire per completare il quadro e ribadire la mia opinione sopra il thread.

1. Bisogna avere due serie di dati: la seconda è un'estensione della prima nel tempo.

2. Bilanciare la prima serie di dati. Sicuramente lo bilanciamo.

3. Dividiamo casualmente il primo set di dati in tre parti: training, testing e validazione.

  • Insegniamo il modello usando la convalida incrociata sul dataset di allenamento.
  • Eseguiamo il modello addestrato attraverso i set di test e di validazione.
  • Se l'errore in tutti e tre i set è approssimativamente uguale, si procede al punto 4. Altrimenti si procede alla ricerca di predittori più decenti poiché una differenza significativa nell'errore dimostra che il modello è sovrallenato a causa della presenza di predittori di rumore (che hanno una relazione debole con la variabile obiettivo).

4. Otteniamo un errore sul secondo set, che è una continuazione del primo set nel tempo.

Se l'errore su tutti i QUATTRO set è circa lo stesso, allora il modello non viene riqualificato. Se l'errore ha un valore decente, possiamo tranquillamente andare oltre, cioè farlo passare attraverso il tester.

Se c'è una differenza significativa (più del 30%), allora il set di predittori originale porta al retraining del modello e per esperienza personale sostituire il tipo di modello non può risolvere nulla, in termini di retraining. Dobbiamo sbarazzarci dei predittori di rumore. Può facilmente accadere che non ci siano affatto predittori di rumore tra i predittori.

 
Sosterrò la vostra conversazione signori, perché sto usando l'ottimizzatore di Yuri da più di un anno e sono assolutamente d'accordo con lui sul campionamento con il generatore HSPF. Il punto è che il compito è quello di identificare le informazioni nei dati di input sulle informazioni di output. Cioè, l'ottimizzatore ti dice quanto sono informativi i dati di input per il nostro output (che è ideale). Cioè, l'ottimizzatore risponde a questa domanda. E se i dati mostrano un cattivo risultato, significa che non portano informazioni sull'uscita o piuttosto portano a quel livello di generalizzazione che il predittore dà. E ora immaginate il seguente caso: supponiamo di avere 10 ingressi. Domanda, quante voci (stroi) dobbiamo avere per dividere il campione a zero???? Ti darò un indizio. 100 voci con 10 ingressi dovrebbero ottimizzare a zero. Perché a 100 voci sarà un'enumerazione totale di dati. Forse non sono stato chiaro, mi scuso. Yuri certamente non ne parla, ma c'è una sfumatura dell'uso di un predittore, che non è pubblicizzato, ma che aumenta la generalità di qualsiasi dato. Cioè per 10 ingressi, date 100 linee, anche completamente irrilevanti per i dati del sistema. L'algoritmo costruirà un modello in cui la generalizzabilità è alta. Nell'intervallo del 90% e oltre. Non è certo che questo modello funzionerà adeguatamente in futuro perché i dati sono presi dal soffitto e non si riferiscono al sistema in alcun modo. Ma il Predictor è capace di segare uno spazio multidimensionale con un errore minimo. Ma per questo è necessario eseguire una complicata manipolazione dei dati. Ma sono completamente d'accordo con Yuri. Il compito è quello di identificare l'informatività degli input rispetto agli output e l'ordine dei dati in questo caso non gioca alcun ruolo. HSPF è un'opzione in questo caso....