L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 35
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
Qualcuno può spiegarmi in un linguaggio semplice ma preciso quali principi usa RF per costruire la scala di importanza dei predittori?
Ho un insieme con due classi nella classe di destinazione, il numero di osservazioni in una classe è centinaia di volte più che nella seconda, ricordo da qualche parte che uno dei criteri di importanza dei prodittatori in RF è la frequenza di occorrenza di qualche osservazione.
Quindi voglio sapere se RF sopprime quella classe che ha poche osservazioni quando calcola l'importanza dei predittori.
Presumo che tu sia nel forex, non ci sono broker nel forex e non fanno trading, sono imprese basate su carte di bookmaker
p.s. cosa ne pensi del mio suggerimento per la selezione dei tratti?
Ebbene sì, un centro dealing non un broker. Ma nessuno ha comunque cancellato la loro entrata nel mercato interbancario.
La tua selezione sembra logica. Ma ho deciso di non selezionare gli indicatori secondo i miei concetti perché non ha mai migliorato il modello. Preferirei lasciare che l'algoritmo selezioni molti indicatori e lasciargli decidere cosa è buono e cosa no. A volte le medie mobili arrivano anche all'insieme finale dei predittori, penso che possano fornire alcune informazioni non da sole ma in combinazione con altri indicatori. Ma i miei risultati non sono ancora stabili, non posso ancora garantire la loro utilità.
Inoltre non cercherei di prevedere esattamente l'inversione, nei dati di allenamento la classe "business as usual" avrà decine di volte più casi di "inversione" e si dice che il rapporto delle classi per l'allenamento è meglio avere 50/50.
Ho un algoritmo che determina il potere predittivo di un predittore per una particolare variabile target. In breve, si tratta di oscillatori e incrementi diversi. Se un particolare predittore ha potere predittivo per una particolare variabile target, non ne consegue che avrà potere predittivo per un'altra variabile target. Inoltre, un predittore può avere capacità predittiva in una finestra e non in un'altra.
L'algoritmo funziona bene. I predittori che seleziona non portano all'overfitting dei modelli.
PS
Secondo il mio algoritmo, gli slittamenti di qualsiasi tipo non hanno alcuna capacità predittiva, per quanto possa sembrare ridicolo.
Tutti i modelli con qualsiasi set di dati sono riqualificati.
Un'altra questione è che la probabilità di sovrallenamento con la scelta giusta, la trasformazione dei predittori è notevolmente ridotta.
La probabilità di sovrallenamento dipende ugualmente dal set di dati e dal tipo di modello.
Non c'è bisogno di illusioni.
Date un'occhiata al pacchetto pbo, è interessante vedere come questo problema è gestito lì.
Buona fortuna
Tutti i modelli con qualsiasi set di dati possono essere riqualificati.
Un'altra questione è che la probabilità di sovraapprendimento con la scelta giusta, trasformando i predittori è significativamente ridotta.
La probabilità di sovrallenamento dipende ugualmente dal set di dati e dal tipo di modello.
Non c'è bisogno di illusioni.
Dai un'occhiata al pacchetto pbo, sembra interessante lì.
Buona fortuna
Guardato. Le ipotesi di fondo non sono affatto chiare. Soprattutto "un aumento del numero di osservazioni porta al sovrallenamento"?
Uso un criterio perfettamente chiaro e, soprattutto, di valore pratico.
Ne ho affermato l'essenza molte volte. Lo ripeterò.
Uso il seguente criterio di sovrallenamento (overfitting): se l'errore durante l'allenamento NON è uguale all'errore su altri dati al di fuori del campione di allenamento, cioè su altri intervalli di tempo, allora il modello è sovrallenato. Cioè, il modello ha raccolto alcune specificità durante l'addestramento che non ha incontrato negli intervalli di tempo successivi.
Come questo viene implementato nella pratica.
Prendiamo un quoziente, per esempio 10.000 bar.
Lo dividiamo meccanicamente per il numero della barra senza stravaganze, il che è molto importante per me perché in pratica sarà così e non così.
Quindi prendo le prime barre dal numero 1 al 7000. Queste barre sono utilizzate per i test di apprendimento e la convalida. Per dividerli in tre insiemi uso, per esempio, il campione o quello che è costruito nel modello stesso.
Ottengo tre numeri dal modello. Se il modello non viene riqualificato, queste cifre sono approssimativamente uguali.
Poi la cosa più importante.
Prendo un file con barre da 7001 a 10 000. E uso il modello addestrato sulle barre precedenti. Ricevo un errore. Se l'errore è leggermente diverso dai tre precedenti, allora il modello NON viene riqualificato. Di solito considero che se la discrepanza è del 15-20%, allora non è riqualificato. Se uno dei numeri differisce da qualsiasi altro di più del 50%, allora il modello viene riqualificato.
Quindi con la mia metodologia seleziono un sottoinsieme di predittori da un insieme di predittori. Se si trova, il che non è obbligatorio, allora tali modelli come randomforest, SVM, ada e le loro varianti NON sono riqualificati! Non conosco altri modelli - non li uso.
Questa non è un'illusione. Questo è un fatto.
Qualcuno può spiegarmi in un linguaggio semplice ma preciso quali principi usa RF per costruire la scala di importanza dei predittori?
Ho un insieme con due classi nella classe di destinazione, il numero di osservazioni in una classe è centinaia di volte più che nella seconda, ricordo da qualche parte che uno dei criteri di importanza dei prodittatori in RF è la frequenza di occorrenza di qualche osservazione.
Quindi voglio sapere se RF sopprime quella classe che ha poche osservazioni quando calcola l'importanza dei predittori.
Avete classi selvaggiamente sbilanciate e questo non va bene. Ci sono algoritmi per bilanciare le classi, ma nel tuo caso non ha funzionato per me. Ho cercato di indicare l'inversione di ZZ non con un numero di barra, ma con diversi, prima e dopo l'inversione. Questo ha ridotto lo squilibrio, ma non ha risolto il problema.
Non ho trovato modelli che siano garantiti per funzionare su classi NON bilanciate.
Avete classi selvaggiamente sbilanciate, e questo non va bene. Ci sono algoritmi per bilanciare le classi, ma nel tuo caso non ha funzionato. Ho provato a segnare l'inversione ZZ non con un numero di barra, ma con diversi, prima e dopo l'inversione. Questo ha ridotto lo squilibrio, ma non ha risolto il problema.
Non ho trovato modelli che siano garantiti per funzionare su classi NON bilanciate.
Sono interessato alla domanda sulla selezione delle caratteristiche
Ho risposto a tutto ciò che ritenevo necessario.
Se avete un insieme di attributi con una variabile target, inviatemelo, lo selezionerò, poi costruirò dei modelli su quelli selezionati e vedrò il risultato
Nessuno per caso ha provato ad applicare il pca non lineare?? link a cui ho lasciato sopra, sto avendo problemi a riconoscere nuovi dati con esso, dà un errore
Non credo che questo pacchetto sia sufficiente per costruire un modello capace di predire la variabile obiettivo. Tutto quello che ho trovato nell'aiuto è di costruire un modello PCA basato su predittori, la variabile target non c'è affatto.
Questo creerà un oggetto resNipals (Nonlinear Estimation by Iterative Partial Least Squares) con 5 componenti principali per analizzare la tabella metaboliteDataComplete. Invece di metaboliteDataComplete, puoi sostituire la tua tabella con i predittori. È importante non alimentare qui la variabile di destinazione, sarà usata più tardi.
Ma questo sarà sufficiente per analizzare le relazioni tra le variabili esaminando diversi grafici. Per creare un modello predittivo, viene quindi costruito un modello di regressione lineare che utilizza le componenti principali PC1,PC2,PC3,PC4,PC5 come variabili di input (x1,x2,x3,...). E la variabile obiettivo Y è già inserita nel modello lineare come risultato desiderato. Il problema è che resNipals è un oggetto di classe "pcaRes" del pacchetto pcaMethods. Non sono riuscito a trovare nell'aiuto come fare tutto questo.
Se fosse un modello PCA del pacchetto caret, andrebbe così:
Ma non funziona con resNipals, in teoria il pacchetto pcaMethods dovrebbe avere delle funzioni proprie per lavorare con questo oggetto, ma non ho trovato nulla.