Discussione sull’articolo "Le foreste casuali prevedono le tendenze" - pagina 10

 
TheXpert:

Sovrallenamento è un termine consolidato e abbastanza specifico. Lei non solo lo sostituisce, ma non spiega nemmeno di cosa si tratta secondo la sua interpretazione.

Mi ricorda molto Sulton ) nel modo di comunicare.

L'addestramento del modello avviene quando il modello estrae l'essenza del processo, nel gergo locale "pattern", che ha luogo non solo nel campione di addestramento, ma anche al di fuori di esso.

Il sovrallenamento (overfitting) si verifica quando il modello inizia a selezionare alcune casualità che non esistono al di fuori del campione di addestramento e per questo motivo il modello fornisce un valore di errore molto diverso dall'errore di addestramento.

Molte persone su questo forum hanno affrontato l'overtraining (forse senza rendersene conto), poiché è molto facile ottenere un EA overtrained con l'aiuto dell'ottimizzazione nel tester.

Ma questa è tutta filosofia.

La realtà sta nelle competenze specifiche, negli strumenti che vengono utilizzati in questo processo.

Con il mio articolo e il mio libro non sto cercando di risolvere il problema dell'overtraining, ma solo di aprire la porta al mondo dei modelli predittivi, che (i modelli) insegnano a prevedere cose di qualità nel futuro. Se lo stimato gpwr avesseletto Rattle dopo averci speso un paio d'ore, le sue domande avrebbero molto più contenuto senza dimostrare che non si è preso la briga di leggere il mio articolo ma ha un'opinione sul suo contenuto. Ma soprattutto, Rattle copre l'intero processo di creazione di modelli molto complessi, compresa la stima delle prestazioni dei modelli fuori campione, l'elenco dei predittori significativi, il numero di modelli trovati ..... Uso ancora Rattle, anche se i modelli attuali sono diversi. Solo per capire, testare un'idea..... 20-30 minuti e la direzione dello sviluppo può cambiare radicalmente.

Un obiettivo molto limitato.

Oltre all'articolo e al libro, offro servizi a pagamento. E sta a ciascuno decidere se ho le qualifiche necessarie per eseguire l'elenco di lavori pubblicizzato. E io, prima di accettare un particolare ordine, decido se il cliente è in grado di comprendere il risultato del mio lavoro.

File:
PredictTrend.zip  858 kb
 
faa1947:


1. formare un insieme di predittori piuttosto ampio, ad esempio 50 pezzi con un numero di barre pari a 15.000.

2. Utilizzando uno degli algoritmi di cui sopra, selezioniamo i predittori su queste 15 mila barre - di solito otteniamo 15-20 pezzi, che vengono utilizzati nella costruzione del modello più spesso del 20% dei casi.

3. Poi prendiamo una finestra più piccola, ad esempio 2000 barre, e iniziamo a spostarla di una barra alla volta, selezionando i predittori significativi tra i 20 selezionati in precedenza su 50.

4. L'elenco specifico dei predittori significativi cambia continuamente.


1. Come? Sono necessari 60 anni di storia giornaliera?

2. Lei sta guardando al futuro, onorevole. Selezionate 15-20 predittori sull'intera storia e poi li verificate sul campione "non addestrato" delle stesse 15000 barre? Se qualcuno mi dicesse oggi quali 15-20 predittori saranno "campionati" in futuro, non avrei bisogno di nient'altro per diventare miliardario.

Uso MatLab. Ci sono molti toolbox diversi. Quindi non dovete presumere che io non conosca i vostri metodi. Né devi pensare che io abbia un approccio superficiale o dilettantesco (lo penso solo del tuo approccio). Tutti possono usare pacchetti e toolbox diversi. Ma non tutti possono capirne l'essenza. E non avete bisogno di pubblicizzare i vostri servizi e le vostre offerte a me. I miei problemi sono molto più complicati della definizione di sovrallenamento. Ho 10 mila indicatori-previsori economici ed è molto difficile scegliere quelli che influenzano il mercato. Se esamino ogni singolo previsore, mi sfuggono situazioni come quella del mio esempio precedente, quando la serie target non è in relazione con uno dei previsori, ma questo previsore è incluso nel modello della serie target. Se si esaminano tutte le possibili combinazioni di predittori diversi, non si ha abbastanza tempo per farlo. Anche la ricerca di due predittori su 10.000 richiede più di una settimana. Per ora ho una rete biologica che si autopunisce (ci vuole molto tempo per spiegarlo, è necessario un po' di allenamento per capirlo) per selezionare N variabili rilevanti. Questa rete è più veloce della ricerca di tutte le possibili combinazioni di predittori, ma è ancora lenta. Quindi, se avete un'idea brillante su come determinare che x1 fa parte del modello y guardando solo a y e x1 nel mio esempio, vi darò una medaglia d'oro.

 
gpwr:

