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

 
Iwan Negreshniy:

IMHO muss man zuerst in Python arbeiten, wo es mehr oder weniger fehlerfrei ist, sonst gibt es eine Menge Unsicherheiten

Ja, es sieht so aus, als ob die dll 32bit und mt5 64bit ist.

Ich komme später wieder, im Moment ist Python in Ordnung.

 
Maxim Dmitrievsky:

Ich glaube nicht, dass ich das selbst machen kann, ich werde wohl doch Python benutzen müssen :D

Man sollte Ihnen den Titel "Herausragender Spezialist darin, sich selbst Schwierigkeiten zu bereiten" verleihen! Exklusiv aus dem Film: Normale Helden gehen immer den umgekehrten Weg.


Hier ist das sprichwörtliche Klappern, nur ein paar Klicks für das von Ihnen erwähnte xgboost-Modell.

Wir bekommen es für die Schulung von Stichproben:

Error matrix for the Extreme Boost model on Df1.num [**train**] (counts):

      Predicted
Actual    0    1 Error
     0 1930   90   4.5
     1   42 2152   1.9

Error matrix for the Extreme Boost model on Df1.num [**train**] (proportions):

      Predicted
Actual    0    1 Error
     0 45.8  2.1   4.5
     1  1.0 51.1   1.9

Overall error: 3.1%, Averaged class error: 3.2%

Rattle timestamp: 2018-05-31 11:21:20 user

Für die Validierungsstichprobe.

Error matrix for the Extreme Boost model on Df1.num [validate] (counts):

      Predicted
Actual   0   1 Error
     0 306 119  28.0
     1 111 367  23.2

Error matrix for the Extreme Boost model on Df1.num [validate] (proportions):

      Predicted
Actual    0    1 Error
     0 33.9 13.2  28.0
     1 12.3 40.6  23.2

Overall error: 25.5%, Averaged class error: 25.6%

Rattle timestamp: 2018-05-31 11:22:15 user

Für Testproben.

Error matrix for the Extreme Boost model on Df1.num [test] (counts):

      Predicted
Actual   0   1 Error
     0 314 118  27.3
     1 112 360  23.7

Error matrix for the Extreme Boost model on Df1.num [test] (proportions):

      Predicted
Actual    0    1 Error
     0 34.7 13.1  27.3
     1 12.4 39.8  23.7

Overall error: 25.5%, Averaged class error: 25.5%

Rattle timestamp: 2018-05-31 11:22:50 user


Wenn Sie mit dem Ergebnis zufrieden sind, können Sie sich den Code in R ansehen. Das ist die Herausforderung:

crs$ada <- xgboost(Long_Short ~ .,
  data              = crs$dataset[crs$train,c(crs$input, crs$target)],
  max_depth         = 6,
  eta               = 0.3, 
  num_parallel_tree = 1, 
  nthread           = 2, 
  nround            = 50,
  metrics           = 'error',
  objective         = 'binary:logistic')


Tatsächlich können Sie den gesamten R-Code von Rattle übernehmen und diese Funktion von MT4/5 EA aufrufen und das Ergebnis im Tester sehen. Primitive dll, funktioniert seit langem und beständig, viele Menschen, die es benutzen...

Und das alles innerhalb einer Stunde! ES GIBT KEINE PROBLEME MIT MODELLEN!

Es gibt Probleme mit den Zielen und den entsprechenden Zielprädiktoren oder umgekehrt. Aber um dieses Problem zu lösen, braucht man einen Werkzeugkasten mit extrem geringem Aufwand, um Varianten auszuprobieren.


PS.

Wenn Sie zu rattle gehen, können Sie mit einem Klick einen Baum (rPart), randomForest, SVM, logistische Regression glm, Ihr bevorzugtes neuronales Netz, wenn auch das einfachste nnet, erstellen. Und für einen Imbiss, ein lebendes Modell (um exorbitante Gewinne zu erzielen oder ein Depot zu erreichen), wenn Sie in der Lage sind, das Ziel und seine Prädiktoren zu formulieren.


SO SCHNELL WIE MÖGLICH.

Da Sie eine Liebe für xgboost geweckt haben und Sie diese Liebe mit akzeptablen Vorberechnungen in Rattle füttern können, ist hier die Dokumentation für Sie:

Paketbeschreibung - https://cran.r-project.org/web/packages/xgboost/xgboost.pdf

Verstehen Sie Ihren Datensatz mit Xgboost - https://cran.r-project.org/web/packages/xgboost/vignettes/discoverYourData.html

xgboost: eXtreme Gradient Boosting - https://cran.r-project.org/web/packages/xgboost/vignettes/xgboost.pdf

Und zur Auffrischung: die Xgboost-Präsentation https://cran.r-project.org/web/packages/xgboost/vignettes/xgboostPresentation.html


Bei dem Niveau, das Sie hier an den Tag legen, haben Sie überhaupt kein Problem mit R.


Viel Glück!

 
SanSanych Fomenko:

Danke sanSanSanych... ich habe es nur nicht verstanden, hat rattle xgb?

wie auch immer, ich muss nur dieses Modell anstelle von Alglib Gerüst, für RL Aufgaben

Ich muss nichts erforschen, ich brauche nur eine bessere Sache mit Regularisierung und Kreuzvalidierung... Ich weiß nicht, wie es in R aussieht, aber in Python zum Beispiel lässt sich die Kreuzvalidierung auch leicht mit xgb fallback verbinden

und dann R hat keine richtigen Bibliotheken für RL, alle von ihnen sind in Python, d.h. ich muss R über Python wieder setzen... sowieso, ich habe noch nicht entschieden, was ich brauche :)

 

Wir reden hier von Bäumen...

Ich weiß nicht, ob es sich um Ziele für einen Balken handelt, aber wenn es sich bei den Zielen tatsächlich um Ereignisse handelt, die nach N Balken eintreten (ich denke hier speziell an den Trendhandel oder andere Fälle, in denen eine Position nach N Balken oder einem festen Zeitraum durch SL/TP geschlossen wird ), und deren Ergebnis berücksichtigt und klassifiziert wird, ist es wichtig, bei der Bewertung der Ergebnisse nicht auf die Kontingenztabelle zu achten, sondern auf

1. Die Variationshäufigkeit der Klassifizierungsergebnisse in einem Fenster von N Balken

2. Gruppierung der Regeln nach N Balken (Regeldichte)

Im ersten Fall wird ein Indikator benötigt, um die Änderungshäufigkeit des vorhergesagten Ziels abzuschätzen. Ist diese hoch, ist das Modell instabil, obwohl es einen hohen Prozentsatz an richtigen Lösungen erzielen kann.

Im zweiten Fall müssen wir eine Regel pro Fenster (N Balken) eine wiederholte Regel anwenden, um die Verstärkung und die Ausbreitung dieser Regel durch das Modell zu schätzen.

Daher ist es notwendig, die Schätzungen zu ändern, wenn die Modellqualität trainiert wird, einschließlich der Gerüstmodelle und anderer Modelle, die eine Selbstanalyse ihrer Ergebnisse erfordern, um Korrekturen vorzunehmen.

Was halten Sie von diesen Gedanken?

 

Wieder einmal wurde ich davon überzeugt, dass R nicht mein Ding ist :) Syntax wird fast nicht hervorgehoben, Code ist unlesbar, Fehler werden fast nicht hervorgehoben. Der Code selbst und die Sprache sind nicht ästhetisch ansprechend

das könnten Ihre Gegenargumente sein

Ja, man kann einen Algorithmus in 3 statt 5 Zeilen in Python trainieren, das ist alles. Die Lesbarkeit in Python wäre besser. Ich sehe keinen Vorteil für MO-Pakete, es ist alles dasselbe.

 
Maxim Dmitrievsky:

Wieder einmal wurde ich davon überzeugt, dass R nicht mein Ding ist :) Syntax wird fast nicht hervorgehoben, Code ist unlesbar, Fehler werden fast nicht hervorgehoben. Der Code selbst und die Sprache sind nicht ästhetisch ansprechend

das könnten Ihre Gegenargumente sein

Ja, man kann einen Algorithmus in 3 statt 5 Zeilen in Python trainieren, das ist alles. Die Lesbarkeit in Python wäre besser. Ich sehe keinen Vorteil in den MO-Paketen, es ist alles dasselbe.

Ich bin gerade dabei, einen Videokurs über R-Programmierung auf Russisch zu besuchen :) Die Sprache ist sicherlich eine Hölle von einer Syntax und Annahmen, zum Beispiel die Fähigkeit, eine globale Variable in einer Funktion zu deklarieren kann den Code zu verzerren, vor allem, wenn die Funktion mehr als einmal aufgerufen wird, nach dem Sie stolpern und suchen Sie nach Fehler, aber es wird nicht an den Compiler sein.

Ich bin wirklich verärgert über die Speichernutzung in R - derzeit 187 Megabyte csv-Datei ist im Speicher als 1,5 Gbyte zu arbeiten mit Baum (während in Rattle 7,5 Gbyte zu bauen Wald), Multi-Threading ist als separate Prozesse gestartet, die nicht wissen, wie man mit gemeinsamem Speicher arbeiten implementiert, als Ergebnis statt der Belastung 6 Prozessorkerne kann ich nur 4 laden, durch 8 Gbyte des verfügbaren Speichers begrenzt werden.

Wie behandelt Python diesen Fall?

 
Aleksey Vyazmikin:

Ich bin gerade dabei, einen Videokurs in Russisch über die Programmierung in R zu besuchen :) Sprache ist sicherlich die härteste in Bezug auf Syntax und Annahmen, zum Beispiel die Möglichkeit, eine globale Variable in der Funktion zu deklarieren kann ein großes Durcheinander von Code zu machen, vor allem, wenn die Funktion mehr als einmal aufgerufen wird, dann werden Sie stolpern und suchen nach Fehler, aber es wird nicht auf den Compiler sein.

Ich bin wirklich verärgert über die Speichernutzung in R - derzeit 187 Megabyte csv-Datei wird im Speicher als 1,5 Gbyte verteilt, um mit Baum zu arbeiten (während in Rattle 7,5 Gbyte, um Wald zu bauen), Multi-Threading ist als separate Prozesse implementiert gestartet, die nicht mit gemeinsamem Speicher arbeiten können, so dass anstelle von 6 Prozessorkerne laden kann ich nur 4 laden, durch 8 Gbyte des verfügbaren Speichers begrenzt werden.

Wie verhält sich Python in diesem Fall?

Ich habe mir den Speicher nicht angesehen, da ich noch nie so große Dateien verwendet habe :) Aber ich habe gehört, dass frühe Versionen von R ein Problem mit dem Speicher und seiner Löschung hatten

Python ist in jeder Hinsicht eine fortgeschrittenere Sprache, da sie für eine Vielzahl von Aufgaben verwendet wird.

Ich verstehe auch nicht lustig über R Plot-Visualisierung - es ist miserabel im Vergleich zu Python, Rstudio IDE ist auch ein Waldmonster, wie es möglich ist, im Jahr 2018 zu unterstützen

ich habe 100 Zeilen Code geschrieben und war verwirrt, alles verschmolz zu einem unleserlichen Durcheinander mit unbeleuchteter Syntax :) wenn Sie also einen Rausch davon bekommen wollen, verwenden Sie Python in vscode oder Jupyter Notebooks

Upd-Bäume und -Wälder selbst benötigen viel Speicherplatz, abhängig von der Größe des Sets und der Anzahl der Bäume und ihrer Tiefe. Mein Ausschuss für 20 Wälder mit 50 Bäumen und 1000 Beispielen benötigt zum Beispiel ~40mb
 

Schreiben Sie Blödsinn über R: weiß nicht, kann nicht und will nicht.

1. Die Geschwindigkeit und Einfachheit der Fehlersuche in R ist im Vergleich zu Sprachen mit Compiler-Vorteil gegenüber Interpreter erstaunlich. Die Hervorhebung ist in dieser Hinsicht sehr begrenzt, da es nichts hervorzuheben gibt - der Code ist fast sofort umsetzbar. Code mit extrem hoher Kapazität. Das Schreiben von "spoilery" Code ist höchstwahrscheinlich das Ergebnis eines Mangels an Wissen über R selbst und die Funktionalität der Pakete. Und wenn es wirklich so passiert ist, verlangt ein guter mauvais ton die Aufteilung in Funktionen, OOP ist vorhanden.

