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

 
SanSanych Fomenko:


Se prendete quasi tutti i libri sul datamining, le procedure per rimuovere i predittori correlati sono necessariamente descritte.

I predittori interagenti non sono necessariamente correlati... Interagiscono su target....

E la presenza dell'interazione produce risultati della specie:

> summary(lm(data = train_sample_list[[1]], price_future_lag_diff_6 ~ price_diff_lag_11 * price_diff_min_lag_16))


Call:

lm(formula = price_future_lag_diff_6 ~ price_diff_lag_11 * price_diff_min_lag_16, 

    data = train_sample_list[[1]])


Residuals:

      Min        1Q    Median        3Q       Max 

-0.035970 -0.000824  0.000001  0.000847  0.027278 


Coefficients:

                                          Estimate Std. Error t value Pr(>|t|)    

(Intercept)                              3.883e-05  3.146e-05   1.234  0.21714    

price_diff_lag_11                        4.828e-02  9.092e-03   5.310 1.12e-07 ***

price_diff_min_lag_16                   -3.055e-02  1.141e-02  -2.678  0.00743 ** 

price_diff_lag_11:price_diff_min_lag_16 -3.520e+00  3.515e-01 -10.014  < 2e-16 ***

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1


Residual standard error: 0.0024 on 10465 degrees of freedom

Multiple R-squared:  0.01611, Adjusted R-squared:  0.01583 

F-statistic: 57.11 on 3 and 10465 DF,  p-value: < 2.2e-16

Tutti i predittori sono significativi (e la loro interazione). Le statistiche F-statistiche sono fantastiche...

 
Alexey Burnakov:

I predittori interagenti non saranno necessariamente correlati... Interagiscono su target....

E la presenza dell'interazione produce i risultati della specie:

> summary(lm(data = train_sample_list[[1]], price_future_lag_diff_6 ~ price_diff_lag_11 * price_diff_min_lag_16))


Call:

lm(formula = price_future_lag_diff_6 ~ price_diff_lag_11 * price_diff_min_lag_16, 

    data = train_sample_list[[1]])


Residuals:

      Min        1Q    Median        3Q       Max 

-0.035970 -0.000824  0.000001  0.000847  0.027278 


Coefficients:

                                          Estimate Std. Error t value Pr(>|t|)    

(Intercept)                              3.883e-05  3.146e-05   1.234  0.21714    

price_diff_lag_11                        4.828e-02  9.092e-03   5.310 1.12e-07 ***

price_diff_min_lag_16                   -3.055e-02  1.141e-02  -2.678  0.00743 ** 

price_diff_lag_11:price_diff_min_lag_16 -3.520e+00  3.515e-01 -10.014  < 2e-16 ***

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1


Residual standard error: 0.0024 on 10465 degrees of freedom

Multiple R-squared:  0.01611, Adjusted R-squared:  0.01583 

F-statistic: 57.11 on 3 and 10465 DF,  p-value: < 2.2e-16

Tutti i predittori sono significativi (e la loro interazione). Le statistiche F-statistiche sono fantastiche...

Beh, forse ho solo avuto un'idea diversa del significato della parola "interazione".
 

Vizard_:

Nessun dato...

Senza dati, allora non c'è niente da discutere.

Riposati... tu!

 
Vizard_:
Yur, almeno non essere stupido) appena dimenticato chi ti ha detto in 9 anni che la vostra rete non è correttamente configurato, e con un polianalista può tirare la formula))))
Non ci sono pretese e segreti, uso strumenti dm standard, a volte con piccole modifiche. Se ti interessano solo i rinvii, ascolta,
ma le realtà sono un po' diverse... L'esperimento precedente era su dati reali. L'ha fatto su semplici dati artificiali. Il primo set è stato riconosciuto assolutamente
correttamente. Ho appena aggiunto ......... La risposta dovrebbe essere 100%, ma jPrediction 11 è così squallido "ii", che riesce a cedere))) In breve, mettetelo a punto,

Il dispositivo non funziona ancora. Non ti darò i dati, ti stai mettendo in mostra, lo capirai da solo... Versione 20 forse guarderò di nuovo, se la "pubblicità" sarà come oggi)))


Sei consapevole che le ottimizzazioni multiple producono sempre risultati diversi. Questa è l'ottimizzazione, se arrivasse sempre alla stessa risposta sarebbe certamente buona ma è troppo strano, provate ad ottimizzare un po' di volte, sono sicuro che 8 volte su 10 otterrete il vostro 100% Quindi è così....
 
SanSanych Fomenko:
Beh, forse avevo solo un'idea diversa del significato della parola 'interazione'.


Ci sono regole chiare per trattare le interazioni nei modelli lineari. Sono un po' più complicati del trattamento della combinazione lineare:https://www.r-bloggers.com/interpreting-interaction-coefficient-in-r-part1-lm/

Ma bisogna scavare in un sacco di combinazioni per trovare interazioni significative. Questo sì che è imbarazzante.

Interpreting interaction coefficient in R (Part1 lm)
Interpreting interaction coefficient in R (Part1 lm)
  • grumble10
  • www.r-bloggers.com
Interaction are the funny interesting part of ecology, the most fun during data analysis is when you try to understand and to derive explanations from the estimated coefficients of your model. However you do need to know what is behind these estimate, there is a mathematical foundation between them that you need to be aware of before being able...
 
Mihail Marchukajtes:
Sei consapevole che le ottimizzazioni multiple producono sempre risultati diversi? È l'ottimizzazione, se desse sempre lo stesso risultato sarebbe buono, ma è troppo strano, prova ad ottimizzare diverse volte, sono sicuro che otterrai il tuo 100% per 8 volte su 10. Quindi è così....

Non si rende nemmeno conto che il campione generale prima dell'allenamento è diviso in parti a caso: alcuni modelli vanno alla parte di allenamento, altri alla parte di test. E con una tale ripartizione, si può anche scoprire che alcuni modelli necessari per chiarire i modelli sono affollati nella parte di test e non rappresentati nella parte di allenamento. E poiché l'algoritmo si allena solo sulla parte di addestramento e non ha capacità telepatiche per scoprire cosa c'è nella parte di test, si verificheranno errori quando si calcola la capacità di generalizzazione. Cioè non succede niente di sorprendente.

Ma quando i modelli che dovrebbero specificare i modelli risultano essere distribuiti uniformemente in diverse parti del campione, la capacità di apprendimento è più alta che nel caso descritto sopra.

In altre parole, c'è un effetto caso per caso e ogni casualità può prima o poi mostrare il suo lato indesiderato.

È possibile che si possa trovare un metodo per cui il campione generale sia diviso in parti non casualmente, ma deterministicamente? Ma finora, l'esperienza ha dimostrato che ogni determinismo nella suddivisione dei campioni è irto di adattamenti, seguiti da un eccesso di apprendimento.

 
Yury Reshetov:

Potrebbe essere possibile trovare un metodo con il quale il campione generale è diviso in parti in modo deterministico piuttosto che casuale? Ma finora, l'esperienza mostra che ogni determinismo nel partizionamento del campione è irto di adattamenti e successive riqualificazioni.

Forse vuoi fare l'allenamento più volte e partizionare il campione in modo casuale ogni volta? E poi da questo insieme pronto di modelli addestrati possiamo scegliere e in generale possiamo valutare quanto è buono il modello.
Così possiamo negare la probabilità di ottenere un modello montato a caso senza essere ostaggio del determinismo.

 
Andrey Dik:
Forse hai bisogno di fare l'allenamento più volte e partizionare il campione in modo casuale ogni volta? E già da questo set pronto di modelli addestrati da scegliere e in generale si può valutare quanto è buono il modello.
Così possiamo ridurre a zero la probabilità di ottenere un modello montato a caso, senza essere ostaggio del determinismo.

Questo è già implementato in jPrediction, cioè diverse partizioni di campioni sono calcolate in parallelo su diversi core della CPU (due classificatori binari sono un terrario per core libero). Il processore risulta essere caricato al 100%. Il problema è che il numero di core nella CPU è limitato, quindi la probabilità di una distribuzione irregolare del modello può solo essere ridotta, ma è molto problematico minimizzarla. A meno che non si addestrino i modelli su supercomputer piuttosto che su PC.

Per esempio, se si calcolano i modelli sul supercomputer cinese Tianhe-2, questo ha 3.120.000 core. La probabilità di una distribuzione non uniforme dei modelli su parti del campione sarebbe trascurabile. Se calcoliamo i modelli su uno staff di 4 core (più un paio di core riservati ad altri compiti), non è sorprendente che prima o poi si possa incorrere in irregolarità.

 
Vi ricordo che nessuno mi ha chiesto perché lo faccio, ma rendo la variabile di uscita uguale al numero di uno e zero. Lo faccio regolando i segnali di profitto da -10 pips a +50 pips. Se la quantità di uno e di zero è uguale, il modello è raramente diviso in due. Ancora una volta, non è importante come dividere, è importante che la divisione sia stabile.....
 
Yury Reshetov:

Questo è già implementato in jPrediction, cioè diverse partizioni di campioni sono calcolate in parallelo su diversi core della CPU (due classificatori binari sono un terrario per core libero). Il processore risulta essere caricato al 100%. Il problema è che il numero di core nella CPU è limitato, quindi la probabilità di una distribuzione irregolare del modello può solo essere ridotta, ma è molto problematico minimizzarla. A meno che non si addestrino i modelli su supercomputer piuttosto che su PC.

Per esempio, se si calcolano i modelli sul supercomputer cinese Tianhe-2, questo ha 3.120.000 core. La probabilità di una distribuzione non uniforme dei modelli su parti del campione sarebbe trascurabile. Se si calcolano modelli su uno staff a 4 core (e si riservano un paio di core per altri compiti), non è sorprendente che prima o poi ci si imbatta in irregolarità.

Insomma, è utile farlo. Quindi invece di 4 partizioni, ovviamente non sufficienti, dovreste fare 40 partizioni. Per 4 core ci vorrebbe 10 volte più tempo per contare, ma suppongo che il tempo possa essere sacrificato a favore della robustezza.

"Se si può fare e se serve a qualcosa, va fatto". (c) Papo Carlo Albertovich.