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

 
elibrario:

Domanda per gli esperti di R.

Come si può convertire una matrice con valori assoluti in una matrice di classe softmax?

apply(matr, 1, function (rowvec) { result <- rep(0, length(rowvec)); result[which.max(rowvec)] <- 1; result } )

E trasporre come necessario a seconda della dimensionalità della matrice

 
Maxim Dmitrievsky:

Ah, beh, non ci sono ancora biblioteche... non posso scriverle io)


Penso che gli scriverò e chiederò loro di prestarmi un neuronet, se funziona, li ripagherò con la % :)

A proposito, sono un po' più vicini all'originale, almeno hanno aggiunto dei mediatori, ma non è ancora AI perché le nuove sinapsi non si formano e non si ricostruiscono da sole, per quanto ho capito

 
Maxim Dmitrievsky:

Sto pensando di scrivere a loro, chiedendo di prendere in prestito una rete neurale, e se funziona, li ripagherò con gli interessi :)

Penso che se non c'è alcun cambiamento nelle soluzioni con le MLP semplici, non ce ne sarà nemmeno con le NS complesse. Inoltre, anche se si sostituisce MLP con un NS più complesso, non è certo che il risultato migliori in qualche modo. Perché uno strumento diverso richiede un trattamento diverso, una formulazione diversa del problema.

Per ora mi limiterò a semplici MLP e antichi algoritmi di apprendimento basati su BP, e vedremo se si presenterà la reale necessità.

 
anonimo:

e trasporre come necessario a seconda della dimensionalità della matrice

Wow, molto più corto! Grazie!

L'ho cambiato un po', sto creando una nuova matrice copiando da quella vecchia, in modo che i nomi delle colonne e delle righe rimangano. Questo è più universale, nel caso avessi bisogno di usarli ulteriormente. E io inverto immediatamente la matrice. Da quanto ho capito, apply(x,1,f) capovolge sempre la matrice, perché elabora i dati riga per riga e li combina in colonne.

get_softmax <- function(m){
    t(apply(m, 1, function (row) {r <- row;  r [1:length(row)] <-0 ; r[which.max(row)] <- 1;  r } ))
}

 
Yuriy Asaulenko:

Penso che se non c'è un cambiamento nelle soluzioni con le MLP semplici, non ce ne saranno con le NS complesse. Inoltre, anche se si sostituisce la MLP con una NS più complessa, non è affatto certo che il risultato migliori in qualche modo. Perché uno strumento diverso richiede un trattamento diverso, una formulazione diversa del problema.

Per ora mi atterrò a semplici MLP e antichi, BP, algoritmi di addestramento, e vedremo se la vera necessità si presenta.


Mi piace quando tutto è contato velocemente, si possono provare molte strategie.

Se avessi un analogo più produttivo ci passerei... Ma ora è 90% data mining e 10% selezione di modelli.

 
Maxim Dmitrievsky:

Mi piace quando tutto viene contato velocemente, si può passare attraverso un sacco di strategie.

Se avessi un analogo più produttivo ci passerei... finora il 90% del tempo è solo datamining e il 10% selezione di modelli.

Per quanto riguarda le prestazioni, il tempo di risposta di un MLP addestrato a 6 strati (~60 neuroni) è di 0,005s. È abbastanza per quasi tutto.

Per quanto riguarda il tempo di apprendimento, che è lungo, non è affatto una preoccupazione, poiché ci vuole molto più tempo per pensare ad ogni esperimento successivo da solo - una settimana, o anche di più.

Beh, riqualificarsi ogni pochi mesi, diciamo che passiamo un paio di giorni - non credo che sia un problema. Rifare il sistema sulla logica richiede molto più tempo. Sì, e l'allenamento standard non funziona - c'è bisogno di una lunga danza del tamburello tra le epoche. Mentre l'allenamento standard (senza ballare)) dà buoni risultati, ma solo su un campione di allenamento).

 

Un altro problema con R.

Su un computer va bene, sull'altro computer ci sono alcuni requisiti maggiori per la correttezza del codice.

Per esempio

darch.unitFunction = linearUnit - ha causato il blocco di Rterm.exe

cambiato in

darch.unitFunction ="linearUnit"

questo punto ha iniziato a passare prima del prossimo errore.

Ho anche dovuto cambiare library(darch) in require(darch)

Ora è l'apprendimento stesso che è una seccatura.

R_NN <- darch(
darch = NULL,
x = MatrixLearnX ,
y = MatrixLearnY ,
paramsList = params
)

Ho provato molte varianti, Rterm.exe va sempre in crash

R ha una sorta di controllo del livello di errore? Forse sul secondo PC ho un livello di errore da risolvere fermandomi ad ogni avviso?

Su entrambi i computer ho installato R con le impostazioni predefinite, ho installato tutti i pacchetti.
Come posso rimediare?

 

Se la libreria darch non è installata, library(darch) causerà un errore e l'esecuzione del codice si fermerà, e require(darch) si limiterà a deformare e il codice continuerà a funzionare, ma poiché la libreria darch non è installata, le sue funzioni non possono essere chiamate.

Il prossimo passo è eseguire
install.packages("darch", dependencies=TRUE) per installare automaticamente la libreria

 
Yuriy Asaulenko:

Per quanto riguarda le prestazioni, il tempo di risposta di un MLP addestrato a 6 strati (~60 neuroni) è di 0,005s. È abbastanza sufficiente per quasi tutto.

Per quanto riguarda il tempo di apprendimento, che è lungo, non disturba affatto, poiché ci vuole molto più tempo per pensare ad ogni prossimo esperimento da solo - una settimana, o anche di più.

Beh, riqualificarsi ogni pochi mesi, diciamo che passiamo un paio di giorni - non credo che sia un problema. Rifare il sistema sulla logica richiede molto più tempo. Sì, e l'allenamento standard non funziona - c'è bisogno di una lunga danza del tamburello tra le epoche. E l'allenamento standard (senza ballare)) dà grandi risultati - ma solo su un campione di allenamento).


Lo sto facendo un po' male - uso l'ottimizzatore attivamente per cercare strategie, cioè provando chip, combinazioni di blocchi TS, qualcos'altro... Perché a volte non riesco nemmeno a prendere in considerazione qualche piccola cosa, e manca nel sistema. E passare attraverso anche un centinaio di opzioni richiede una notevole velocità di apprendimento (e 100 opzioni è molto piccolo) ... Beh, ognuno ha il suo approccio, non sto dicendo che il mio è migliore. Naturalmente, si può dire che NS è un ottimizzatore stesso, ma ci sono sempre alcuni iperparametri, che possono essere scelti nella fase iniziale

 
Maxim Dmitrievsky:

Sto usando attivamente l'ottimizzatore per cercare strategie, cioè per cercare chip, combinazioni di blocchi TS, altro... perché a volte c'è anche una piccola cosa che non ho considerato, ma che mancava nel sistema. E passare attraverso anche un centinaio di opzioni richiede una notevole velocità di apprendimento (e 100 opzioni è molto piccolo) ... Beh, ognuno ha il suo approccio, non sto dicendo che il mio è migliore. Naturalmente, si può dire che NS è un ottimizzatore in sé, ma c'è sempre un certo numero di iperparametri che si possono prendere nella fase iniziale.

Quindi presto dovrete avere una fattoria mineraria per le strategie di estrazione.

Motivazione: