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

 
Mihail Marchukajtes:

Un errore non è solo un errore. Un piccolo errore può avere un grande impatto.

E a NS non viene chiesto di catturare dati ripetitivi. Gli si chiede di identificare i modelli nascosti per ottenere il giusto risultato in assenza di dati ripetitivi. Capire la generalizzazione. Quando abbiamo un dominio finito di dati, ma abbiamo solo il 50% di quei dati. La rete impara e identificando un modello può costruire il resto dei dati che non ha visto. È come ricostruire vecchi filmati con pixel mancanti che la rete ricostruisce da sola.

Quindi è un approccio statistico! Per esempio, ho 20 foto di diversi triangoli. Al 21°, al triangolo manca l'ipotenusa. Posso facilmente determinare che si tratta di un triangolo non disegnato, in base alle statistiche raccolte - (c'è un triangolo in ogni foto). Cioè, un errore nel disegno del triangolo non è critico, perché ho già la statistica nel suo insieme. Questo principio non funziona con NS?
 
Tag Konow:
Beh, questo è un approccio statistico! Per esempio, ho 20 immagini di diversi triangoli. Al 21°, al triangolo manca l'ipotenusa. Posso facilmente determinare che si tratta di un triangolo non disegnato in base alle statistiche raccolte - ogni foto ha un triangolo al suo interno. Cioè, un errore nel disegno del triangolo non è critico per me, perché ho già delle statistiche in generale. Questo principio non funziona con NS?
Beh, più o meno, se non consideri che in 21 foto hai solo un angolo disegnato e il triangolo è fuori questione lì...
 
Mihail Marchukajtes:
Beh all'incirca, a meno che non conti che nelle 21 immagini hai solo un angolo disegnato e non si parla di un triangolo lì...
È così che funziona una previsione basata sulla statistica. Prevedo che si tratta di un triangolo non disegnato, che diventerà cavo nella prossima foto.
 
Vi dirò questo. Tutto viene con l'esperienza, e nel MoD ci sono due tipi di esperienza, teorica e pratica, e sono molto diverse, credetemi. Più si pratica, più si comincia a capire la filosofia del campo. Ecco, andare per patate in autoisolamento sembra una ricerca :-)(
 

Per capire l'essenza e le basi teoriche delle reti neurali, la conoscenza della teoria di Kolmogorov, Arnold e Hecht-Nielson è essenziale.

Per la pratica, questa conoscenza non è particolarmente necessaria, ma una comprensione generale non sarebbe male.

 
elibrario:

Ti ho dato un link per visualizzare gli split dai dati JOT. È qui che il modello completo viene caricato in un file. Poi gli split vengono letti da esso.

Sicuramente gli alberi già asimmetrici possono essere scaricati?


elibrario:

Nel boosting, per definizione, tutti gli alberi sono importanti. Ogni albero successivo perfeziona tutti quelli precedenti. Se si butta via un albero nel mezzo, allora tutti quelli che seguono lavoreranno con dati sbagliati - devono essere riqualificati, senza tener conto dell'albero buttato via. In questo caso il primo albero replicherà molto da vicino quello scartato.

No, non è esattamente vero. Quando il modello è pronto c'è un mucchio di foglie d'albero seduto dentro, dando una probabilità vicina a 0,5 - che è spazzatura in sostanza.


elibrario:

Sì. Le singole foglie del binning sono incomplete, perché sono aumentate dalle risposte delle foglie di altri alberi di raffinazione. E solo le risposte cumulative, ad esempio 100 alberi, danno la risposta corretta.

Cercare di ottenere qualcosa di affidabile da un solo foglio del modello boosting è impossibile.
Nel boosting, tutte le 100 risposte di 100 alberi sono sommate, ognuna dà per esempio 0,01 in totale = 1. Il valore di 1 foglia = 0,01 - cosa volete ottenere da questo? Non c'è niente. Solo la somma di 100 foglie darà la risposta corretta.
Infatti, lì il 1° albero è forte e dà per esempio 0,7, il resto porta la somma più vicina a 1. Se solo le foglie del primo albero sono considerate separatamente, ma penso che siano più deboli di qualsiasi albero della foresta casuale, a causa della minore profondità.
In una foresta casuale si trova la media, per esempio ogni foglia di 100 alberi = 1, la media anche = 1. In essa le volpi sono complete, ma con deviazioni casuali. Ma una folla di 100 risposte, dà la media come una risposta ragionevolmente accurata.

È possibile ottenere informazioni utili da un singolo albero, ma questo è raro.

Anche il primo albero non sarà il migliore.

Il boosting è veloce, ma bisogna selezionare attentamente i modelli, e questo richiede un grande campione, il che è un problema.

 
Aleksey Nikolayev:

Per capire l'essenza e le basi teoriche delle reti neurali, la conoscenza della teoria di Kolmogorov, Arnold e Hecht-Nielson è essenziale.

Per la pratica, questa conoscenza non è particolarmente necessaria, ma una comprensione generale non sarebbe male.

Spc.

La mancanza di una teoria rigorosa relativa a questi modelli di reti neurali non impedisce di ricercare le possibilità di applicazione ai problemi pratici.

 
Aleksey Vyazmikin:

Sicuramente gli alberi già asimmetrici possono essere scaricati?

Provato un esempio, aggiungendo grow_policy='Lossguide'.
Ecco un pezzo di modello che contiene spaccature:

'split': {'border': 16.049999237060547, 'float_feature_index': 1, 'split_index': 0, 'split_type': 'FloatFeature'}}, 'right': {'left': {'value': 0.05454545454545454, 'weight': 153}, 'right': {'value': 0.8265895953757225, 'weight': 161}, 'split': {'border': 5.999999046325684, 'ctr_target_border_idx': 0, 'split_index': 4, 'split_type': 'OnlineCtr'}}, 
'split': {'cat_feature_index': 1, 'split_index': 1, 'split_type': 'OneHotFeature', 'value': -845129958}}, {'left': {'left': {'value': -0.43103007753084105, 'weight': 444}, 'right': {'value': -0.10906568919445614, 'weight': 133}, 'split': {'border': 6.999999046325684, 'ctr_target_border_idx': 0, 'split_index': 2, 'split_type': 'OnlineCtr'}}, 'right': {'left': {'value': 0.02835585997337218, 'weight': 163}, 'right': {'value': 0.5713236394502054, 'weight': 151},
'split': {'border': 5.999999046325684, 'ctr_target_border_idx': 0, 'split_index': 3, 'split_type': 'OnlineCtr'}}, 
'split': {'cat_feature_index': 1, 'split_index': 1, 'split_type': 'OneHotFeature', 'value': -845129958}

Ci sono spaccature anche con Depthwise. Ma questo è su Python, non ho visto un modo per scaricare il modello su R. Ma penso che sia possibile salvare il modello in R nel formato interno, aprirlo in Python e scaricarlo in JSON. E da esso tutto ciò che serve per usare

 
Colleghi. L'argomento è interessante, ma non capisco la differenza tra il machine learning e la semplice ottimizzazione dei parametri in un tester ? Dopo tutto, l'obiettivo sarà più o meno lo stesso - prendere una decisione per entrare (uscire) dal mercato quando i parametri di entrata (uscita) coincidono. Entrambi i metodi smettono di funzionare quando il mercato cambia fortemente. Hanno bisogno di essere riqualificati e ottimizzati. In breve e senza filosofia.
 
Yan Barmin:
Colleghi. L'argomento è interessante, ma non capisco la differenza tra l'apprendimento automatico e la semplice ottimizzazione dei parametri in un tester? Lo scopo sarà all'incirca lo stesso - prendere una decisione sull'entrata (uscita) dal mercato quando i parametri di entrata (uscita) coincidono. Entrambi i metodi smettono di funzionare quando il mercato cambia fortemente. Hanno bisogno di essere riqualificati e ottimizzati. In breve e senza filosofia.

La differenza è nella flessibilità dello strumento. La rete neurale può adattarsi a qualsiasi serie. Guarda il polinomio qui sotto. La larghezza dei coefficienti e il loro numero possono essere assolutamente diversi.

double getBinaryClassificator1(double v0, double v1, double v2, double v3, double v4, double v5, double v6, double v7, double v8, double v9, double v10) {
   double x0 = 2.0 * (v0 + 2.6721302849319) / 5.70376880500565 - 1.0;
   double x1 = 2.0 * (v1 + 0.862195874260524) / 4.318953971518134 - 1.0;
   double x2 = 2.0 * (v2 + 0.636958350251177) / 2.893126110958697 - 1.0;
   double x3 = 2.0 * (v3 + 1.28131145039971) / 4.47439455086403 - 1.0;
   double x4 = 2.0 * (v4 + 1.40655622673661) / 3.84454848827483 - 1.0;
   double x5 = 2.0 * (v5 + 1.05792133319783) / 4.0361119526354905 - 1.0;
   double x6 = 2.0 * (v6 + 0.960632890559664) / 2.810809591513934 - 1.0;
   double x7 = 2.0 * (v7 + 2.50474545671368) / 4.50657217846072 - 1.0;
   double x8 = 2.0 * (v8 + 3.37124943164126) / 5.00153555828254 - 1.0;
   double x9 = 2.0 * (v9 + 1.01434366581359) / 3.81959911946484 - 1.0;
   double x10 = 2.0 * (v10 + 0.997401251919643) / 2.959840023725593 - 1.0;
   double decision = 0.0455519244734931 * sigmoid(x0 + x5 + x8)
  + 0.01733841684822077 * sigmoid(x5 + x7 + x8)
  + 0.21269063180827888 * sigmoid(x0 + x5 + x7 + x8)
  + 0.02875816993464052 * sigmoid(x0 + x8 + x9)
  -0.025853304284676835 * sigmoid(x0 + x4 + x8 + x9)
  + 0.021169208424110384 * sigmoid(x0 + x7 + x10)
  + 0.07184095860566449 * sigmoid(x0 + x8 + x10)
  + 0.03769063180827887 * sigmoid(1.0 + x0 + x3 + x5 + x8)
  -0.03179012345679012 * sigmoid(1.0 + x3 + x6 + x9)
  + 0.02750544662309368 * sigmoid(1.0 + x0 + x5 + x7 + x9)
  + 0.1463507625272331 * sigmoid(1.0 + x1 + x2 + x8 + x9)
  + 0.012799564270152506 * sigmoid(1.0 + x0 + x2 + x10)
  + 0.1864560639070443 * sigmoid(1.0 + x0 + x1 + x5 + x8 + x10)
  + 0.07494553376906318 * sigmoid(1.0 + x0 + x2 + x5 + x8 + x10)
  + 0.014669571532316631 * sigmoid(1.0 + x2 + x5 + x6 + x8 + x10)
  + 0.05266884531590414 * sigmoid(1.0 + x0 + x1 + x7 + x8 + x10)
  + 0.04566085693536674 * sigmoid(1.0 + x0 + x1 + x2 + x8 + x9 + x10)
  + 0.061546840958605666 * sigmoid(1.0 + x0 + x2 + x4 + x8 + x9 + x10);
   return decision;
}

Ora immaginate il numero di varianti, nessun Expert Advisor multiparametrico può vantare una tale flessibilità. Si dice anche che siano capaci di generalizzare, ma questo non è certo :-)