1. Come? Sono necessari 60 anni di storia quotidiana?

2. Lei sta guardando al futuro, onorevole. Selezionate 15-20 predittori sull'intera storia e poi li verificate sul campione "non addestrato" delle stesse 15000 barre? Se qualcuno mi dicesse oggi quali 15-20 predittori saranno "campionati" in futuro, non avrei bisogno di nient'altro per diventare miliardario.

Uso MatLab. Ci sono molti toolbox diversi. Quindi non dovete presumere che io non conosca i vostri metodi. Né devi pensare che io abbia un approccio superficiale o dilettantesco (lo penso solo del tuo approccio). Tutti possono usare pacchetti e toolbox diversi. Ma non tutti possono capirne l'essenza. E non avete bisogno di pubblicizzare i vostri servizi e le vostre offerte a me. I miei problemi sono molto più complicati della definizione di sovrallenamento. Ho 10 mila indicatori-previsori economici ed è molto difficile scegliere quelli che influenzano il mercato. Se esamino ogni singolo previsore, mi sfuggono situazioni come quella del mio esempio precedente, quando la serie target non è in relazione con uno dei previsori, ma questo previsore è incluso nel modello della serie target. Se si esaminano tutte le possibili combinazioni di predittori diversi, non si ha abbastanza tempo per farlo. Anche la ricerca di due predittori su 10.000 richiede più di una settimana. Finora ho realizzato una rete biologica di auto-raccolta per la selezione di N variabili rilevanti (lunga da spiegare, è necessario un po' di allenamento per capirla). Questa rete è più veloce della ricerca di tutte le possibili combinazioni di predittori, ma è ancora lenta. Quindi, se avete un'idea brillante su come determinare che x1 fa parte del modello y guardando solo y e x1 nel mio esempio, vi darò una buona idea.

1. Come sarebbe? Sono necessari 60 anni di storia quotidiana?

Non esageriamo.

Io lavoro nel forex. Prevedo le tendenze e sono abbastanza soddisfatto delle tendenze che hanno inversioni di 50-100 pips. Non ho bisogno di uno storico giornaliero per questo. Nei miei esempi, questo è H1, 18000 sono tre anni.

2. Lei guarda al futuro, onorevole. Selezionate 15-20 predittori sull'intera storia e poi li testate su un campione "non addestrato" delle stesse 15000 barre?

L'ho già spiegato. È molto auspicabile che lei legga ciò che le sto spiegando personalmente. Non guardo al futuro. La performance è sempre fuori campione. Rattle non offre l'altra possibilità che lei suggerisce, anche se lo volessi.

Ho problemi molto più complessi della definizione di sovrallenamento. Ho 10 mila indicatori-previsori economici, e come scegliere quelli che influenzano il mercato è molto difficile. Se si esamina ogni singolo previsore,

Non esiste una ricerca completa. Le foreste casuali funzionano meglio quando il numero di predittori è misurato in migliaia, una volta ho visto una cifra di 50 mila. Sui miei dati le cifre sono le seguenti: 90 predittori, 10000 righe (barre) - tempo di addestramento del modello di circa un minuto su un core. Come risultato: etichette delle classi, probabilità delle etichette delle classi, importanza di ciascun predittore nella costruzione del modello.

Questa rete è più veloce di una ricerca di tutte le possibili combinazioni di predittori,

Non c'è ricerca di predittori. L'algoritmo è il seguente. Esiste un parametro: il numero di predittori in un nodo dell'albero, in base al quale viene presa la decisione sulla classificazione. Potete impostarlo voi stessi, il valore predefinito è sqrt (io ho 90 del numero massimo di predittori). Approssimativamente, in ogni nodo vengono utilizzati 9 predittori. L'algoritmo, quando considera ogni nodo dell'albero, prende sempre 9 predittori, ma sceglie sempre in modo casuale dal numero totale=90. Attraverso la convalida incrociata, i predittori più significativi vengono infine selezionati e utilizzati nella costruzione dell'albero finale.

PS.

Perché non utilizzate R? Se pagato, allora SAS....

Matlab non è affatto tra i pacchetti statistici specializzati.

 
Spiegate, per favore, perché vi prendete il disturbo di selezionare i predittori? Dopo tutto, i moderni algoritmi sono in grado di elaborare migliaia di predittori, anche se la maggior parte di questi predittori sono casuali. In questo caso, i modelli sono affidabili.
 
CyberCortex:
Spiegate, per favore, perché vi prendete il disturbo di selezionare i predittori? Dopo tutto, i moderni algoritmi sono in grado di elaborare migliaia di predittori, anche se la maggior parte di questi predittori sono casuali. E i modelli sono affidabili.

Purtroppo non è così. Almeno non per me.

Non sono a conoscenza di algoritmi di selezione dei predittori (anche se conosco diverse decine di algoritmi di selezione), dopo i quali (algoritmi) si escluderebbe l'overtraining del modello.

La vecchia regola della statistica è ancora valida: "Garbage in - rubbish out".

 
faa1947:

Purtroppo non è così. Almeno per me.

Non sono a conoscenza di alcun algoritmo di selezione dei predittori (anche se conosco diverse decine di algoritmi di selezione), dopo il cui funzionamento (algoritmi) sarebbe escluso l'overtraining del modello.

La vecchia regola della statistica è ancora valida: "Garbage in - rubbish out".

Non lo so, ho testato il mio programma e sembra che vada bene.

Se posso citare quanto ho scritto su un'altra risorsa: "Abbiamo testato la correttezza del programma sui dati presi da qui:

http://archive.ics.uci.edu/ml/index.html

