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

 
Vladimir Perervenko:

Non ho ottenuto buoni risultati. Avete bisogno di predittori (a differenza di altri modelli) che siano altamente correlati.

Non sono riuscito a trovarne nessuno che desse risultati accettabili. Non ho sperimentato per molto tempo, però. Non ho molto tempo. Si può provare. Il campione ha un codice completamente funzionante.

Buona fortuna

PS. Se lo provate, nelle matrici di input i predittori dovrebbero essere righe e non colonne.

Grazie, ma purtroppo ora sono impegnato in un completamente diverso, nel prossimo futuro non sarà in grado di sedersi, mi sono imbattuto in un metodo di lavoro, ma tutto ancora grezzo, la ricerca è appena iniziata e sento che si trascinerà per molto tempo, un sacco di lavoro ...

Un'altra domanda, non picchiatemi) È possibile utilizzare i pacchetti MO standard, forre, reti, vettori, convoluzioni, ecc. nell'allenamento senza un insegnante?

Sospetto che si possa, ma non sono stato in grado di capire come farlo.

Per esempio in forrest

data("iris")

library(randomForest)

label <- factor(iris$Species)
set <- iris[,-ncol(iris)]


model <- randomForest(x = set,data = set , mtry=4, ntree=20)

Credo di averla insegnata senza un insegnante.

secondo google translator ----> classificazionenon supervisionata

> model

Call:
randomForest(x = set, ntree = 20, mtry = 4, data = set)
               Type of random forest: unsupervised
                     Number of trees: 20
No. of variables tried at each split: 4

ma come riconoscere? ))

predict(model , set[1,])



Error in predict.randomForest(model, set[1, ]) :
  No forest component in the object


Potete aiutarmi a capire questo?

 
mytarmailS:

Grazie ma purtroppo sto facendo qualcosa di completamente diverso al momento, non potrò sedermi per un po', ho trovato un metodo di lavoro, ma è ancora grezzo, la ricerca è appena iniziata e sento che ci vorrà molto tempo, c'è molto lavoro da fare...

Un'altra domanda, non picchiatemi) È possibile utilizzare i pacchetti MO standard, forre, reti, vettori, convoluzioni, ecc. nell'allenamento senza un insegnante?

Sospetto che si possa, ma non sono stato in grado di capire come farlo.

Per esempio in forrest

data("iris")

library(randomForest)

label <- factor(iris$Species)
set <- iris[,-ncol(iris)]


model <- randomForest(x = set,data = set , mtry=4, ntree=20)

Credo di averla insegnata senza un insegnante.

secondo google translator ----> classificazionenon supervisionata

> model

Call:
randomForest(x = set, ntree = 20, mtry = 4, data = set)
               Type of random forest: unsupervised
                     Number of trees: 20
No. of variables tried at each split: 4

ma come riconoscere? ))

predict(model , set[1,])



Error in predict.randomForest(model, set[1, ]) :
  No forest component in the object


C'è un modo per chiarire questo punto?

================================================

Vi consiglio vivamente di usare RandomUniformForest. Ci sono molte caratteristiche che altre "impalcature" non hanno. In particolare sull'apprendimento non supervisionato:

Apprendimento non supervisionato con foreste casuali uniformi

Descrizione

La modalità non supervisionata di Random Uniform Forests è progettata per fornire, in tutti i casi, clustering, riduzione delle dimensioni, facile visualizzazione, importanza profonda delle variabili, relazioni tra osservazioni, variabili e cluster. Viene anche fornito con due punti specifici: valutazione facile (analisi dei cluster) e clustering dinamico, permettendo di cambiare al volo qualsiasi forma di clustering. Viene utilizzato un motore a tre strati: matrice di dissimilarità, Multidimensional Scaling (MDS) o decomposizione spettrale, e k-means o clustering gerarchico. Il modo non supervisionato non richiede che il numero di cluster sia noto, grazie alla statistica del gap, ed eredita le principali proprietà algoritmiche del modo supervisionato, permettendo (quasi) qualsiasi tipo di variabile.

Buona fortuna

 
Vladimir Perervenko:

Sì, la domanda generale è se è possibile insegnare senza un insegnante tutti questi popolari pacchetti MOE - randomforest, nnet, svm ...... ecc

Forrest, prendendolo solo come esempio...

In realtà, vorrei addestrare una rete di convoluzione senza un insegnante

 
mytarmailS:

Sì, la domanda è generale, possono tutti questi popolari pacchetti MOE - randomforest, nnet, svm ...... essere insegnati senza un insegnante ecc

Forrest, prendendolo solo come esempio...

In realtà, è la rete convoluzionale che vorrei insegnare senza un insegnante.

Cosa vuoi insegnargli?

Qual è l'idea di fondo?

Conosco solo questi modelli per insegnarlo senza un insegnante: AutoEncoder, RBM, RF di diverse varietà, modelli di clustering. Ma quelli convoluzionali sono impossibili...

Buona fortuna

 
Vladimir Perervenko:

Cosa vuoi insegnarle?

Qual è l'idea?

Conosco solo questi modelli per l'apprendimento senza insegnante: AutoEncoder, RBM, RF di diverse varietà, modelli di clustering. Ma quelle di convoluzione sono impossibili...

Buona fortuna

Bene, perché una rete convoluzionale può rilevare modelli simili che sono ancora leggermente diversi nella forma, questo la rende diversa dai convenzionali MO "lineari".

come Forrest, reti generali, ecc...

E voglio insegnare senza un insegnante perché è molto meglio scomporre prima in cluster, come "naturalmente, per somiglianza" e poi abbinarlo all'obiettivo, che insegnare immediatamente con l'obiettivo e creare/adattare i cluster all'obiettivo

Ho scritto sull'idea del cluster, funziona meglio di qualsiasi MO convenzionale per il mio obiettivo, se leggete...

C'è ancora un problema con tutto questo ed è che nessuna situazione nel mercato è esattamente la stessa, è la non stazionarietà, e qui vedo due modi, o è una rete convoluzionale o un algoritmo dtw o qualcosa di abbastanza vago e vago - interpolazione o estrapolazione, non so nemmeno come si chiama esattamente.

L'idea è di rendere i cluster più adatti alla non stazionarietà.

 

Per favore, aiutatemi a capire...

c'è un codice come questo:

#есть вектор с некими нужными событиями "999" и не нужными "0"

X <- rep(0,1000)
Y <- rep(999,100)

dat <- sample(c(X, Y))
dat
> dat
   [1]   0 999   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  [28]   0   0   0 999 999   0   0   0   0   0   0   0   0   0   0 999   0   0   0   0   0   0   0   0   0 999   0
  [55]   0   0   0   0 999   0   0   0   0   0 999   0   0   0   0   0 999   0   0   0   0   0   0   0   0   0   0
  [82]   0   0   0   0   0   0   0   0 999   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
[109]   0   0   0   0   0   0   0   0 999   0   0   0 999   0   0   0   0   0   0   0   0   0   0   0   0   0   0
[136]   0   0   0   0   0   0   0 999   0   0   0   0   0 999   0 999   0   0   0   0   0   0   0   0   0   0   0

#///в каждой итерации цыкла я хочу видеть последние три нуждые события те когда было "999"

for(i in 101:length(dat)){
    
      idx <- 1:i
      
                  s1 <- dat[idx]
                  s2 <- which(s1!=0)  # s2 - получаем индексы нужного события те когда s1 было не ноль
                  s3 <- tail(s2,3)    # оставляем три поледних индекса
                  
                  print(  dat[s3]   )
                  
}

[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999

Tutto va bene, tutto funziona, ma c'è un problema sulla linea

idx <- 1:i

Ad ogni iterazione il vettore idx aumenta, e se ci sono molti dati il codice diventa selvaggiamente lento ovviamente e più va avanti...

Ho risolto il problema in modo semplice - ad ogni iterazione, solo gli ultimi 100 valori del vettore saranno presi invece dell'intero

idx <- (i-100):i

for(i in 101:length(dat)){
    

      idx <- (i-100):i # последние 100 значени  вместо idx <- 1:i
      
                  s1 <- dat[idx]
                  s2 <- which(s1!=0)  # s2 - получаем индексы нужного события те когда s1 было не ноль
                  s3 <- tail(s2,3)    # оставляем три поледних индекса
                  
                  print(  dat[s3]   )
                  
}

Ma l'output di questo codice sembra già disordinato

[1] 0 0 0
[1] 0 0 0
[1] 0 0 0
[1] 0 0 0
[1] 0 0 0
[1] 0 0 0
[1] 999   0   0
[1] 0 0 0
[1]   0   0 999
[1] 999   0   0
[1] 0 0 0
[1] 0 0 0

Cosa diavolo c'è che non va? Tutto sembra essere corretto, c'è un bug o qualcosa del genere?

 
perplesso? :), a quanto pare...
 

mytarmailS:


Che diavolo sta succedendo? È tutto a posto, è un bug o qualcosa del genere?

Si chiama "biancheria intima", è come se tu stessi spudoratamente sbattendo le tue mutande in faccia a signore e signori, e questo non sta bene a chi ti circonda. È meglio nascondere la biancheria intima. Avete visto, per esempio, Nikolay Kositsyn o Reshetov, mostrare le sue mutande?
 
panturale:

In realtà si chiama "c'è un bug, ma nessun esempio di come riprodurlo". Avete bisogno di una tabella speciale con più di 100 colonne, e poi qualcosa andrà storto. E l'esempio è un piccolo pezzo di tabella su cui non si può controllare nulla, e anche da testo e non da file RData.

Puramente a caso - penso che l'errore sia negli indici. I valori in s3 saranno sempre da 1 a 100, indipendentemente dall'indice iniziale i.
Se si sposta s1 di (i-100)-1 rispetto all'inizio della tabella dat, allora questo spostamento deve essere preso in considerazione quando si accede nuovamente a dat con il nuovo indice ottenuto. L'ultima linea dovrebbe essere print(dat[i-101+s3]). Può essere 100 invece di 101. O 102. Da qualche parte in quei numeri :)

 

panturale:
Si chiama "biancheria intima", è come se tu ficcassi spudoratamente le tue mutande in faccia a signore e signori, e questo non sta bene a chi ti circonda. È meglio nascondere la biancheria intima. Avete visto, per esempio, Nikolay Kositsyn o Reshetov, mostrare le sue mutande?

========================

Potete chiamarlo "spoof", ma nella comunità R è consuetudine citare il codice riproducibile quando si fa una domanda. E questo è corretto. Le storie senza citare il codice sono parole vuote. Lo scopo di questo thread è quello di insegnare con esempi di MoD.

Perché ti iscrivi per tutti quelli che ti circondano? Non c'è bisogno di fare regole, nessuno ti ha autorizzato a farlo.

Tutto bene fa mytarmailS e altri partecipanti che danno esempi di codice che molti possono imparare qualcosa di utile per se stessi.