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

 
Aleksey Vyazmikin:

Un detto interessante. Tuttavia, gli alberi successivi sono costruiti al fine di ridurre l'errore dalla composizione dell'albero esistente, ma non capisco perché non usano il campionamento allora, dimmi di più in dettaglio, forse non capisco qualcosa di profondo...

Non è che per caso stai esaminando le foglie degli alberi boosting con numero > 1 alimentando i dati grezzi su di loro? Se sì, allora il risultato dovrebbe essere casuale, perché quegli alberi non hanno imparato dai dati di input, ma dagli errori. Quindi stai risolvendo un problema che l'albero e le sue foglie non sono stati addestrati a risolvere.
Se quegli alberi erano da foresta casuale - allora sono tutti addestrati su dati grezzi e puoi usarli (ma non ha senso, perché 1 albero è fortemente inferiore alla foresta in termini di errore). Nel boosting - no, perché 1 albero senza tutti gli altri non ha senso da considerare.

 
elibrario:

Ci sono per caso foglie di alberi boosting con numero > 1, alimentando i dati di input a loro? Se è così, il risultato dovrebbe essere casuale, perché quegli alberi non sono stati addestrati sui dati di input, ma sugli errori. Quindi stai risolvendo un problema che l'albero e le sue foglie non sono stati addestrati a risolvere.
Se quegli alberi erano da foresta casuale - allora sono tutti addestrati su dati grezzi e puoi usarli (ma non ha senso, perché 1 albero è fortemente inferiore alla foresta in termini di errore). Nel boosting - no, perché 1 albero senza tutti gli altri non ha senso da considerare.

Quindi questo segue dalla definizione di boosting come un metodo sequenziale di miglioramento in cui ogni algoritmo successivo cerca di compensare i difetti della composizione da quelli precedenti.
 
elibrarius:

Sì, per ridurre l'errore, prendono l'errore come obiettivo, poi lo sottraggono.

Ecco l'algoritmo per il boosting, lo sto studiando io stesso https://neurohive.io/ru/osnovy-data-science/gradientyj-busting/


Capisco che questo è il classico boosting. Forse catbust ha inventato qualcosa di suo...

Ho dato un'occhiata all'articolo. Sì, mi sembra che si costruisca un albero, lo si applichi al campione e si calcoli il delta tra gli obiettivi reali e quelli predetti, poi si costruisce l'albero successivo per ridurre l'errore, cioè per predire il delta. Ma, di fatto, nuovi alberi sono costruiti allo stesso modo sullo stesso campione e si formano nuove e nuove connessioni, cioè di fatto cambia solo l'obiettivo. Ma tale approccio dà l'opportunità di trovare nuove connessioni (foglie) che non saranno ovvie in una foresta casuale, e queste connessioni dipendono dal primo albero, e dipende dal campione (che non è una novità), ma gli alberi successivi in CatBoost saranno costruiti o al numero impostato di iterazioni, o al segno di arresto, e questo segno è definito su un campione di prova. Il segno è un qualsiasi indicatore stimato della qualità del modello (c'è una lista di diversi indicatori). Seleziono l'arresto dell'allenamento sull'indicatore, poiché vorrei ottenere un miglioramento su due campioni contemporaneamente, e se è solo sul campione di allenamento, è chiaramente un eccesso di allenamento. Questo è il motivo per cui c'è una domanda sulla dimensione del campione che influisce direttamente sull'apprendimento, cioè se anche la dimensione del campione di addestramento è costante, allora la dimensione del campione di test influenzerà l'apprendimento.


elibrarius:

Ci sono per caso le foglie degli alberi boosting con numero > 1, dando loro in pasto i dati grezzi? Se è così, allora il risultato dovrebbe essere casuale, perché quegli alberi non stavano imparando dai dati grezzi, ma dagli errori. Quindi stai risolvendo un problema che l'albero e le sue foglie non sono stati addestrati a risolvere.
Se quegli alberi erano da foresta casuale - allora sono tutti addestrati su dati grezzi e puoi usarli (ma non ha senso, perché 1 albero è fortemente inferiore alla foresta in termini di errore). Nel boosting - no, perché 1 albero senza tutti gli altri non ha senso da considerare.

Buon punto, sto preparando una piattaforma per studiare le foglie (in catbust è più simile agli alberi binari). Il risultato può essere trascurabile se ci sono molti alberi, ma ci possono essere collegamenti decenti, anche in teoria, se il primo albero aveva un grande errore nella sua foglia, e il quarto albero ha corretto questo errore nella sua foglia, allora in effetti il nuovo collegamento avrà un senso logico e classificherà esso stesso correttamente il campione. Tecnicamente, catbust ha un array con il risultato della risposta di ogni albero binario (foglia), poi queste risposte vengono sommate, ma il trucco è che per linea di campionamento solo una piccola frazione di alberi binari (foglie) dà una risposta. Quindi teoricamente è possibile rimuovere (azzerare) gli alberi binari (foglie), che hanno una capacità predittiva molto bassa, perché sono o alberi con errore iniziale o piccoli fit (sul fatto retraining) e lasciare foglie solo con valori significativi. L'altra direzione è quella di utilizzare queste connessioni per stimare l'importanza dei predittori, dove c'è un grande peso nell'array finale, quelle connessioni e quindi i predittori sono significativi, gli altri sono schermati dalla soglia come meno significativi. Se eseguiamo tale setacciamento, il modello può essere addestrato prima sui predittori più significativi e poi sui predittori meno significativi, il che dovrebbe migliorare il risultato dell'addestramento, poiché i predittori meno significativi non impediranno la costruzione di relazioni più stabili ma le integreranno solo quando possibile.

La linea di fondo è che gli alberi binari spazzatura non sono davvero interessanti per l'adattamento, mentre le micro-analisi (2-3 alberi binari (foglie)) con un alto peso comune o singoli alberi binari sono anche di grande importanza e possono essere utilizzati separatamente per la classificazione.

Sfortunatamente, non ho un meccanismo per tirare i singoli alberi binari (nel senso di foglia normale) e convertirli in una normale regola leggibile, quindi tutto è solo in teoria, ma sono aperto alla collaborazione.

 
Aleksey Vyazmikin:

Sfortunatamente non ho attualmente un meccanismo per estrarre i singoli alberi binari (nella normale comprensione delle foglie) e convertirli in una normale regola leggibile, quindi tutto è ancora solo in teoria, ma sono aperto alla collaborazione.

E come si fa a tirare il modello in mt5? Vorrei scambiarlo o farlo funzionare in tester. Ci sto lavorando da molto tempo ma non ne ho idea, dovrei usare Python e collegarlo con mt5 o usare katbust binary.

 
Maxim Dmitrievsky:

Come si disegna il modello in mt5? Cosa scambiare lì o eseguirlo nel tester. Sto pensando, quale sarebbe il modo migliore per costruirlo, non ho ancora deciso: andare in Python e collegarlo a mt5 o usare katbust binary.

Convertirò un modello per C++ in MQL5 - infatti, solo gli array sono presi lì, e c'è un interprete di questo modello in MQL (non il mio codice). Così, i modelli sono caricati nell'Expert Advisor e ora posso caricare centinaia di modelli attraverso il file e guardarli nel terminale, compresa la corsa attraverso l'ottimizzatore.

 
Aleksey Vyazmikin:

Ho convertito un modello per C++ in MQL5 - infatti, solo gli array sono presi lì, e c'è un interprete di questo modello in MQL (il codice non è mio). Di conseguenza, i modelli sono stati caricati in Expert Advisor e ora posso caricare centinaia di modelli attraverso un file e guardarli nel terminale, inclusa l'esecuzione attraverso l'ottimizzatore.

Bene, ecco un articolo da scrivere con qualche quadro e idea (l'idea dovrebbe essere non meno dello spazio), e quale aiuto è necessario, o coop cosa c'è

Capisco che la comunità sia divisa: alcuni si stanno ritirando, altri stanno generalizzando. Io, per esempio, non sono d'accordo con questo approccio, forse solo non ho afferrato completamente l'idea
 
Maxim Dmitrievsky:

Beh, ecco un articolo da scrivere con qualche quadro e idea (l'idea dovrebbe essere non meno che cosmica), e quale aiuto è necessario, o coop cosa c'è là fuori

Non ho una profonda conoscenza teorica per gli articoli, invento concetti diversi e cambio le interpretazioni dei fenomeni stabiliti - non è un approccio accademico.

Penso che un interprete del modello sarebbe interessante, ma non posso pubblicarlo perché il codice non è scritto da me.

E qualsiasi cosa lasciata in teoria, con codice che non può essere applicato (a causa delle classi chiuse), non credo che sarebbe interessante. E il processo di creazione e selezione dei modelli, penso che tutto sia risolto, e non c'è interesse.

 
Maxim Dmitrievsky:

Capisco che la comunità sia divisa: alcuni si tirano indietro, altri generalizzano. Io, per esempio, non sono d'accordo con questo approccio, forse solo non ho afferrato pienamente l'idea

E non conosco la comunità, cioè non so come fanno gli altri in altri campi?

Tirare i dati mi sembra logico, perché sto cercando un modello di comportamento umano (o un algoritmo) con l'aiuto del MO, ci possono essere molti modelli di comportamento e possono essere indipendenti, quindi ha senso tirarne fuori il maggior numero possibile, perché è impossibile generalizzarli tutti insieme. E per qualcuno, il mercato è qualcosa di intero, il risultato del lavoro di una mente collettiva, una specie di organo di voto senza regole. Apparentemente, per questa situazione stanno cercando un modello che descriva il comportamento del mercato come un organismo separato.

 
Aleksey Vyazmikin:

Se il primo albero aveva un grande errore nella propria foglia e il quarto albero ha corretto questo errore nella propria foglia, allora in effetti il nuovo collegamento avrà un senso logico e classificherà correttamente il campione.

Non ne sono sicuro, il quarto albero corregge gli errori del primo con le sue foglie. Penso che solo in coppia abbiano senso. Ma potrei sbagliarmi. Dato che non ho sperimentato queste cose.

 
elibrario:

Non ne sono sicuro, il quarto albero corregge gli errori del primo con le sue foglie. Penso che solo in coppia abbiano un senso. Ma potrei sbagliarmi. Poiché non ho sperimentato queste cose.

Se siamo molto primitivi, il primo albero non ha risposta al campione, restituisce zero, mentre il quarto albero ha questa risposta e considera "probabilità" 0,6 - tecnicamente abbiamo corretto l'errore del primo albero, ma in realtà abbiamo rivelato una connessione che prima non esisteva affatto. Anche se assumiamo che tutti gli alberi condividano l'intero campione (che non è il caso apparentemente), facciamo che sia 0,1 invece di zero, e l'albero successivo ha 0,5, lo stesso effetto qui. Lì la probabilità non è esattamente probabilità, i valori nella matrice sono poi convertiti in qualcosa di simile alla probabilità solo dopo che tutti i valori degli alberi binari attivati sono sommati.

Motivazione: