C'è uno schema nel caos? Proviamo a trovarlo! Apprendimento automatico sull'esempio di un campione specifico. - pagina 20

 
Aleksey Vyazmikin #:

E come lo interpretate: c'è uno schema, ma non lo troverete? Oppure lo schema è nella casualità?

Leggete attentamente quello che c'è scritto.

Non c'è nulla tra le righe, è testuale e molto chiaro.

Lei ha formulato per la seconda volta una domanda che non corrisponde a ciò che ho scritto.

 
elibrarius #:

Come si fa senza avidità? Calcolate un altro per ogni split e selezionate una coppia in una volta sola, ma nel vostro caso il tempo di calcolo aumenterà di oltre 5000 volte. È più facile fare una media di cento modelli.

Penso piuttosto alla qualità, cioè a criteri di valutazione aggiuntivi.

Un altro approccio - pesi per i predittori che assicurino la coerenza della loro applicazione - non è un chiaro quadro ad albero. Si tratta di una sorta di "definire prima il tempo", poi "stimare la volatilità" e "la posizione attuale del prezzo".

elibrarius #:

Per ridurre l'influenza della casualità è corretto. Altrimenti bisogna fare la media di 20-100 modelli come nella foresta.

Qui hanno un altro trucco, e non capisco bene il processo - all'inizio costruiscono un albero su un campione troncato (se non forzato sull'intero campione), e poi contano i risultati in foglie sull'intero campione. Apparentemente le suddivisioni sono sul sottocampione e i pesi nelle foglie sono già sull'intero campione.

elibrarius #:

Cioè si scopre che gli alberi di raffinazione potrebbero non essere i migliori, ma casualmente peggiori.

Da qui la dispersione dei modelli da prosciuganti a redditizi.

Nah, l'addestramento migliora sempre il risultato ad ogni iterazione e i modelli nel campione di addestramento sono sempre in attivo. Anche se con uno spread finanziario.

elibrarius #:

A giudicare dai grafici di distribuzione, ci sono più modelli di drenaggio, cioè se facciamo la media, il risultato medio sarà non redditizio.

Sì, ma questo è più che altro un caso speciale.

elibrarius #:

Forse random-strength = 0? Si spera che le modifiche al seme smettano di cambiare il modello dopo questo. Forse creare un modello con alberi di raffinamento migliori piuttosto che con alberi casualmente cattivi. Se il modello migliore sarà uno scarico, allora cercare su questi dati da 10000 modelli casuali a caso il migliore è la strada per uno scarico sul reale.

Ho provato con zero, ma capisco che ilpunteggio degli alberi diventa lo stesso per tutti, e quindi gli stessi sono stati scelti casualmente :)). Oppure ancora da qualche parte viene usato un generatore di numeri casuali.

elibrarius #:

Oppure ancora si fa una media di più modelli scelti a caso, come nella foresta. Perché il migliore può essere riqualificato.

Cioè, selezionare i modelli da tre campioni e poi fare una media? Forse sì - non voglio ancora passare a ensemble di modelli, devo ancora esaminare la possibilità di migliorare la costruzione dei modelli stessi.

 
Aleksey Vyazmikin #:

Un altro approccio è quello dei pesi per i predittori che garantiranno la coerenza nella loro applicazione - non un chiaro quadro ad albero. È come dire "prima definiamo il tempo", poi "stimiamo la volatilità" e "la posizione attuale del prezzo".

Ho provato a farlo - dividendo prima per giorno della settimana e/o ora del giorno. I modelli si sono rivelati peggiori rispetto a quelli che trovano le prime suddivisioni da soli. Potete farlo anche voi: dividete il campione in 5 parti per giorno della settimana e formate 1 modello per ogni giorno. O un'ora o quello che volete.

Aleksey Vyazmikin #:

No, l'addestramento migliora sempre il risultato a ogni iterazione e i modelli nel campione di addestramento sono sempre in positivo. Anche se con uno spread finanziario.

È chiaro che ci sarà un miglioramento, ma non il migliore, ma con la randomizzazione del punteggio.
Non guardo affatto Trein, per non distrarmi. Sarà sempre bravo.

