Ottimizzazione e test fuori campione. - pagina 4

 

Sì, infatti!

Inoltre, (tenendo conto anche delle critiche) vorrei far notare che c'è un'obiezione significativa per coloro che non sono del tutto d'accordo con la semplice esecuzione dell'idea.

"Non bisogna complicare l'essenza delle cose oltre il necessario!" (Fr. Occam)

La prima ottimizzazione seguita dalla seconda (fuori campione) è una soluzione semplice e sufficiente!

Dopotutto, puntiamo a fare un profitto, non a impegnarci nell'ottimizzazione, per il gusto di ottimizzare.

 
Vita:

--> Tagliare fa la stessa cosa (segnare, controllare). Cosa porta in più lo spacco rispetto a una corsa diretta?


La suddivisione filtra efficacemente le informazioni. In termini di quantità.

Vita ha scritto (a):

--> Se per "elaborazione dei risultati dell'ottimizzazione su tutto il campione" intendi scartare l'insieme D, allora non sono d'accordo - scartare i risultati che danno perdite intermedie (nel campione o fuori dal campione) è un compito elementare che viene risolto durante l'ottimizzazione stessa su tutto il campione, cioè nessuna elaborazione dopo l'ottimizzazione è necessaria. Il risultato è l'insieme B subito. E nessun controllo extra che richiede tempo fuori dal campione.

Intendi l'ottimizzazione in senso matematico o nel senso di tester reale? Il campione, come ho capito, ora include entrambi i campioni. Pensi di poter risparmiare tempo eseguendo tre set inutili su entrambi i campioni? Per quanto riguarda l'implementazione, se si scrive il proprio tester da zero, forse i costi di implementazione saranno trascurabili. Provate l'implementazione, poi possiamo tornare alla domanda.

 
leonid553:

Sì, infatti!

Inoltre, (tenendo conto anche delle critiche) vorrei far notare che c'è un'obiezione significativa per coloro che non sono del tutto d'accordo con la semplice esecuzione dell'idea.

"Non bisogna complicare l'essenza delle cose oltre il necessario!" (Fr. Occam)

La prima ottimizzazione seguita dalla seconda (fuori campione) è una soluzione semplice e sufficiente!

Dopotutto, stiamo perseguendo l'obiettivo del profitto, non l'ottimizzazione, per il bene dell'ottimizzazione.


Anch'io, e sono completamente d'accordo con Occam. Non dovreste fare due ottimizzazioni - una è sufficiente.

Hai detto: "Dopo l'ottimizzazione di un Expert Advisor, dovremo spesso assillare e tediosamente eseguire fuori campione più di una dozzina di set di parametri suggeriti dall'ottimizzatore.

Una corsa su tutta la popolazione, senza dividere in campioni-outsample, è una soluzione non meno sufficiente e anche più diretta.

 

Categoricamente non sono d'accordo, Vita. Altrimenti nelle reti neurali non ci sarebbe la divisione di tutti i dati in tre parti, fondamentalmente diverse: l'ottimizzazione reale - solo sulla prima parte; la seconda serve solo per determinare il momento della fine dell'addestramento, e la terza - solo per i singoli test. Cioè, il vero raccordo va solo sul primo, e sul terzo, è qualunque cosa si riveli... E la scelta - "rasoio di Occam" o perdita di fiducia nel sistema - è lasciata al creatore del sistema.

Grosso modo, ottimizzare su A+B+C non è affatto la stessa cosa dell'elaborazione descritta sopra.

 
Mathemat, penso che quello che intende è raccogliere l'intero gruppo (non dimenticare la combinatoria) di risultati, dividerlo in 4 insiemi e scartarne tre.
 
Mathemat:

Categoricamente non sono d'accordo, Vita. Altrimenti non ci sarebbe la divisione di tutti i dati in tre parti nelle reti neurali. Inoltre la vera ottimizzazione è solo sulla prima parte; la seconda serve solo per determinare il momento della fine dell'addestramento, e la terza è solo per i singoli test.


