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

 
Maxim Dmitrievsky #:
Non abbiamo bisogno di questo tipo di sviluppo, ma di un garage con le Lexus.

Senza capire qual è il mercato, non ci sarà nemmeno un pacchetto di pasta.

 
mytarmailS #:

senza capire qual è il mercato, non ci sarà nemmeno un pacchetto di pasta.

La FF è un garage con le Lexus, non so come altro spiegarlo.
 
Maxim Dmitrievsky #:
La FF è un garage con una Lexus, non so come altro spiegarlo.

Non devo spiegarlo a te, sono un ragazzo grande.

Tu hai un'opinione, io ne ho un'altra.

La mia opinione è la mia esperienza, non puoi cambiarla con le parole.

 
mytarmailS #:

Non devo spiegare, sono un ragazzo grande.

Tu hai un'opinione, io ne ho un'altra.

La mia opinione è la mia esperienza, le parole non possono cambiarla.

La cosa triste è che non è un'opinione, è un fatto.
Si può disegnare un diavolo calvo al posto di FF e farcelo stare.
 
Maxim Dmitrievsky #:
La cosa triste è che non è un'opinione, è un fatto.
Si può disegnare un diavolo calvo al posto di una FF e adattarlo a essa

non ti rendi nemmeno conto delle cazzate che stai dicendo in questo momento))))

Come se l'ottimizzatore in mt , non fosse un ottimizzatore e ottimizzasse non FF

 
mytarmailS #:

non ti rendi nemmeno conto delle cazzate che stai dicendo in questo momento).

Come se l'ottimizzatore di mt non fosse un ottimizzatore e non ottimizzasse FF.

Cosa c'entra questo con mt? Hai mai sentito parlare di ottimizzazione della produzione? Quando hai dei processi realmente interdipendenti, ma devi migliorare l'efficienza.

Lo stesso vale per l'ottimizzazione sl/tp di un modello finito.

E tu stai creando un diavolo calvo da un mucchio di spazzatura usando FF.

Davvero, finiamola, è un'assurdità, come se stessi parlando a uno scolaretto.
 

Il libro TORCH per R è finalmente uscito.

Se ci sono futuri maghi del DL, fatelo.

 
Rorschach #:

Avete provato questo approccio ? (cercate la sezione "Interpretazione del modello" a metà pagina).

Grazie per il link - sarà molto utile quando finalmente inizierò a sperimentare in python!

Suppongo che questo sia un nuovo stile di presentazione del libro? C'è altro materiale?

Per rispondere alla domanda - quando ho fatto l'abbattimento delle foglie, non ho usato direttamente nulla.

Non ho lavorato con una foresta di alberi decisionali, quindi non ho usato una serie di tecniche in linea di principio come suggerito. Tuttavia, ho utilizzato qualcosa di simile, ad esempio la stima della varianza dell'errore di una particolare foglia è stata utilizzata per determinare il peso di una foglia nell'ensemble.

L'importanza dei predittori sulla stima della divisione è presente anche in CatBoost, ma nel gradient bousting è necessario adattare la comprensione degli indicatori, poiché gli alberi sono dipendenti e sequenziali. La metrica stessa è piuttosto controversa, poiché valuta la costruzione degli alberi e il principio greedy non funziona bene per tutti i dati. Tuttavia, ho utilizzato la media dei punteggi di un centinaio di modelli su 8 intervalli di campioni per selezionare i predittori per i modelli CatBoost: in media questo metodo ha migliorato i risultati dell'addestramento. L'esperimento è stato pubblicato in dettaglio in questo thread.

Non ho provato la correlazione di frequenza nella versione proposta - ho inventato un mio metodo per raggruppare i predittori binari e le foglie, che permette anche di scartare predittori binari e foglie troppo simili. Penso che l'implementazione python dovrebbe essere più veloce, dato che il mio algoritmo non è ottimale - dovrebbe essere confrontato per capire.

L'idea di selezionare predittori altamente modificati sembra interessante, dovrei provarla. Ma in realtà nell'esperimento che ho descritto sopra, l'ho fatto semplicemente non prendendo tali predittori per l'addestramento finale. Sarebbe meglio capire come rilevare la tendenza di una variabile a cambiare in base al suo comportamento storico, nonché il momento in cui le fluttuazioni diventano irreversibilmente spostate verso un cambiamento nell'intervallo medio della distribuzione di probabilità del predittore. Abbiamo idee sulla carta - dobbiamo codificarle.

Valutare il contributo di ciascun predittore alla soluzione per una particolare riga come visualizzazione è divertente, ma per un gran numero di predittori del modello è di scarsa utilità. Tuttavia, ho fatto una cosa simile (ho postato un cluster di uno di essi qui nel thread) in cui ho evidenziato il significato della risposta di lith in base al colore e a quanti fogli del modello sono stati utilizzati per prevedere ogni riga. È emerso che la maggior parte delle foglie cessa di essere attivata nel modello, cioè i modelli cessano di verificarsi del tutto - poche persone ci pensano.

Mi sono perso qualche idea espressa lì? Se sì, scrivetemi specificamente - le descriverò o meno.

Non ho capito l'idea di codificare le caratteristiche categoriali per utilizzarle nelle reti neurali - c'è un riferimento al materiale passato.

 
Slava #:

Ho capito. Le funzioni di perdita funzionano con le matrici come con i vettori. In questo punto non abbiamo finito (non abbiamo aggiunto il parametro dell'asse)

Cioè, nel tuo esempio devi risolverlo riga per riga.

Grazie per l'attenzione

Ok, ho capito. Ma c'è un problema con i vettori, in particolare con LOSS_BCE:

double bce(const vector &truth, vector &pred)
{
   double sum = 0;
   pred.Clip(DBL_EPSILON, 1 - DBL_EPSILON);
   const int n = (int)truth.Size();
   for(int i = 0; i < n; ++i)
   {
      sum += truth[i] * MathLog(pred[i]) + (1 - truth[i]) * MathLog(1 - pred[i]);
   }
   return sum / -n;
}

void OnStart()
{
   vector actual_values = {0, 1, 0, 0, 0, 0};
   vector predicted_values = {.5, .7, .2, .3, .5, .6};     // 0.53984624 - keras (correct answer)
   Print(actual_values.Loss(predicted_values, LOSS_BCE));  // 0.6798329317196582 - mql5 API
   Print(bce(actual_values, predicted_values));            // 0.5398464220309535 - custom
}

Anche in questo caso il risultato dell'API non corrisponde al risultato atteso.

 
Aleksey Vyazmikin #:

Grazie per il link - sarà molto utile quando finalmente inizierò a sperimentare in python!

Immagino che questo sia un nuovo stile di presentazione del libro? C'è altro materiale?

Per rispondere alla domanda - quando ho fatto la selezione delle foglie, non è stato usato nulla direttamente.

Non ho lavorato con una foresta di alberi decisionali, quindi non ho utilizzato una serie di tecniche in linea di principio come suggerito. Tuttavia, ho usato qualcosa di simile, per esempio, ho usato la stima della varianza dell'errore di una particolare foglia per determinare il peso di una foglia nell'ensemble.

L'importanza dei predittori sulla stima della divisione è presente anche in CatBoost, ma nel gradient bousting è necessario adattare la comprensione degli indicatori, poiché gli alberi sono dipendenti e sequenziali. La metrica stessa è piuttosto controversa, poiché valuta la costruzione degli alberi e il principio greedy non funziona bene per tutti i dati. Tuttavia, ho utilizzato la media dei punteggi di un centinaio di modelli su 8 intervalli di campioni per selezionare i predittori per i modelli CatBoost: in media, questo metodo ha migliorato i risultati della formazione. L'esperimento è stato pubblicato in dettaglio in questo thread.

Non ho provato la correlazione di frequenza nella versione proposta - ho inventato un mio metodo per raggruppare i predittori binari e le foglie, che permette anche di scartare predittori binari e foglie troppo simili. Penso che l'implementazione python dovrebbe essere più veloce, dato che il mio algoritmo non è ottimale - dovrebbe essere confrontato per capire.

L'idea di selezionare predittori altamente modificati sembra interessante, dovrei provarla. Ma in realtà nell'esperimento che ho descritto sopra, l'ho fatto semplicemente non prendendo tali predittori per l'addestramento finale. Sarebbe meglio capire come individuare la tendenza di una variabile a cambiare in base al suo comportamento storico, nonché il momento in cui le fluttuazioni diventano irreversibilmente spostate verso un cambiamento nell'intervallo medio della distribuzione di probabilità del predittore. Ho delle idee sulla carta - ho bisogno di codificarle.

Valutare il contributo di ciascun predittore alla soluzione per una particolare riga sotto forma di visualizzazione è divertente, ma per un gran numero di modelli di predittore è poco utile. Tuttavia, ho fatto una cosa simile - ne ho postato un cluster qui nel thread - in cui ho evidenziato il significato della risposta di lith in base al colore e a quanti fogli del modello sono stati utilizzati per prevedere ogni riga. È emerso che la maggior parte delle foglie smette di attivarsi nel modello, cioè i modelli smettono di verificarsi del tutto - pochi ci pensano.

Mi sono perso qualche idea espressa lì? Se sì, scrivetemi in modo specifico - le descriverò o meno.

Non ho capito l'idea di codificare le caratteristiche categoriali per utilizzarle nelle reti neurali - c'è un riferimento al materiale passato.

Questo è facilmente automatizzabile e funziona senza l'intervento umano.

Ho mostrato un algoritmo simile nell'ultimo articolo.

In sostanza, si tratta di filtrare gli errori del modello e di inserirli in una classe separata "non fare trading", meglio se attraverso il secondo modello, che impara a separare i grani dalla pula.

E solo i grani rimangono nel primo modello.

È la stessa cosa che succede con le regole ad albero, ma da un lato. Ma le regole devono essere derubricate e confrontate l'una con l'altra, e l'output è un TC raffinato.

Ad esempio, la prima iterazione di selezione dei grani dalla pula (a sinistra della linea tratteggiata verticale - OOS):

Ed ecco la decima: