Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 97

 
Dr. Trader:
Halten Sie nicht vertrauen Bedeutung, wenn es für Forex verwenden. Bei Iris handelt es sich um sehr einfache Daten, es gibt direkte Muster zwischen den verfügbaren Daten und Klassen. RF findet einfach eine minimale Menge von Prädiktoren, auf deren Grundlage Iris-Klassen definiert werden können, und schon ist man fertig.

Wie kann RF nicht-lineare Abhängigkeiten erfassen? Mir scheint, dass es für den Markt nur deshalb nicht funktioniert, weil die Prädiktoren faul sind; gäbe es normale Prädiktoren, würde es wie bei der Iris mit einer Fehlerquote von 95% funktionieren.

 

Bei Schwertlilien ist es ganz einfach: Wenn ein Blütenblatt von so-und-so bis so-und-so lang ist, dann ist es Klasse 1, und wenn es von so-und-so bis so-und-so breit ist, dann ist es Klasse 2, usw. RF findet Intervalle von Prädiktorwerten, die am besten mit den Zielwerten übereinstimmen.

Ich brauche für diese Aufgabe nicht einmal einen Wald, ein Baum reicht für 90 % Genauigkeit:

 Rule number: 2 [Species=setosa cover=33 (31%) prob=1.00]
   Petal.Length< 2.6

 Rule number: 7 [Species=virginica cover=35 (33%) prob=0.00]
   Petal.Length>=2.6
   Petal.Length>=4.85

 Rule number: 6 [Species=versicolor cover=37 (35%) prob=0.00]
   Petal.Length>=2.6
   Petal.Length< 4.85

Das heißt, wenn eine bestimmte Klasse einem bestimmten Bereich von Prädiktorwerten oder deren Kombinationen entspricht und sich diese Intervalle nicht überschneiden, dann wird der Baum oder der Wald alles zu 100% lösen.

Die Abhängigkeiten von Forex sind viel komplizierter, und ein Wald benötigt Dutzende von Prädiktoren, um die Zielwerte zu beschreiben. Der Wald wird sicherlich solche Intervalle von Prädiktoren und deren Kombinationen finden, die die Zielwerte beschreiben, aber es werden einfach nur Kombinationen ausgewählt, ohne jegliche Logik oder Analyse. Was der Wald für eine Entscheidung treffen wird - Rauschen oder ein wirklich wichtiger Prädiktor - ist eine Frage des Zufalls. Forest for forex funktioniert nur dann korrekt, wenn ungeeignete Prädiktoren im Voraus aussortiert werden und nur die für das Lernen notwendigen übrig bleiben. Das Problem ist, dass die notwendigen Prädiktoren irgendwie identifiziert oder gefunden werden müssen, und der Wald ist dabei keine Hilfe.

Das ist mir noch nicht gelungen.

Die meiste Zeit hat es gedauert, die Prädiktoren mit Eigenwert = 0 nach cov() der Trainingstabelle auszusieben (ich gehe davon aus, dass nur speziell korrelierte Prädiktoren geeignet sind). Nach 24 Stunden kam es zum Training des ForeCA-Modells selbst, das aufgrund eines Fehlers nicht trainiert werden konnte:

unit-variance: Mean relative difference: 3.520041 e-06
Error in check_whitened(out$score, FALSE) : Data must be whitened:
         Each variable must have variance 1.

Das Paket stellt sehr hohe Anforderungen an die Prädiktoren und enthält viele verschiedene Einschränkungen. Ich weiß nicht einmal, was der letzte Fehler bedeutet, aber ich werde ihn genauer untersuchen.

Ich werde das später fertigstellen:
Google sagt, dass Sie die Prädiktoren nicht löschen müssen. Sie können sie so transformieren, dass sie nicht mehr korreliert sind, dann hat die Kovarianzmatrix vollen Rang, was für ForeCA erforderlich ist. Für die Aufhellung gibt es einige Funktionen im Paket selbst (es funktionierte nicht sofort, Sie müssen sie herausfinden), plus die Theorie in den Links unten.
Um ForeCA richtig zu nutzen, müssen Sie zuerst verstehen und lernen, wie man es macht:
http://stats.stackexchange.com/questions/23420/is-whitening-always-good
http://courses.media.mit.edu/2010fall/mas622j/whiten.pdf

 
Dr. Trader:

1) Der Forex Forest wird nur dann korrekt funktionieren, wenn Sie die ungeeigneten Prädiktoren im Voraus aussortieren und nur die benötigten für das Training übrig lassen. Das Problem ist, dass die richtigen Prädiktoren identifiziert oder gefunden werden müssen, und der Wald ist dabei keine Hilfe.

2) Das Paket ist sehr anspruchsvoll für Prädiktoren, es gibt viele Einschränkungen. Ich weiß nicht einmal, was der letzte Fehler bedeutet, aber ich werde ihn genauer untersuchen.

1) Ich habe eine Idee vorgeschlagen, von der ich denke, dass sie gut genug ist, um eine solche Auswahl zu treffen, aber niemand ist daran interessiert, und ich kann sie nicht selbst implementieren.

2) Ich kann es nicht selbst tun. 2) Sie dürfen nur die Datenmenge reduzieren, sonst wissen Sie es selbst).

 

Ich habe diesen Beitrag bereits gepostet, aber niemand hat reagiert, ich versuche es noch einmal.

Ich habe diesen Beitrag bereits gepostet, aber niemand hat darauf reagiert, also versuche ich es noch einmal. In BP gibt es einen Begriff wie Dynamic Time Warping (DTW), mit dessen Hilfe man das Preisdiagramm lesbarer und damit für den Algorithmus besser erkennbar machen kann

data_driven_time_warp <- function (y) {
  cbind(
    x = cumsum(c(0, abs(diff(y)))),
    y = y
  )
}

y <- cumsum(rnorm(200))+1000

i <- seq(1,length(y),by=10)
op <- par(mfrow=c(2,1), mar=c(.1,.1,.1,.1))
plot(y, type="l", axes = FALSE)
abline(v=i, col="grey")
lines(y, lwd=3)
box()
d <- data_driven_time_warp(y)
plot(d, type="l", axes=FALSE)
abline(v=d[i,1], col="grey")
lines(d, lwd=3)
box()
par(op)

und alles scheint in Ordnung zu sein, aber das Traurige ist, dass wir als Ergebnis dieser Transformation zwei Koordinaten x und y Zeit(synthetisch) und Werte erhalten

d
                x        y
  [1,]   0.000000 1001.393
  [2,]   1.081118 1002.474
  [3,]   2.799970 1004.193
  [4,]   3.706653 1005.100
  [5,]   3.867351 1005.260
  [6,]   4.654784 1004.473
  [7,]   5.000202 1004.127
  [8,]   6.665623 1005.793
  [9,]   7.415255 1005.043
 [10,]   7.956572 1005.584
 [11,]   8.403185 1005.138
 [12,]   9.352230 1004.189
 [13,]   9.913620 1004.750
 [14,]  10.249985 1004.414

die Frage ist, wie man diese Transformation in einen Vektor zurückverwandelt, so dass er seine Eigenschaften nicht verliert

so sieht es aus - oben normal, unten dtw

DTW

 
mytarmailS:

1) Ich habe eine Idee vorgeschlagen, die ich für gut genug halte, um eine solche Auswahl zu treffen, aber niemand ist daran interessiert, und ich kann sie nicht selbst umsetzen.

2) Reduzieren Sie nur die Datenmenge oder kennen Sie sich aus)

Was schlagen Sie vor? Es stellt sich heraus, dass ich etwas verpasst habe? Darf ich Ihre Idee wiederholen?
 
SanSanych Fomenko:
Was schlagen Sie vor? Aber was habe ich verpasst? Darf ich Ihre Idee wiederholen?
Schauen Sie, wo ich über Clustering geschrieben habe, ich habe es sehr ausführlich erklärt
 
mytarmailS:

Die Frage ist, wie man diese Transformation in einen normalen Vektor zurückverwandeln kann, ohne seine Eigenschaften zu verlieren.

Haben Sie dazu eine Meinung?
 

Ich habe ein weiteres Beispiel mit ForeCA gemacht, in Archiv kleine Tabelle für Test und Code für die Arbeit mit ihm.
Dieses Mal habe ich es richtig gemacht.
Sie können Ihre eigene Tabelle mit Trainingsdaten für das Modell verwenden, die Hauptsache ist, dass es eine Matrix ohne Faktoren ist (Training mit lm, Sie können nur Regression verwenden). Die Anzahl der Zeilen sollte viel größer sein als die Anzahl der Prädiktoren, da es sonst zu Fehlern in ForeCA kommt.
Ich habe 0 und 1 Zielwerte, mit anderen Genauigkeit wird nicht richtig bestimmt werden, wenn das, korrigieren Sie bitte Code in RegressionToClasses01(regr) für Ihren Fall an der Stelle, wo Regression Ergebnis wird auf Klassen gerundet.
trainData - Daten für die Ausbildung
trainDataFT - Daten für den Fronttest

Ergebnis:
lm auf Rohdaten: 75% Genauigkeit auf Trainingsdaten und 57% auf neuen Daten.
lm auf alle 14 Komponenten von foreCA: 75 % auf Trainingsdaten und 61 % auf neue Daten. Etwas besser, aber in diesem Fall ist +4% nur +1 richtiges Ergebnis, die Tabelle ist ziemlich klein :)

Das heißt, wenn die Prädiktoren bereits vorausgewählt sind, sollte sich die Genauigkeit nach ForeCA nicht verschlechtern, vielleicht sogar um ein paar Prozentpunkte erhöhen.

Ich habe auch ein Diagramm mit der Abhängigkeit der Genauigkeit von der Anzahl der ForeCA-Komponenten hinzugefügt. Es scheint, dass die Ergebnisse umso genauer sind, je größer die Anzahl der Komponenten ist. Maximal zulässige Anzahl von Komponenten = Anzahl von Prädiktoren.


 

Der zweite Teil des Experiments lautet.

Ich hatte 14 zuvor ausgewählte Prädiktoren und fügte weitere 14 mit Zufallswerten hinzu. Die maximal zulässige Anzahl von ForeCA-Komponenten beträgt nun 28.

Die Vorhersagegenauigkeit mit allen 28 Komponenten auf Trainingsdaten beträgt in beiden Fällen (mit und ohne foreCA) 76 %, die Genauigkeit auf neuen Daten beträgt in beiden Fällen 57 %.

Ich glaube nicht, dass foreCA mit dem Müll in den Prädiktoren fertig geworden ist, ich habe das erwartete Wunder nicht gesehen.

 
mytarmailS:
Na und?
Es sieht aus wie ein Renko-Chart. Rencos werden im mt5-Terminal irgendwie auf Balken gezeichnet, man braucht hier einen ähnlichen Algorithmus.