Aleksey Vyazmikin #: Provato con zero, ma ho capito che ilpunteggio degli alberi è diventato lo stesso per tutti, e significa che sono stati scelti tra gli stessi in modo casuale :)) O ancora un generatore di numeri casuali è usato da qualche parte.

Se il punteggio è diventato senza randomizzazione, e i risultati sono ancora diversi, significa che la randomizzazione è usata da qualche altra parte.

Aleksey Vyazmikin #: Cioè selezionare i modelli da tre campioni e poi fare la media? Forse sì - non voglio ancora passare a ensemble di modelli, devo ancora esaminare la possibilità di migliorare la costruzione dei modelli stessi.

Non per selezionare, ma per prendere tutti quelli generati casualmente. E fare una media. Come in una foresta. Anche lì, gli alberi casuali vengono mediati. Ma si può sperimentare con i migliori di quelli casuali.

 
elibrarius #:

Ho provato a fare così: ho diviso prima per giorno della settimana e/o ora del giorno. I modelli sono risultati peggiori rispetto a quelli che trovano le prime suddivisioni da sole. Potete farlo anche voi: dividete il campione in 5 parti per giorno della settimana e addestrate un modello per ogni giorno. O un'ora o quello che volete.

Sì, ho questa opzione :) Sono riuscito a ottenere risultati interessanti su uno dei predittori e a creare una strategia di segnalazione per esso.

Tuttavia, sto parlando di qualcos'altro qui, della priorità della selezione dei predittori da parte del modello durante l'allenamento.

elibrarius #:

Se Score è diventato senza randomizzazione e i risultati sono ancora diversi, significa che la randomizzazione viene usata da qualche altra parte.

Ovviamente :) Lo sviluppatore tace ancora su questo argomento.

elibrarius #:

Non è un'eliminazione, ma prendere tutti i risultati generati casualmente in una riga. E fare una media. Come in una foresta. Anche lì, gli alberi casuali sono mediati. Ma si può sperimentare con i migliori di quelli casuali.

Queste cose possono essere fatte con un grande Richiamo, o pre-gruppando i modelli in base alla somiglianza dei punti di risposta con una classe positiva, altrimenti ci sarà sempre una raccomandazione negativa.

 

Ho ridotto il campione dell'ultimo esperimento - con i predittori che ho selezionato in precedenza - ho rimosso due anni 2014-2015 dal campione del treno.

Se la volta scorsa c'erano 208 modelli con profitti superiori a 3000 nel campione d'esame, ora ce ne sono 277. È una coincidenza o i campioni sono diventati più simili?

Tra l'altro, il saldo medio dei profitti sul campione d'esame l'ultima volta era di 982 punti e sul campione troncato era di 2115, ma all'esame è quasi invariato -1114 vs -1214.


Avete qualche idea su come migliorare il risultato?

 
Buon pomeriggio, puoi postare i file del primo post, voglio provare anch'io un'idea.
 
Aleksey Vyazmikin #:

Se l'ultima volta c'erano 208 modelli con profitto superiore a 3000 nell'esame campione, ora ce ne sono 277. È una coincidenza o i campioni sono diventati più simili?

La dipendenza da Seed, cioè dai nuovi dati, è estremamente elevata. Nei dati in cui ci sono dei modelli, il quadro sarebbe come nella traccia: tutto in + con piccole deviazioni.
Provate a cambiare il Seed iniziale (provate diverse varianti). Se il numero di pattern di successo varia altrettanto, allora è casuale, così come la sequenza dell'HNC quando si cambia il seme.

Aleksey Vyazmikin #:

A proposito, il bilancio medio dei profitti sul campione di modelli di prova nell'ultima fase è di 982 punti, e sul campione troncato è di 2115, ma nell'esame è quasi invariato -1114 contro -1214.

È strano che la media dell'esame sia > 0. Forse intendevi dire traina? Il test non sembra partecipare all'apprendimento o vi partecipa indirettamente, per la scelta di una traina.

Aleksey Vyazmikin #:

Qualche idea su come migliorare il risultato?

Molto probabilmente il modello è sovrallenato o sottoallenato. E l'ultima opzione: non ci sono modelli.
Se è sovrallenato, provate a ridurre il numero di alberi a 1. Se è sottoallenato, potete aumentare la profondità dell'albero.
Probabilmente avete già provato la variante con più alberi.
La mancanza di modelli è più difficile. Se non li avete trovati con più di 5000 predittori, non so come cercarli. Non so nemmeno come abbiate fatto a trovare quegli oltre 5000 predittori. Non ho ancora scavato in quella direzione. Dato che ci vuole molto più tempo per calcolarlo, ma credo che dovrò farlo, dato che è anche circa 50/50 sugli OOS.

 

A proposito, costruite la linea di equilibrio con il tempo sull'asse orizzontale o solo con un passo pari tra le operazioni? A giudicare dai grafici, la seconda.

Ecco un esempio:

Il grafico superiore ha più di 3000 operazioni, quello inferiore più di 600. Se li si costruisce con una spaziatura uguale, si otterranno delle belle tendenze. Ma qui si può vedere che per 5 anni il trading è stato solo di pochi giorni e non ha senso creare un robot che dorma per mesi/anni. Lo spegnerete e basta.

L'immagine è proprio nel tema dei cigni bianchi e neri. Come potete vedere, MO li "morde" bene e si adatta ad essi, se sono presenti.
Anche @fxsaber ha studiato questo argomento https://www.mql5.com/ru/blogs/post/749420
Sono completamente d'accordo con lui che è necessario rimuovere l'influenza dei cigni bianchi e neri.

Se nell'ottimizzatore è possibile applicare un criterio personalizzato e selezionare in qualche modo altre opzioni, in MO ci sono solo opzioni standard per la selezione degli split e qui è possibile solo tagliare pezzi di storia. Il problema è che il momento del cigno bianco è sconosciuto prima che il modello venga addestrato. E se lo si elimina, il modello diventerà completamente diverso e potrebbe esserci il suo cigno bianco. Dobbiamo pensare e sperimentare...

Фильтр белых лебедей.
Фильтр белых лебедей.
  • www.mql5.com
В любом исследовании сначала идет подготовка исходных данных. На фин. рынках это почти всегда истории котировок. В зависимости от источника, они могут обладать определенными особенностями. Сегодня
 
RomFil #:
Buon pomeriggio, puoi postare i file del primo post, voglio provare anch'io un'idea.

Ciao. Sì, cercherò di postarlo oggi.

 
elibrarius #:

La dipendenza dal seme è estremamente elevata, cioè l'HGF dipende dai nuovi dati. Nei dati in cui ci sono dei pattern, l'immagine sarebbe come sulla trayne: tutto in + con piccole deviazioni.
Provate a cambiare il Seed iniziale (provate diverse varianti). Se il numero di pattern riusciti varia altrettanto, allora è casuale, così come la sequenza dell'HGC quando si cambia il seme.

Il Seed di ogni modello cambia in modo sequenziale da 1 a 10000: questo è lo scopo della generazione di modelli diversi. Cosa succede se il seme non è fisso e viene preso dall'intero spazio (o come viene generato - anche questa è una domanda) - non lo so - potete controllare.

Su cosa si basa l'affermazione che il risultato dovrebbe essere simile al test? Presumo che i campioni non siano omogenei - non c'è un numero comparabile di esempi simili in essi, e penso che le distribuzioni di probabilità sui quanti differiscano un po'.

Sì, che il modello sia costruito per caso - diciamo, ma questo significa che non descrive la regolarità identificata?

elibrarius #:

Strano che la media nel test sia risultata > 0. Forse ti riferisci alla traina? Il test non sembra essere coinvolto nell'apprendimento, o lo è indirettamente, per selezionare una traina.

Partecipa solo per controllare l'interruzione dell'addestramento, cioè se non c'è alcun miglioramento sul test mentre si addestra sul treno, allora l'addestramento si interrompe e gli alberi vengono rimossi fino al punto in cui c'è stato l'ultimo miglioramento sul modello di test.

È proprio questo il caso in cui potrebbe non esserci alcun miglioramento, ma il peggioramento non è forte, bensì esempi più generalizzati sul campione di treno, e l'algoritmo di apprendimento dice di interrompere questo caso. Se disabilitiamo questa funzione, si apre un'altra questione: quanti alberi devono essere utilizzati nel modello. Ho pensato a un'altra opzione: addestriamo un numero fisso di alberi e poi tronchiamo il modello usando il campione di prova, ma dovremo calcolare il bilancio a ogni passo, il che è sicuramente costoso.

Ora penso che sarebbe bene far fermare l'addestramento non da un solo campione, ma da un insieme di sottocampioni, il che darebbe un controllo sulla persistenza del modello nel tempo.

elibrarius #:

Molto probabilmente il modello è sovrallenato o sottoallenato. L'ultima possibilità è che non ci siano modelli.

Se è sovrallenato, provate a ridurre il numero di alberi a 1. Se è sottoallenato, potete aumentare la profondità degli alberi.
Si deve aver già provato la variante con un numero elevato di alberi.
La mancanza di modelli è più difficile. Se non li avete trovati con più di 5000 predittori, non so nemmeno come cercarli. Non so nemmeno come abbiate fatto a trovare quegli oltre 5000 predittori. Non ho ancora scavato in quella direzione. Dato che ci vuole molto più tempo per calcolarlo, ma credo che dovrò farlo, dato che è anche circa 50/50 sugli OOS.

A quanto pare non ho indicato chiaramente il campione che ho utilizzato: si tratta del sesto (ultimo) campione dell'esperimento descritto qui, quindi ci sono solo 61 predittori.

Come ho sottolineato sopra, sì, i modelli non sono completamente addestrati, nel senso che non descrivono l'intero treno di campioni, e questo è generalmente normale, perché il mercato cambia e tutte le combinazioni semplicemente non possono essere presenti e a ogni campione successivo ce ne sarà un numero diverso, e possibilmente con un risultato medio diverso. Non stiamo lavorando con un campione rappresentativo, quindi non possiamo aspettarci una descrizione completa: il mio obiettivo è estrarre un paio di modelli stabili.

Per quanto riguarda gli alberi, esiste un'impostazione per il tasso di apprendimento (--learning-rate), che è correlato al numero di alberi, vale a dire che più alto è il tasso, meno alberi sono necessari per descrivere il campione. Quindi, risulta che se si aumenta il tasso (0,3), il numero di modelli che superano il filtraggio condizionale è maggiore, a volte più del doppio; gli ultimi esperimenti sono stati condotti proprio su queste impostazioni e il numero medio di alberi è di 10 pezzi, mentre la loro profondità è di 6 split. Gli alberi in CB sono un po' diversi: c'è uno split su tutto il livello di un albero simmetrico, il che rende la loro applicazione più veloce rispetto alla variante classica, ma sono meno informativi uno a uno. Nelle ultime versioni, è possibile utilizzare gli alberi classici, ma non ho un interprete per i loro modelli in MQL5, quindi non li uso, per cui non me la prendo.

In generale, posso aggiungere altri predittori, perché ora vengono usati solo con 3 TF, con poche eccezioni - penso che se ne possano aggiungere un paio di migliaia, ma se tutti saranno usati correttamente nell'addestramento è dubbio, dato che 10000 varianti di seme per 61 predittori danno una tale diffusione....

Inoltre, è necessario effettuare un pre-screening dei predittori, che accelererà l'addestramento.

elibrarius #:

A proposito, costruisci la linea di equilibrio con il tempo sull'asse orizzontale o solo con un passo pari tra gli scambi? A giudicare dai grafici, la seconda.

Ecco un esempio:

Il grafico in alto ha più di 3000 operazioni, quello in basso più di 600. Se li si costruisce con un'uguale rientranza, si otterranno bellissime tendenze. Ma qui potete vedere che per 5 anni il trading è stato solo di pochi giorni e non ha senso creare un robot che dorma per mesi/anni. Lo spegnerete e basta.

L'equilibrio è costruito in modo sequenziale senza tenere conto della cronologia del calendario. Sì, capisco cosa intendi, ma nel mio concetto si tratta di una questione di fasi successive di preparazione dei modelli di trading.

elibrarius #:

L'immagine riguarda solo il tema dei cigni bianchi e neri. Come si può vedere, il MO "morde" bene su di essi e si adatta ad essi, se ce ne sono.

E' logico che le emissioni siano deviate, penso solo che si tratti di inefficienze, che dovrebbero essere apprese eliminando il rumore bianco. In altri settori, le semplici strategie primitive spesso funzionano, soprattutto nelle aree di mercato piatte.