2. Die Verwendung von globalen Variablen in allen Sprachen sollte mit Vorsicht erfolgen. In R ist ihre Notwendigkeit sehr zweifelhaft, weil die Parameter von Funktionen und die Rückgabe von ihnen "Objekt" sein können, während es in R alles ist. Ansonsten können Sie den Raum kontrollieren, an den die Variablennamen angehängt werden.

2. Die Grafik ist eine der besten in der Welt - es gibt alles, vom einfachsten Plot bis hin zu Cartoons, mehrere Ebenen von Grafiken: von primitiven bis hin zu spezialisierten Rohlingen für Statistiken.

3. Es ist unmöglich, sie mit Python zu vergleichen: Sie sind ungefähr gleich weit verbreitet, aber Python hat viele "fremde" Benutzer, vor allem Website-Entwickler, während R ein System der Statistik ist, unser natives System, doppelt nativ, weil das MO in der Statistik enthalten ist. Wenn wir über Pakete für uns sprechen, sollten wir mit anderen spezialisierten Paketen (SAS...) vergleichen, aber sie sind bezahlt.

4) R ist der algorithmische Standard in der Statistik. Fast alle modernen Veröffentlichungen enthalten notwendigerweise R-Code.


Zuletzt. R ist ein Teil von Microsoft, und Python ist eine Unterdistribution, hier in einem benachbarten Thread konnten sich sehr erfahrene Programmierer nicht auf die Quelle der Distribution einigen. Für mich ist das ein Urteil.


Beim Programmieren entscheidet man sich sehr oft für das, was bequemer ist, und nicht für das, was nützlich und funktional ist, aber eine Verwässerung, um eine äußerst fragwürdige Wahl zu treffen, ist es nicht.

 
SanSanych Fomenko:

SanSanych, die einzige Quelle für die Verteilung ist die Python-Website :)

Für Statistik und maschinelles Lernen Erweiterung IPython und anaconda. Besuchen Sie die russischsprachige opendatascience-Community oder sehen Sie sich Videos von Yandex an. Sie haben noch nie etwas von R gehört. Was gilt also als Norm? Testen Sie Python, um sich eine eigene Meinung zu bilden und zu vergleichen. Außerdem können Sie mit Python, wie Sie sagten, nicht nur Statistiken erstellen, sondern auch andere Dinge tun, falls erforderlich.

Es ist auch eine interpretierte Sprache, aber sie ist perfekt hervorgehoben und prüft die Syntax während des Ablaufs, nicht erst nach dem Ausführen des Skripts, + Code-Faltung, Notizblöcke und eine Reihe anderer Goodies

 
Maxim Dmitrievsky:

Ich habe nicht auf den Speicher geachtet, da ich noch nie so große Dateien verwendet habe :) Aber ich habe gehört, dass frühe Versionen von R ein Problem mit dem Speicher und seiner Löschung hatten

Python ist in jeder Hinsicht eine viel ausgereiftere Sprache, da sie für eine Vielzahl von Zwecken verwendet wird.

Ich verstehe auch nicht die lustige Sache über R Plot-Visualisierung - es ist miserabel im Vergleich zu Python, Rstudio IDE ist auch ein Waldmonster, wie es möglich ist, im Jahr 2018 zu unterstützen

Ich habe 100 Zeilen Code geschrieben und wurde verwirrt, alles wurde in ein unlesbares Durcheinander mit unbeleuchteter Syntax verschwommen :) kurz gesagt, wenn Sie einen Buzz aus ihm heraus erhalten möchten, verwenden Sie Python in vscode oder Jupyter Notebooks

Upd-Bäume und der Wald selbst benötigen viel Speicherplatz, abhängig von der Größe des Sets und der Anzahl der Bäume und ihrer Tiefe. Mein Ausschuss mit 20 Wäldern mit 50 Bäumen und 1000 Beispielen benötigt zum Beispiel ~40mb

Bis jetzt habe ich den Eindruck, dass R ein cooler Rechner ist. Das Fehlen von russischsprachiger Hilfe bei den Hauptfunktionen macht mich fertig, denn das ist für mich wegen meiner Schwäche in der Linguistik sehr wichtig.

Visualisierung - es gibt einige Schwierigkeiten, für mich sind die großen Bäume für die Visualisierung nicht richtig geeignet, nur die Konvertierung in PDF hilft, das ist schon gut.