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

 
Ildottor Trader:

La genetica cerca di trovare i parametri corretti per un numero limitato di chiamate di funzioni. Restringendo il numero di varianti di questo parametro (30 invece di 200) il genetista può indagare più in dettaglio la regione da 1 a 30. E giustamente, se si conoscono i limiti specifici per trovare qualche parametro del modello, è meglio dare subito questa informazione al genetista.


In alternativa:

Aggiungete questa linea (quella verde) al codice, allora il genetista avrà 500 individui nella popolazione invece dei 50 di default. E sarà in grado di testare 10 volte più modelli (ma anche il tempo di esecuzione dello script aumenterà di 10 volte), potendo provare il maggior numero possibile di combinazioni di parametri del modello. Anche con un massimo di 200 neuroni penso che la genetica possa trovare un risultato migliore con 0,85, o almeno avvicinarsi ad esso.

Non riesco a capire di quale genetica state parlando. Non c'è genetica in ELM. Basta guardare la teoria ELM o la descrizione del pacchetto elmNN:

"L'algoritmo ELM è un metodo alternativo di addestramento per SLFN (Single Hidden Layer Feedforward Networks) che non ha bisogno di alcun tuning iterativo né di impostare parametri come il tasso di apprendimento, il momentum, ecc, che sono problemi attuali dei tradizionali algoritmi di apprendimento basati sul gradiente (come la backpropagation).

L'addestramento di una SLFN con ELM è un modello di apprendimento in tre fasi:

Dato un insieme di allenamento P = {(xi , ti )|xi E R , ti E R , i = 1,..., N}, la funzione di uscita del nodo nascosto G(a, b, x), e il numero di nodi nascosti L

1) Assegnare casualmente i parametri dei nodi nascosti (ai , bi ), i = 1,..., L. Significa che i pesi dell'arco tra lo strato di input e lo strato nascosto e lo strato nascosto sono generati casualmente.

2) Calcolare la matrice di uscita dello strato nascosto H usando una delle funzioni di attivazione disponibili.

3) Calcolare i pesi di uscita B: B = ginv(H) %*% T (moltiplicazione di matrice), dove T è l'uscita target del set di allenamento.

ginv(H) è l'inverso generalizzato di Moore-Penrose della matrice di uscita dello strato nascosto H. Questo è calcolato dalla funzione ginv del pacchetto MASS.

Una volta che la SLFN è stata addestrata, l'output di un generico set di test è semplicemente Y = H %*% B (moltiplicazione di matrice). Caratteristiche salienti:

- La velocità di apprendimento di ELM è estremamente veloce.

- A differenza dei tradizionali algoritmi di apprendimento basati sul gradiente che funzionano solo per le funzioni di attivazione differenziabili, ELM funziona per tutte le funzioni di attivazione continue piecewise non costanti delimitate.

- A differenza dei tradizionali algoritmi di apprendimento basati sul gradiente che affrontano diversi problemi come minimi locali, tasso di apprendimento improprio e overfitting, ecc, ELM tende a raggiungere le soluzioni in modo diretto senza questi problemi banali.

- L'algoritmo di apprendimento ELM sembra molto più semplice di altri algoritmi di apprendimento popolari: reti neurali e macchine vettoriali di supporto".

Anche con un piccolo numero di neuroni, è impossibile ottenere due reti neurali identiche. State definendo in modo errato la soglia per trasferire l'uscita continua a una classe. Soglia = 0,5 è il caso peggiore. Accettabile = mediano/ Ma ce ne sono di più avanzati.

Buona fortuna

 
Maxim Dmitrievsky:

Oh, sarà qualcosa da leggere, avevo dimenticato cos'è. O meglio, ha dimenticato la differenza tra GBM e XGboost... o non sapeva

gbm può potenziare qualsiasi modello, xgb sembra essere sugli alberi

So che il boosting è leggermente migliore del bagging, attraverso il quale si costruisce la foresta. Non conosco la riqualificazione.


Il riavvio non ha nulla a che fare con il tipo di modello.

Un modello viene riqualificato in due casi:

  • la presenza di predittori di rumore è un problema importante e si risolve SOLO adattando i predittori
  • overfitting del modello - "ottimizzazione" dei suoi parametri, di solito su un piccolo campione. Questo tipo di overfitting è risolto dall'esperienza degli sviluppatori.

 
SanSanych Fomenko:

SanSanych, smettila di diventare isterico

 
Vladimir Perervenko:

Non riesco a capire di quale genetica state parlando. Non c'è genetica in ELM. Basta guardare la teoria ELM o la descrizione del pacchetto elmNN:

"L'algoritmo ELM è un metodo alternativo di addestramento per SLFN (Single Hidden Layer Feedforward Networks) che non ha bisogno di alcun tuning iterativo né di impostare parametri come il tasso di apprendimento, il momentum, ecc, che sono problemi attuali dei tradizionali algoritmi di apprendimento basati sul gradiente (come la backpropagation).

L'addestramento di una SLFN con ELM è un modello di apprendimento in tre fasi:

Dato un insieme di allenamento P = {(xi , ti )|xi E R , ti E R , i = 1,..., N}, la funzione di uscita del nodo nascosto G(a, b, x), e il numero di nodi nascosti L

1) Assegnare casualmente i parametri dei nodi nascosti (ai , bi ), i = 1,..., L. Significa che i pesi dell'arco tra lo strato di input e lo strato nascosto e lo strato nascosto sono generati casualmente.

2) Calcolare la matrice di uscita dello strato nascosto H usando una delle funzioni di attivazione disponibili.

3) Calcolare i pesi di uscita B: B = ginv(H) %*% T (moltiplicazione di matrice), dove T è l'uscita target del set di allenamento.

ginv(H) è l'inverso generalizzato di Moore-Penrose della matrice di uscita dello strato nascosto H. Questo è calcolato dalla funzione ginv del pacchetto MASS.

Una volta che la SLFN è stata addestrata, l'output di un generico set di test è semplicemente Y = H %*% B (moltiplicazione di matrice). Caratteristiche salienti:

- La velocità di apprendimento di ELM è estremamente veloce.

- A differenza dei tradizionali algoritmi di apprendimento basati sul gradiente che funzionano solo per le funzioni di attivazione differenziabili, ELM funziona per tutte le funzioni di attivazione continue piecewise non costanti delimitate.

- A differenza dei tradizionali algoritmi di apprendimento basati sul gradiente che affrontano diversi problemi come minimi locali, tasso di apprendimento improprio e overfitting, ecc, ELM tende a raggiungere le soluzioni in modo diretto senza questi problemi banali.

- L'algoritmo di apprendimento ELM sembra molto più semplice di altri algoritmi di apprendimento popolari: reti neurali e macchine vettoriali di supporto".

Anche con un piccolo numero di neuroni, è impossibile ottenere due reti neurali identiche. State definendo in modo errato la soglia per trasferire l'uscita continua a una classe. Soglia = 0,5 è il caso peggiore. Accettabile = mediano/ Ma ce ne sono di più avanzati.

Buona fortuna

Sul mio piccolo file di allenamento c'è il 100% di coincidenza tra le sessioni di allenamento...

 

In quale periodo di tempo scarichi i dati?

Ho un gap di 2 anni e una differenza di dati di 15 secondi. Predittori: 30 naturali e più di 1000 generati nel formato "(doppio)(val1 < val2)".

All'inizio ho anche pensato che il numero di predittori doveva essere ridotto, ma la pratica ha dimostrato che più è meglio.

Naturalmente, 1000 predittori in 2 anni danno circa 3GB di volume. Usare R per questi volumi non è serio.

Python ha battuto R nel datamining, perché c'è Cython e Jython, che si sono inseriti in progetti come TensorFlow, Spark, MXNet...

 
Ildottor Trader:

La genetica cerca di trovare i parametri corretti per un numero limitato di chiamate di funzioni. Restringendo il numero di varianti di questo parametro (30 invece di 200) il genetista può indagare più in dettaglio la regione da 1 a 30. E giustamente, se si conoscono i limiti specifici per trovare qualche parametro del modello, è meglio dare subito questa informazione al genetista.


In alternativa:

Aggiungete questa linea (quella verde) al codice, allora il genetista avrà 500 individui nella popolazione invece dei 50 di default. E sarà in grado di testare 10 volte più modelli (ma anche il tempo di esecuzione dello script aumenterà di 10 volte), potendo provare il maggior numero possibile di combinazioni di parametri del modello. Anche con un numero massimo di neuroni di 200 penso che la genetica sarà in grado di trovare un risultato migliore anche con 0,85, o almeno di avvicinarsi ad esso.

Grazie!!!! È davvero migliorato. Bene, vediamo come va... La cosa principale è guadagnare costantemente...

 
Vladimir Perervenko:

Non riesco a capire di quale genetica stai parlando.

È nello script R che ho mostrato a Mikhail un centinaio di pagine fa. L'algoritmo genetico sta esaminando i parametri per elmnn (funzione di attivazione, grano gpsh, numero di neuroni nascosti). La funzione di fitness per la genetica allena un comitato di modelli elmnn utilizzando questi parametri, valutati tramite kfold, ecc.

Ho scritto io stesso questo script, quando sono stato ispirato dal tuo articolo su elmnn e l'ottimizzazione bayesiana. Ma ho implementato la genetica al posto delle baes, funziona molto più velocemente in questo modo, e la stima del comitato è fatta sul mio gusto.

 
SanSanych Fomenko:

Il modello viene riqualificato in due casi:

  • la presenza di predittori con rumore è un problema importante e si risolve SOLO selezionando i predittori

La domanda non è solo per te, ma per tutti.

In pratica questo è il caso, cioè se ci sono predittori di rumore, NS non può uscire dal 50-55%. Se lo raccogliete, può anche dare il 70%.

Ma perché è così?
1) Bene, NS dovrebbe selezionare automaticamente i pesi vicini a 0 per i predittori di rumore durante l'allenamento (è equivalente alla loro esclusione dalla selezione). Lo abbiamo visto nel problema all'inizio del ramo.
2) Se non allenandosi a sottovalutare i pesi, almeno l'abbandono dovrebbe setacciarli...

 
Ildottor Trader:

È nello script R, che ho mostrato a Mikhail un centinaio di pagine fa. L'algoritmo genetico prova i parametri per elmnn (funzione di attivazione, grano gpsh, numero di neuroni nascosti). Nella funzione di fitness per la genetica un comitato di modelli elmnn è addestrato utilizzando questi parametri, stimati tramite kfold, ecc.

Copialo sul tuo blog, forse qualcun altro ne avrà bisogno. Non è realistico cercare qualcosa qui.
 
elibrario:

La domanda non è solo per te, ma per tutti.

In pratica è così, cioè se ci sono predittori di rumore allora NS non può uscire dal 50-55%. Se lo raccogliete, può anche dare il 70%.

Ma perché è così?
1) Bene, NS dovrebbe selezionare automaticamente i pesi vicini a 0 per i predittori di rumore durante l'allenamento (è equivalente alla loro esclusione dalla selezione). Lo abbiamo visto nel problema all'inizio del ramo.
2) Se non allenandosi a sottovalutare i pesi, almeno il dropout dovrebbe setacciarli...

C'è ancora una dimensione extra e bisogna disegnare una curva attraverso di essa in qualche modo, forse con un grande errore

l'abbandono al contrario aumenta l'errore, no?