L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 1276
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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.
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
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.
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).
I pacchetti xgboost, lightGBM avevano metodi integrati per stimare l'importanza delle caratteristiche per i "modelli di legno":
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.
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).
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.
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.
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.
Ma l'albero non è magico, è quello offerto da rpart. Credo che lì sia uno standard.
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)
È 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).
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
Non so cosa stai facendo con 100 barre, probabilmente devi applicarlo correttamente e funzionerà
Voglio automatizzare il processo di setacciare i predittori non importanti)
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.
Comunque, i risultati dell'articolo sono impressionanti. Dovrei provarlo in pratica.Per il predittore in studio, non dovremmo alimentare valori casuali con una distribuzione normale, ma semplicemente mischiare le righe di questa colonna.