La divisione dei dati nelle reti neurali in tre parti, sospetto, esiste per imparare leggi (come 2x2=4), per rivelare questi schemi. E solo se ce ne sono. Altrimenti la rete neurale sarà adattata alla curva da sola.

E poi, come mi è sembrato, il compito del tester non è quello di addestrare o rilevare modelli, ma di trovare l'insieme ottimale di parametri. Questo può essere fatto con semplice forza bruta o con algoritmi genetici o forse con una rete neurale. Ma una volta trovato un insieme di parametri ottimali per un campione, come si fa ad evitare l'adattamento della curva? Il principio? Quali sono i cattivi elementi dell'insieme che scompaiono quando si fa il test fuori campione?

 
lna01:
Vita:

--> Tagliare fa la stessa cosa (segnare, controllare). Cosa porta in più lo spacco rispetto a una corsa diretta?


La suddivisione filtra efficacemente le informazioni. In termini di quantità.

--> lo splitting filtra i risultati con perdite nel campione o fuori campione, ma con guadagni cumulativi totali. Non è qualcosa che vorrei scartare.

Vita ha scritto (a):

--> Se per "elaborazione dei risultati dell'ottimizzazione su tutto il campione" intendi scartare l'insieme D, allora non sono d'accordo - scartare i risultati che danno perdite intermedie (nel campione o fuori dal campione) è un compito elementare risolto durante l'ottimizzazione stessa su tutto il campione, cioè non è necessaria alcuna elaborazione dopo l'ottimizzazione. Il risultato è l'insieme B immediatamente. E nessun controllo aggiuntivo che richiede tempo fuori dal campione.

Intendi l'ottimizzazione in senso matematico o nel senso di tester reale? Il campione, come ho capito, ora include entrambi i campioni. Pensi di poter risparmiare tempo eseguendo tre set inutili su entrambi i campioni? Per quanto riguarda l'implementazione, se si scrive il proprio tester da zero, forse i costi di implementazione saranno trascurabili. Provate l'implementazione, poi possiamo tornare alla domanda.

--> "Il campionamento, per come lo intendo io, ora include entrambi i campioni" - scusa, non volevo farti pensare questo. Dimenticalo.

Quello che volevo dire è che il vero tester di MetaTrader permette di ottenere gli stessi risultati quando si ottimizza una popolazione campione+non-campione come quando si ottimizza un campione seguito da test al di fuori del campione. Nel Tester, il pulsante "Proprietà dell'esperto", poi le schede "Test" e "Ottimizzazione" ti permettono di eliminare le perdite di qualsiasi lunghezza e profondità tu voglia. E siccome resto del parere che l'ottimizzazione di un campione seguita da un test fuori campione non elimina nient'altro e non aggiunge nulla, questa è la soluzione del problema.

Sfortunatamente, è in senso matematico che si può ottenere una perfetta ottimizzazione dei parametri sotto qualsiasi curva data. Il trucco con come testare "per il futuro" fuori dal campione è un'ottimizzazione nascosta ma sempre la stessa banale ottimizzazione su tutta la popolazionedata di campione+fuori dal campione. Non ci sono garanzie per il futuro, non ci si sbarazza dell'adattamento delle curve. Un set di parametri praticabile deve essere trovato in un altro modo.

 
La divisione dei dati nelle reti neurali in tre parti, sospetto, esiste per insegnare delle leggi (come 2x2=4), per rivelare questi modelli.

Esatto, Vita, per identificare i modelli. Cosa stiamo facendo qui? Si inventano altri due set di dati per evitare che questa identificazione degeneri in una banale "memorizzazione" della popolazione iniziale (= curvafitting). In NS funziona così: apprendimento sul set A (training set) verso la riduzione della funzione obiettivo (di solito è un errore di previsione o di classificazione). L'apprendimento è organizzato in modo tale che l'errore su A diminuisca monotonicamente.

Allo stesso tempo lo stesso errore con gli stessi parametri è testato sul set B (set di convalida). Lì l'errore cambia come una funzione a cascata (prima calante, poi minima, poi crescente). Non appena l'errore minimo viene raggiunto sul set B, l'addestramento si ferma. Continuare l'addestramento su A, anche se l'errore diminuisce, porta al curvafitting, perché l'errore sul set B inizia già a crescere. A questo punto, si dice che la capacità di generalizzazione della rete diminuisce. Ecco perché l'addestramento viene forzatamente fermato, senza portare il fitting su A al limite (e questa è la differenza fondamentale tra l'algoritmo e il fitting fatto dall'ottimizzatore di metaquote).

Infine, l'insieme di parametri a cui l'apprendimento si è fermato viene eseguito sul terzo set C (il set di prova). Questo è il vero controllo della qualità della formazione, perché i dati su C non hanno alcun effetto sulla formazione precedente. Naturalmente non c'è alcuna garanzia di funzionamento stabile di NS con i parametri trovati, ma questo algoritmo annulla almeno il 95% degli pseudo-graal, di cui ce n'è più di uno qui sul forum :).

E una semplice ricerca su un singolo frammento di dati è il curvafitting più puro, ideale nella zona di formazione e inutile al di fuori di essa.

Naturalmente MT4 non è un programma di rete neurale e l'algoritmo generale dovrà essere riprogettato, ma è sempre meglio del banale curvafitting, che chiamiamo "ottimizzazione", hehe...

 
Vita:

Volevo dire che il vero tester di MetaTrader permette di ottenere gli stessi risultati quando si ottimizza un campione + popolazione fuori campione come quando si ottimizza un campione seguito da un test fuori campione. Il pulsante "Expert Advisor Properties" e le schede "Testing" e "Optimization" permettono di liberarsi delle perdite di qualsiasi lunghezza e profondità.

Tutto dipende dalla definizione del compito. Se trascuriamo il grado di uniformità della distribuzione dei profitti sul tempo di test, le capacità standard del tester MT sono davvero sufficienti e il tempo impiegato sarà comparabile. Vale la pena trascurarlo? Ognuno ha la propria esperienza e il proprio punto di vista. Il processo può effettivamente essere chiamato adattamento, ma penso che il termine approssimazione sarebbe più accurato. Non tutte le approssimazioni possono essere estrapolate nel futuro e il criterio dell'uniformità del profitto permette solo di rifiutare quelle varianti che non sono evidentemente adatte all'estrapolazione. IMHO, naturalmente.

 
Mathemat:

E un semplice overshoot su un singolo pezzo di dati è puro curvafitting, perfetto nell'area di allenamento e inutile al di fuori di essa.

--> Esattamente, è così.

Ma a cosa serve spezzare la trama in frammenti? A cosa porta lo "pseudo-apprendimento" su tre frammenti diversi? Porta al profitto su ogni singola trama? In che modo un tale adattamento è migliore? Dà una garanzia di redditività al di fuori della trama? Se lo credete, allora è così. Inoltre, il tester ti dà la possibilità di soffocare la curva in modo che su ogni frammento A, B, C... si ottiene un profitto.

Ma lasciamo perdere le reti neurali, perché non sono nemmeno lontanamente paragonabili a questo argomento. La gente sta facendo manualmente il fastidio per un dubbio vantaggio, che, per inciso, ho fatto notare, ma non ho sentito più nulla, in che modo i risultati dopo l'ottimizzazione sul campione e le prove sul fuori campione sono migliori di una banale esecuzione? Vede, stiamo parlando di lavoro e risultati reali, non di teoria delle reti neurali. Sarebbe così gentile da indicare qualche vantaggio reale, se ce ne sono ancora, oltre a quello che ho indicato.

Motivazione: