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

 
mytarmailS:

Quello che state facendo(test su un "terzo" campione) in termini di GMDH si chiama "criterio di potenza predittiva".

Vedo che lei è un buon esperto. Potrebbe dichiarare l'essenza della GMDH in poche frasi, per i non matematici?

 
segreto:

Vedo che lei è un buon specialista. Potrebbe riassumere MGUA in poche frasi, per i non matematici?

Modello di regressione con enumerazione di caratteristiche trasformate da diversi kernel (polinomiale, spline, ecc.). Si preferisce il modello più semplice con l'errore più basso. Non salva dal sovrallenamento sul mercato.

approssimativamente, è un modello di forza bruta dove il più semplice è scelto in base a criteri esterni

è come le basi del machine learning )

 
mytarmailS:

Per esempio, la regressione MSUA prende semplicemente in giro la regressione del moderno algoritmo di foresta casuale e il boosting...

Il boosting è meglio in tutto, se si preparano le caratteristiche come per MSUA, sarà meglio.

ma non te ne frega un cazzo se non sai cosa insegnare

 
segreto:

Vedo che lei è un buon specialista. Potrebbe mettere l'essenza di MSUA in poche frasi, per i non matematici?

Non sono affatto un esperto )) purtroppo....

Se molto semplicemente, in modo approssimativo e impreciso, il principio della MGUA è l'auto-organizzazione...


Per esempio, abbiamo un insieme di attributi

x1,x2,x3.....x20...

da questi attributi creiamo un insieme di modelli candidati

m1,m2,m3.....m10...

da questi modelli si selezionano i migliori, e dai migliori si creano nuovi modelli, di nuovo si fa una selezione.... ecc... e così via, finché l'errore sui nuovi dati (precedentemente sconosciuti all'algoritmo) si riduce

Vedi, l'algoritmo cambia da solo, diventa più complesso e si auto-organizza... Un po' come un algoritmo genetico.

 
Maxim Dmitrievsky:

Un modello di regressione con enumerazione di caratteristiche trasformate da diversi kernel (polinomiale, spline, qualsiasi cosa). Si preferisce il modello più semplice con l'errore più basso. Non si salva dall'eccesso di formazione sul mercato.

In parole povere, si tratta di un bruteforcing di modelli, dove viene scelto il più semplice, in base a criteri esterni

Allora non vedo nulla di nuovo e originale in questa metodologia.

 
mytarmailS:

i migliori modelli sono selezionati da questi modelli, e i migliori sono usati per creare nuovi modelli, sempre selezionando.... ecc... e così via, finché l'errore sui nuovi dati (precedentemente sconosciuti all'algoritmo) diminuisce

Vedete, l'algoritmo cambia da solo, diventa più complesso e si auto-organizza... È un po' come un algoritmo genetico.

Allora non vedo la matematica qui, è più lavoro di cervello, beh, e di codifica. GA è una cosa banale.

Perché allora tutti vanno in giro con questa MGUA, scrivendo dissertazioni, così che è impossibile capirle, se dentro c'è qualche primitivo, intuitivamente comprensibile fin dall'asilo?

 
Maxim Dmitrievsky:

Boosting è migliore in tutto, se si preparano le caratteristiche come per MGUA, sarà migliore.

ma non importa se non sai cosa insegnare

Non sono d'accordo...

Facciamo un test veloce, a occhio)


Creare quattro variabili (casuali regolari) con 1000 elementi ciascuna

z1 <- rnorm(1000)

z2 <- rnorm(1000)

z3 <- rnorm(1000)

z4 <- rnorm(1000)

creare una variabile obiettivo y come somma di tutti e quattro

y <- z1+z2+z3+z4


alleniamo il boosting e mgua, nemmeno per la previsione, ma solo forzando per spiegarey

Ho diviso il campione in tre pezzi, una formazione due per il test


in verde MGUA

In rosso: Generalized Boosted Regression Modeling (GBM)

i grigi sono i dati originali

ricordate, l'obiettivo è la somma elementare di tutti i predittori

http://prntscr.com/rawx14

Come vediamo entrambi gli algoritmi hanno affrontato il compito molto bene


ora complichiamo un po' il compito

aggiungere la somma cumulativa o la tendenza ai dati

z1 <- cumsum(rnorm(1000))

z2 <- cumsum(rnorm(1000))

