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

 

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.

 
articolo interessante o piuttosto nessun articolo lì, immagini interessanti su "pca" non lineare) https://imdevsoftware.wordpress.com/tag/non-linear-pca/
Discriminating Between Iris Species
Discriminating Between Iris Species
  • imdevsoftware.wordpress.com
The Iris data set is a famous for its use to compare unsupervised classifiers. The goal is to use information about flower characteristics to accurately classify the 3 species of Iris. We can look at scatter plots of the 4 variables in the data set and see that no single variable nor bivariate combination can achieve this. One approach to...
 
mytarmailS:

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.

 
SanSanych Fomenko:

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

 
Vladimir Perervenko:

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.

 
mytarmailS:

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.

 
SanSanych Fomenko:

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 questione della selezione delle caratteristiche
 
mytarmailS:
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

 
Qualcuno ha provato a usare una pca non lineare, il cui link ho lasciato sopra, ma ho problemi a riconoscere nuovi dati con essa, dà un errore
 
mytarmailS:
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.

#установка  пакета, нужно выполнить один раз и перезапустить R
source("https://bioconductor.org/biocLite.R")
biocLite("pcaMethods")        

#создание  pca объекта
library(pcaMethods)
browseVignettes("pcaMethods") #хелп  файлы
data(metaboliteDataComplete)
mdC <- prep(metaboliteDataComplete, scale="none", center=TRUE)
resNipals <- pca(md, method="nipals", center=FALSE, nPcs=5)

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ì:

#http://www.win-vector.com/blog/2016/05/pcr_part2_yaware/ (раздел Is this the same as caret::preProcess?)
newVars <- colnames(resNipals)
resNipals$y <- dTrain$y   #"y" в данном случае это название колонки с целевой переменной, dTrain - исходная таблица с данными
modelB <- lm(paste('y',paste(newVars,collapse=' + '),sep=' ~ '),data=resNipals)
print(summary(modelB)$r.squared)
#дальше нужно использовать функцию predict(modelB, newdata = <таблица с валидационной выборкой>) для прогноза на новых данных

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.