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

 
Maxim Dmitrievsky:

Tutti i castori costruiscono la stessa diga, anche se non lo sanno.

ma ognuno crede ostinatamente di aver inventato qualcosa di nuovo.

Il castoro è una creatura laboriosa e giusta, tutt'altra cosa ,un castoro studioso è una creatura meschina, cacciatelo con una scopa da ogni dove, o meglio semplicemente ignoratelo.

 
Kesha Rutov:

Il castoro è una creatura laboriosa e corretta, tutt'altra cosa , l 'Apprendista Cavaliere è una creatura cattiva, scacciatelo con una scopa da ogni dove, o meglio ancora, ignoratelo e basta.

"Analista in un barattolo" :)) lavastoviglie fanculo

 
Aleksey Vyazmikin:

Il punto è che anche se il 50% di tutti sono presi, poi oltre c'è una chiara selezione da questo 50% alla prima radice spaccata (o in Alglib non è così?). CatBoost non ha solo la selezione casuale dei predittori, ma anche la divisione casuale (i pesi sono aggiunti casualmente ai calcoli) sui primi alberi.

Ottengo risultati diversi, e il mio obiettivo non è quello di stimare l'intero modello, ma di ottenere foglie che hanno un'alta probabilità di descrivere la maggior parte del campione. Poi tali foglie vengono testate sulla storia anno per anno e ne viene fatta una composizione, che può non descrivere tutto il mercato, ma penso che sia meglio avere risposte più accurate a ciò che si conosce che indovinare con il 50% di probabilità nella maggior parte delle volte.

Previsioni, ce ne saranno circa 600 ora, quindi un overkill completo non è realistico.

Alglib esamina tutti i predittori rimanenti al 50%, divide ciascuno in 4 parti per quartili e sceglie la divisione con il miglior errore tra tutte le varianti.

In linea di principio, il partizionamento casuale non è difficile da fare.
Non ho visto alberi singoli con buoni risultati nei test (45-50%), ma una foresta di essi è più interessante).


 
In termini di importanza dei predittori esaminati:
I pacchetti xgboost, lightGBM avevano metodi integrati per stimare l'importanza delle caratteristiche per i "modelli di legno":

  1. Guadagna
    Questa misura mostra il contributo relativo di ogni caratteristica al modello. Per calcolarla, passiamo attraverso ogni albero, guardiamo ad ogni nodo dell'albero quale caratteristica porta ad una divisione del nodo, e quanto si riduce l'incertezza del modello secondo la metrica (impurità Gini, guadagno di informazione).
    Per ogni caratteristica, il suo contributo è sommato su tutti gli alberi.
  2. Copertina
    Mostra il numero di osservazioni per ogni caratteristica. Per esempio, avete 4 caratteristiche, 3 alberi. Supponiamo che la fich 1 abbia 10, 5 e 2 osservazioni nei nodi dell'albero 1, 2 e 3. Allora l'importanza per questa fich sarebbe 17 (10 + 5 + 2).
  3. Frequenza
    Mostra quanto spesso una data caratteristica si trova nei nodi dell'albero, cioè viene contato il numero totale di nodi dell'albero divisi per ogni caratteristica in ogni albero.
Non dividono correttamente l'importanza.
Ho una foresta addestrata su 5 barre che risulta migliore in un test rispetto a 100. Ma quando si insegna per 100, i primi 5 non sono segnati come importanti, ma alcuni lontani.
Quando ci si allena a 100, l'errore dei singoli alberi e delle foreste è più basso - ovviamente a causa del sovrallenamento e dando importanza a 30-100 barre. Ma è ovvio che non sono importanti secondo la solita logica, ma perché la foresta a 5 barre dà risultati migliori.
 
A proposito, non capisco la differenza tra Cover e Frequency? Più specificamente, che cos'è un'osservazione delle caratteristiche in Cover? (Capisco con la ripartizione da un chip in frequenza). Gli alberi sembrano essere divisi per caratteristiche, non osservati.
 
Aleksey Vyazmikin:

C'è uno script R con un algoritmo genetico per creare un albero, selezionare le generazioni in base al miglioramento dell'entropia. Poi c'è una specie di selezione finale. Prendo tutti gli alberi per la selezione finale e ne estraggo le foglie per ulteriori misurazioni separate in MT5. Lo script non è stato pubblicato pubblicamente, quindi non ci sono nemmeno descrizioni dettagliate. Apparentemente è come selezionare il miglior albero dalla foresta, ma c'è una limitazione di profondità per evitare overtraining, bene il processo richiede circa 2 giorni su tutti i nuclei sull'ultimo campione, dove non tutte le barre, ma solo i segnali di entrare, e se tutte le barre per 3 anni, poi il calcolo richiede 1,5 mesi ci. Dopo il calcolo faccio la divisione dell'albero, cioè rimuovo la colonna con il predittore radice dell'albero della migliore popolazione e ricomincio tutto da capo, è apparso che anche su 40 tali procedure si possono formare delle foglie molto buone, quindi sono giunto alla conclusione che il miglior albero matematico non è sempre il più efficace, e un'informazione interferisce con un'altra, che è apparsa in seguito usata nello stesso CatBoost, quando si scelgono a caso i predittori da tutti i campioni per costruire un albero.

Dopo una rapida occhiata al codice, ho visto una selezione genetica di funzioni per la costruzione di alberi dal pacchetto rpart. Quindi, ad ogni albero è stato offerto di imparare il proprio set di caratteristiche. A causa della genetica tale set di caratteristiche è più veloce della forza bruta completa.
Ma l'albero non è magico, è quello offerto da rpart. Credo che lì sia uno standard.
 
Maxim Dmitrievsky:

prima addestrare il modello su tutte le caratteristiche, salvare gli errori

Poi, uno per uno, randomizzate ciascuno dei predittori, diciamo con una distribuzione normale, e controllate di nuovo l'errore su tutte le caratteristiche, compresa questa randomizzata (modificata), e confrontatela con quella iniziale. Non c'è bisogno di riaddestrare il modello. E quindi controllare ciascuno dei predittori. Se il predittore era buono, l'errore sull'intero campione (compresi tutti gli altri predittori originali) aumenterà drammaticamente rispetto all'originale. Salvare le differenze di errore, vagliare le migliori schede in base ad esse. Poi, alla fine, allenarsi solo sui migliori e modellare in produzione. I cattivi predittori sono rumore per il modello, non hanno bisogno di loro con il loro 1%. Quelli buoni di solito rimangono 5-10, l'importanza del resto diminuisce esponenzialmente (legge di Zipf).

Ho provato a insegnare i filtri, ma non molto, non vedo molto senso, è meglio mettere tutto in un modello in una volta sola

Se è possibile, solo circa la selezione dei predittori MOLTO competente(già gettato prima)

Ho trovato il tuo post sulla permutazione.
È una variante interessante. Dovrò fare una prova.
Anche se ho paura che se lo applico a un modello su 100 barre, e cerco di rimuovere 95 barre e lasciare le prime 5, il risultato sarà del 50%. Dopotutto, quei primi 5 erano difficilmente coinvolti in spaccature (in media solo il 5% dei nodi sono costruiti su di loro).
 
elibrario:
Ho trovato il tuo post sulla permutazione.
Variante interessante. Devo fare una prova.
Anche se ho paura che se lo applico al modello di 100 barre e cerco di rimuovere 95 barre e lasciare le prime 5, il risultato sarà del 50%. Dopotutto, quei primi 5 erano difficilmente coinvolti in spaccature (in media solo il 5% dei nodi sono costruiti su di loro).

Non so cosa stai facendo con 100 barre, probabilmente dovresti applicarlo correttamente e sarai a posto

 
Maxim Dmitrievsky:

Non so cosa stai facendo con 100 barre, probabilmente devi applicarlo correttamente e funzionerà

Voglio automatizzare il processo di setacciare i predittori non importanti)

 
Maxim Dmitrievsky:

prima addestrare il modello su tutte le caratteristiche, salvare gli errori

Poi, uno per uno, randomizzate ciascuno dei predittori, diciamo con una distribuzione normale, e controllate di nuovo l'errore su tutte le caratteristiche, compresa questa randomizzata (modificata), e confrontatela con quella iniziale. Non c'è bisogno di riaddestrare il modello. E quindi controllare ciascuno dei predittori. Se il predittore era buono, l'errore sull'intero campione (compresi tutti gli altri predittori originali) aumenterà drammaticamente rispetto all'originale. Salvare le differenze di errore, vagliare le migliori schede in base ad esse. Poi, alla fine, allenarsi solo sui migliori e modellare in produzione. I cattivi predittori sono rumore per il modello, non hanno bisogno di loro con il loro 1%. Quelli buoni di solito rimangono 5-10, l'importanza del resto diminuisce esponenzialmente (legge di Zipf).

Ho provato a insegnare i filtri, ma non molto, non vedo molto senso, è meglio mettere tutto in un modello in una volta sola

Se è possibile, solo circa la selezione dei predittori MOLTO competente(già gettato prima)

Ho capito questo metodo in modo diverso.
Per il predittore in studio, non dovremmo alimentare valori casuali con una distribuzione normale, ma semplicemente mischiare le righe di questa colonna.

Comunque, i risultati dell'articolo sono impressionanti. Dovrei provarlo in pratica.