z3 <- rnorm(1000)

z4 <- rnorm(1000)

e cambiare l'obiettivo nella forma

y <- z1+z2+z3

quindi sommiamo due predittori con una tendenza e uno regolare, e z4 risulta essere un rumore perché non partecipa al target y

e quindi otteniamo il seguente risultato

http://prntscr.com/rax81b

Il nostro boosting è tutto incasinato e la MGUA non ha importanza.


Sono riuscito a "uccidere" MSUA solo con questo obiettivo selvaggio

y <- ((z1*z2)/3)+((z3*2)/z4)

E anche questo non è del tutto, e che dire del boosting? )))

http://prntscr.com/raxdnz


codice per i giochi

set.seed(123)
z1 <- cumsum(rnorm(1000))
z2 <- cumsum(rnorm(1000))
z3 <- rnorm(1000)
z4 <- rnorm(1000)

y <- ((z1*z2)/3)+((z3*2)/z4)

x <- cbind.data.frame(z1,z2,z3,z4) ; colnames(x) <- paste0("z",1:ncol(x))

tr <- 1:500
ts <- 501:800
ts2<- 801:1000

library(gbm)
rf <- gbm(y[tr] ~ ., data = x[tr,],
          distribution = "gaussian", n.trees = 1000,
           cv.folds = 5)
best.iter.max <- gbm.perf(rf, method = "cv")
prg <- predict(rf,x[c(tr,ts,ts2),],n.trees = best.iter.max)

library(GMDHreg)
gmd <- gmdh.gia(X = as.matrix(x[tr,]),y = y[tr],prune = 5,
                    criteria = "PRESS")
prh <- predict(gmd,as.matrix(x[c(tr,ts,ts2),]))

par(mfrow=c(1,3))
plot(head(y[tr],30),t="l",col=8,lwd=10,main = "train ")
lines(head(prg[tr],30),col=2,lwd=2)
lines(head(prh[tr],30),col=3,lwd=2)
plot(head(y[ts],30),t="l",col=8,lwd=10,main = "test ")
lines(head(prg[ts],30),col=2,lwd=2)
lines(head(prh[ts],30),col=3,lwd=2)
plot(head(y[ts2],30),t="l",col=8,lwd=10,main = "test2 ")
lines(head(prg[ts2],30),col=2,lwd=2)
lines(head(prh[ts2],30),col=3,lwd=2)


Скриншот
Скриншот
  • prnt.sc
Снято с помощью Lightshot
 
segreto:

Allora non vedo la matematica qui, è più lavoro di cervello, beh, e di codifica. GA è una cosa banale.

Perché allora tutti vanno in giro con questa MSUA, scrivendo dissertazioni, così che è impossibile capirle, se dentro c'è qualche primitivo, intuitivamente comprensibile fin dall'asilo?

Non lo so, ma descrive i dati molto meglio, post scritto, codice inviato

 
mytarmailS:

Non sono d'accordo...

Facciamo un piccolo test, veloce, a occhio)

Non voglio pasticciare con R (uso python), forse la ragione è che MSUA crea regressori fey, per questo si adatta. Se facciamo la stessa selezione per il boosting, non ci sarà alcuna differenza

Ecco un'enumerazione MSUA per una foresta.

https://www.mql5.com/ru/code/22915

RL algorithms
RL algorithms
  • www.mql5.com
Данная библиотека имеет расширенный функционал, позволяющий создавать неограниченное количество "Агентов". Использование библиотеки: Пример заполнения входных значений нормированными ценами закрытия: Обучение происходит в тестере...
 
Maxim Dmitrievsky:

Non voglio pasticciare con R (uso python), forse la ragione è che MSUA crea regressori fey, il che lo rende adatto. Se fate la stessa selezione per il boosting, non ci sarà alcuna differenza

Ecco un'enumerazione MSUA per una foresta.

https://www.mql5.com/ru/code/22915

In primo luogo, quali altri regressori fey? Che sciocchezza, perché anche il MSUA si spegne quando diventa più difficile?

In secondo luogo, i dati che ho dato nell'esempio erano gli stessi sia per il MSUA che per il boost.

In terzo luogo, non hai bisogno di fare nulla, non puoi fare una matrice con quattro valori casuali in python e poi cumularli? Per verificare la spinta da soli?

2 righe di codice )))


Sono curioso di sapere cosa c'è dentro.