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

 

La lezione sul boosting - ce n'era una più recente (in python con catbust come opzione) con lo stesso docente - non la trovo


 
Aleksey Vyazmikin:

Catbust ha una maggiore personalizzazione ed è un'estensione dell'idea di XGBoost, il principale vantaggio e svantaggio è che ha alberi di dimensione fissa che impediscono la riqualificazione se il numero di alberi non è grande.

....

Una domanda puramente tecnica. Supponiamo di avere 3 predittori - x1, x2, x3. Sappiamo anche che x1-x2, x1-x3, x2-x3 sono anche predittori e generano condizioni. Per quanto ho familiarità con gli alberi, anche questi predittori aggiuntivi dovrebbero essere inseriti nel modello.

Ma il caso è leggermente peggiore, i predittori sono alcuni a11*x1-b2*x2, a12*x1-a3*x2, ecc, generando qualcosa come sistemi di equazioni. I coefficienti non li conosco, ovviamente. Sono possibili anche combinazioni più complesse di predittori, queste sono date solo come esempio.

NS può gestire queste cose (combinazioni lineari di predittori e anche non lineari) e non ho bisogno di diventare fantasioso, quindi inserisco solo x1, x2 e x3 senza preoccuparmi.

Cosa fare con gli alberi in questi casi? Non ho trovato nulla di molto vago su questo argomento. O gli alberi lo faranno da soli?

 

CatBoost masterclass - ci sono link per scaricare il codice dal video per lavorare in python


 
Yuriy Asaulenko:

Una domanda puramente tecnica. Supponiamo di avere 3 predittori - x1, x2, x3. Sappiamo anche che x1-x2, x1-x3, x2-x3 sono anche predittori. Per quanto ho familiarità con gli alberi, anche questi predittori aggiuntivi dovrebbero essere inseriti nel modello.

Ma il caso è leggermente peggiore, i predittori sono alcuni a11*x1-b2*x2, a12*x1-a3*x2, ecc. Non conosco i coefficienti, ovviamente. Sono possibili combinazioni più complesse di predittori, queste sono date solo come esempio.

NS fa fronte a queste cose (combinazioni lineari di predittori) e non devo diventare fantasioso, e alimentiamo solo x1, x2 e x3 agli input, senza preoccuparci.

Cosa fare con gli alberi in questi casi? Non ho trovato nulla di molto vago su questo argomento. O gli alberi possono farlo da soli?

Teoricamente, un albero può descrivere una funzione, ma otterrà una sezione con coefficienti (x) che, se cambiati, ma la funzione stessa non sarà così efficace, perché memorizza il campo di eventi con costanti. Questi sono i miei pensieri, forse mi sbaglio. Per tali problemi, è meglio usare NS e dare all'albero una risposta pronta della funzione, che non cambierà la logica di interpretazione a seconda del cambiamento degli argomenti della funzione. Perciò è preferibile dare all'albero un insieme limitato di argomenti.

Il solo cambiamento di queste x porterà alla necessità di riaddestrare il modello.

In generale, se gli argomenti della funzione sono in un intervallo noto, che è rappresentato dal campione di allenamento, allora l'albero dovrebbe fare il lavoro. Ma questo è un compito di regressione, non di classificazione.
 
Aleksey Vyazmikin:

Teoricamente, l'albero potrebbe descrivere una funzione, ma risulterebbe essere una trama con coefficienti (x), che, se cambiata ma la funzione stessa è conservata, non sarebbe più così efficiente, perché ricorda il campo di eventi con costanti. Questi sono i miei pensieri, forse mi sbaglio. Per tali problemi, è meglio usare NS e dare all'albero una risposta pronta della funzione, che non cambierà la logica di interpretazione a seconda del cambiamento degli argomenti della funzione. Perciò è preferibile dare all'albero un insieme limitato di argomenti.

Un semplice cambiamento di queste x porterà alla necessità di riqualificare il modello.

Con NS lavoro, sono comprensibili. La cosa bella degli alberi è che generano logica, come if...then.... che, in generale, è necessario - l'output dovrebbe essere una decisione sì/no. Ma sembra che gli alberi non possano gestire nemmeno questo tipo di logica, anche se diamo loro tutta questa roba come input.

Сs11=PredTraid==[] and Stoch[0][i] > Stoch[1][i]+0.3 and Stoch[0][i-1] <= Stoch[1][i-1]
 
Yuriy Asaulenko:

Lavoro con NS, li capisco. Il fascino degli alberi è che generano una logica come if...then.... che, in generale, è quello che serve - l'output dovrebbe essere una decisione sì/no. Ma sembra che gli alberi non riescano più a far fronte a questa logica, anche se diamo loro tutto questo come input.

Dovremmo inserirli e vedere - fare dei campioni e controllare.

 
Aleksey Vyazmikin:

Dobbiamo sottometterci e vedere - fare qualche campionamento e controllare.

No, esempio sfortunato. Questo andrà bene).

 
Yuriy Asaulenko:

No, esempio sfortunato. Può essere gestito).

Certo, ci riusciranno, ma il NS usa i neuroni per ottenere formule, mentre gli alberi ottengono solo l'interpretazione dei risultati dei calcoli. Penso che se disegniamo una primitiva difficile da descrivere con una funzione, per esempio una casa dal disegno di un bambino, NS impiegherebbe molto tempo per trovarla, mentre l'albero determinerebbe rapidamente le coordinate di questo oggetto e le trasformerebbe semplicemente in vettori. Ma se si cambia la scala, l'albero non sarà in grado di identificare questa casa, ma il NS dovrebbe essere in grado di farlo.

 
Aleksey Vyazmikin:

CatBoost masterclass - ci sono link per scaricare il codice dal video per lavorare in python


buono, ben spiegato.

 
Maxim Dmitrievsky:

buono, ben spiegato

Sì, le impostazioni di base sono ben date, soprattutto se si inizia subito in python. Ma questo non mi basta.