(sito del Centro per l'apprendimento automatico e i sistemi intelligenti).

In questo caso, abbiamo utilizzato i dati delle analisi del sangue di persone sane e di persone affette da cancro. L'ipotesi era quella di costruire un modello in grado di prevedere il cancro negli esseri umani sulla base delle loro analisi. È stata richiesta la classificazione in 2 classi (malato - non malato).

La lunghezza dell'esempio di addestramento era di 10000 caratteristiche. 3000 di queste erano di natura casuale e aggiunte appositamente per testare la qualità della classificazione. In totale, nel campione di addestramento sono stati utilizzati 100 esempi, che sono indubbiamente molto pochi, ma non è stato possibile trovarne altri. Durante i test abbiamo utilizzato anche altri esempi nella quantità di 100 pezzi.

http://archive.ics.uci.edu/ml/datasets/Arcene

(Link all'archivio con i dati originali).

L'accuratezza del riconoscimento è stata del 75% su dati non familiari. Siamo convinti che se ci fossero più dati da addestrare, potremmo aumentare significativamente l'accuratezza delle previsioni". Fine della citazione.

P.S.: Il tempo di addestramento ha richiesto circa 2 minuti su un PC con processore a 8 core e 8 Gb di memoria, perché il tempo di addestramento dell'algoritmo non cresce esponenzialmente con il numero di predittori. Inoltre, i predittori non informativi non vengono utilizzati automaticamente.

Se qualcuno è interessato, ecco il link cybercortex.blogspot.ru (non consideratelo una pubblicità:)

 
CyberCortex:

Non lo so, ho testato il mio programma e sembra che tutto vada bene.

Se posso citare quanto ho scritto su un'altra risorsa: "Abbiamo testato la correttezza del programma sui dati presi da qui:

come gli indicatori. E come si è visto, è molto facile includere vari tipi di rifiuti nel modello e la regola "rifiuti dentro - rifiuti fuori" inizia a funzionare.

L'inclusione nel modello di predittori spazzatura, cioè di predittori che hanno una debole influenza sulla variabile target, porta a un sovrallenamento del modello, in cui tutto va bene sul campione di allenamento, ma i problemi sorgono al di fuori del campione.

 
faa1947:

Avete solo un grande e tipico esempio su cui mostrare il problema.

1. In superficie c'è il fatto che, a differenza del suo esempio, tutte le serie finanziarie appartengono alle cosiddette serie temporali, in cui l'ordine dei valori è importante. Pertanto, i modelli nei mercati finanziari, a differenza dei modelli in medicina, dovrebbero tenere conto di questa sfumatura.

2. Ma c'è una circostanza molto più grave, che riguarda direttamente l'argomento della sua domanda.

In medicina, la soluzione della domanda "malato-non malato" si riferisce alla diagnosi, e questa è la metà di tutta la medicina. Molte persone ricercano, giustificano, cercano "predittori" nella nostra terminologia, che secondo questi ricercatori sono rilevanti per il verdetto "malato o non malato". Non vediamo nulla di simile nel forex. Nel mercato azionario, la ricerca sulla relazione tra cause economiche e direzione del movimento è comune, ma nulla di tutto ciò si applica agli intervalli intraday.

Pertanto, quando si costruiscono modelli di apprendimento automatico su intervalli intraday, si utilizzano valori matematici e formali come gli indicatori. E come si è visto, è molto facile includere vari tipi di rifiuti nel modello e la regola "rifiuti dentro - rifiuti fuori" inizia a funzionare.

L'inclusione di predittori spazzatura nel modello, cioè predittori che hanno una debole influenza sulla variabile target, porta a una riqualificazione del modello, in cui tutto va bene sul campione di addestramento, ma al di fuori del campione ci sono problemi.

1. "Tutte le serie finanziarie appartengono alle cosiddette serie temporali, in cui l'ordine dei valori è importante". - Nessuno lo nega e questo ordine non viene violato, anche se si tratta di una serie temporale. Dopo aver addestrato il modello sui prezzi P1, P2, P3...Pn, non si cambia il loro ordine quando si esegue il test su Fuori Campione o nell'uso reale.

2. Sono d'accordo con te su una cosa: se l'input è costituito al 100% da predittori spazzatura, otterremo il 100% di spazzatura nell'output. Questo è ovvio e nessuno lo mette in dubbio. Dico solo che ci sono algoritmi per i quali non è importante eliminare i dati, perché danno buoni risultati su Out Of Samples con qualsiasi quantità di dati spazzatura diversa dal 100%, perché i dati spazzatura non vengono usati de facto. È inoltre importante distinguere tra gli algoritmi per i quali la riduzione della dimensionalità dei dati è fondamentale, come l'analisi delle componenti principali o gli autoencoder, e gli algoritmi insensibili alla dimensionalità dei dati.

"Nel mercato azionario, la ricerca sulla relazione tra cause economiche e direzione del movimento è comune, ma nulla di tutto ciò si applica agli intervalli intraday". - Invece sì, e si applica a intervalli infragiornalieri, come la pubblicazione dei Non-Farm Payrolls.

3. ovviamente ti capisco, ognuno guadagna come può, ma hai mai implementato tu stesso qualche algoritmo di machine learning? Sono convinto che per capire come funziona un algoritmo, bisogna scriverlo da soli da zero. Credetemi, in questo caso scoprirete cose che non sono scritte nei libri. E anche elementi apparentemente ovvi che prima sembravano facili, in realtà funzionano in modo diverso da come si pensava:) Saluti.

 
faa1947:

Inoltre, quando si costruiscono modelli di apprendimento automatico su intervalli intraday, si utilizzano valori matematici e formali come gli indicatori. E come si è visto, è molto facile includere vari tipi di spazzatura nel modello e la regola "spazzatura dentro - spazzatura fuori" inizia a funzionare.

E sì, a proposito, non è necessario usare "quantità matematiche come gli indicatori". Se volete, potete inventarvi un sacco di euristiche legate al prezzo, al volume, al tempo e al delta. Gli unici indicatori matematici che utilizzerei e che sono veramente matematici sono la media, la deviazione standard e la correlazione.
 
CyberCortex:
....

3. ovviamente ti capisco, ognuno guadagna come sa, ma hai mai implementato tu stesso qualche algoritmo di machine learning? Sono convinto che per capire come funziona un algoritmo sia necessario scriverlo da soli, partendo da zero. Credetemi, in questo caso scoprirete cose che non sono scritte nei libri. E anche elementi apparentemente ovvi che prima sembravano facili, in realtà funzionano in modo diverso da quanto si pensava:) Con tutto il rispetto.

Non potevo lasciarmi sfuggire una frase del genere. Rispetto!