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

 
vladavd #:

Das Neue in diesem Fall ist ein Zickzackkurs und ein Kanal entlang dieses Kurses, das ist die Avantgarde der Technik.

Das ist nicht alles, was Sie sehen.

Das sind nur 5% von dem, was erlaubt ist.))

lynxntech #:

das ist wie das letzte Wort und ein Hamburger.)

Du musst dir immer eine Chance geben, dich zu rechtfertigen.

 

Hey, Leute!

Vielleicht kann mir jemand einen Rat geben. Ich versuche, die Richtung eines Währungspaares für den Tag vorherzusagen (nach oben oder unten), indem ich das Modell "DecisionTreeClassifier" verwende.

Ich nehme nur 5 Prädiktoren für die Vorhersage, das Ergebnis der Vorhersage ist ein Aufwärts- (1) oder Abwärtstrend (-1). Datensatzgröße: 999 Zeilen und 6 Spalten (Datensatz im Anhang).

Ich bin jedoch auf ein Problem gestoßen: Wenn ich "max_depth" erhöhe, steigt die Genauigkeit in den Trainings- und Testproben gleichzeitig. Die Genauigkeit der Teststichprobe steigt nicht weiter an und wird bei max_depth=22 konstant , gleich 0,780000. Ergebnisse bei verschiedenen Werten von max_depth:


1) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=3)

Genauigkeit auf Trainingsmenge: 0.539424 Genauigkeit auf Testmenge: 0.565000

2) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=5)

Genauigkeit in der Trainingsmenge: 0.579474 Genauigkeit in der Testmenge: 0.585000

3) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=7)

Genauigkeit in der Trainingsmenge: 0.637046 Genauigkeit in der Testmenge: 0.640000

4) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=9)

Genauigkeitin der Trainingsmenge: 0.667084 Genauigkeit in der Testmenge: 0.700000

5) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=11)

Genauigkeit in der Trainingsmenge: 0.700876 Genauigkeit in der Testmenge: 0.710000

6) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=13)

Genauigkeit in der Trainingsmenge: 0.720901 Genauigkeit in der Testmenge: 0.720000

7) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=15)

Genauigkeit in der Trainingsmenge: 0.734668 Genauigkeit in der Testmenge: 0.740000

8) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=17)

Genauigkeit in der Trainingsmenge: 0.747184 Genauigkeit in der Testmenge: 0.760000

9) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=19)

Genauigkeit in der Trainingsmenge: 0.755945 Genauigkeit in der Testmenge: 0.765000

10) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=22)

Genauigkeit in der Trainingsmenge: 0.760951 Genauigkeit in der Testmenge: 0.780000


Ich bin sehr verwirrt von dieser Situation, denn ich habe gehört, dass man max_depth nicht mehr als 3-4 verwenden sollte, da ein erneutes Training möglich ist. Aber verhält sich das Modell so, wenn es neu trainiert wird, sieht es eher wie ein untrainiertes Modell aus.

.

Ich verstehe in einer solchen Situation nicht, welche Tiefe des Entscheidungsbaums ich wählen soll oder welches Modell überhaupt und ob es sich überhaupt lohnt, in dieser Richtung weiterzuarbeiten, vielleicht fehlt etwas (aber der Datensatz ist nicht 100 Zeilen groß), ob es möglich ist, weitere Prädiktoren hinzuzufügen und wie viele weitere bei einer solchen Größe des Datensatzes hinzugefügt werden können (ich würde 2-5 weitere Teile hinzufügen).

Der Code ist einfach, ich füge ihn auch zusammen mit dem Datensatz bei:



 
Elvin Nasirov #:

Ich bin sehr verwirrt von dieser Situation, weil ich gehört habe, dass man max_depth nicht mehr als 3-4 verwenden sollte, weil ein Retraining möglich ist. Aber verhält sich das Modell so, wenn es neu trainiert wird? Es sieht eher wie ein nicht trainiertes Modell aus.

.

Ich verstehe in einer solchen Situation nicht, welche Tiefe des Entscheidungsbaums ich wählen soll oder welches Modell überhaupt und ob es sich überhaupt lohnt, in dieser Richtung weiterzuarbeiten, vielleicht fehlt etwas (aber der Datensatz besteht nicht aus 100 Zeilen), ob es möglich ist, weitere Prädiktoren hinzuzufügen und wie viele weitere bei einer solchen Größe des Datensatzes hinzugefügt werden können (ich würde 2-5 weitere Teile hinzufügen).

Der Code ist einfach, ich füge ihn auch zusammen mit dem Datensatz bei:

Hallo.

Mehr Anzahl von Splits - mehr Speicher = Risiko des Lernens der Probe.

Ich bin nicht gut in Python, aber:

1. Versuchen Sie, die Probe ohne Mischen aufzuteilen.

2. Es scheint mir immer noch, dass Sie auf der gesamten Probe lernen, nicht auf einer reduzierten Probe.

 
Aleksey Vyazmikin #:

Hallo.

Mehr Splits - mehr Speicher = Risiko, eine Probe zu lernen.

Ich bin nicht in Python bewandert, aber:

1. Versuchen Sie, die Probe ohne Mischen aufzuteilen.

2. Ich habe den Eindruck, dass Sie mit der gesamten Probe trainieren, nicht mit einer reduzierten Probe.

Ich danke Ihnen! Es scheint, dass Sie recht haben.

Ich habe im obigen Code "clf_20.fit(X, y)" durch "clf_20.fit(X_train, y_train)" ersetzt, und das Bild hat sich fast 50/50 geändert.

 
Elvin Nasirov #:

Ich danke Ihnen! Ich denke, Sie haben Recht.

Ich habe "clf_20.fit(X, y)" durch "clf_20.fit(X_train, y_train)" im obigen Code ersetzt und das Bild hat sich fast 50/50 verändert.

Es ist normal, ein solches Ergebnis zu haben - ein zu gutes Ergebnis ist immer ein Grund, nach einem Fehler im Code zu suchen.

 
Aleksey Vyazmikin #:

Es ist normal, dieses Ergebnis zu haben - ein zu gutes Ergebnis ist immer ein Grund, nach einem Fehler im Code zu suchen.

Ich habe noch eine weitere Frage, wenn ich darf.

Es stellt sich heraus, dass das beste Ergebnis bei max_depth=1 erreicht wird und wie folgt aussieht:

Genauigkeit auf Trainingsmenge: 0.515021 Genauigkeit auf Testmenge: 0.503333

Das scheint extrem schlecht zu sein und entspricht der Wahrscheinlichkeit, eine Münze zu werfen. Oder können wir dies als ein gutes Ergebnis betrachten und daraus schließen, dass wir eine Formalisierung gefunden haben, die es uns ermöglicht, die Wahrscheinlichkeit der Devisenbewegung und die Wahrscheinlichkeit des Ergebnisses mit dem Werfen einer Münze gleichzusetzen?

Das heißt, die Situation ist so, dass es für jede Kombination von Prädiktoren zwei gleichwertige Varianten der Marktbewegung gibt: nach oben oder nach unten, und daher ist es notwendig, den Datensatz mit etwas zu ergänzen, das bei der aktuellen Kombination noch nach oben oder nach unten angeben könnte.

 
Elvin Nasirov #:

Wenn Sie gestatten, habe ich noch eine andere Frage.

Es stellte sich heraus, dass das beste Ergebnis bei max_depth=1 erzielt wird und wie folgt aussieht:

Genauigkeit auf Trainingsmenge: 0.515021 Genauigkeit auf Testmenge: 0.503333

Das scheint extrem schlecht zu sein und entspricht der Wahrscheinlichkeit, eine Münze zu werfen. Oder können wir dies als ein gutes Ergebnis betrachten und daraus schließen, dass wir eine Formalisierung gefunden haben, die es uns ermöglicht, die Wahrscheinlichkeit einer Devisenbewegung und die Wahrscheinlichkeit eines Münzwurfs anzugleichen?

Das heißt, die Situation ist so, dass es für jede Kombination von Prädiktoren zwei gleichwertige Varianten der Marktbewegung gibt: nach oben oder nach unten, und daher ist es notwendig, den Datensatz mit etwas zu ergänzen, das bei der aktuellen Kombination noch nach oben oder nach unten angeben könnte.

Informieren Sie sich zunächst über andere Metriken zur Bewertung der Trainingsergebnisse - Recall (Vollständigkeit) und Precision (Genauigkeit), sie sind besonders für unausgewogene Stichproben relevant. Die Strategie kann darin bestehen, ein positives finanzielles Ergebnis für die Klassifizierung mit der gleichen Chance auf richtige und falsche Ergebnisse zu erzielen.

Betrachten Sie einen komplexeren, aber logischen Zielaufschlag. Zu bestimmen, wie ein Tag nach seiner Eröffnung schließen wird, ist schwieriger als die Wahrscheinlichkeit eines Anstiegs und eines Rückgangs um einen bestimmten Prozentsatz der Tageseröffnung zu bestimmen - es besteht eine Wahrscheinlichkeit, ein Intraday-Muster zu erkennen.

Für mich ist die Stichprobe zu klein.

Denken Sie darüber nach, Prädiktoren zu erstellen, die den Markt beschreiben können. Anhand der Indikatoren der Prädiktoren sollte es meiner Meinung nach möglich sein, die Situation auf dem Chart wiederherzustellen, ohne ihn anzuschauen.

Ich empfehle, CatBoost für das Training auszuprobieren - es baut Modelle schnell auf und das Problem der Übertragung von Modellen in Code, um in MT5 ohne Krücken zu arbeiten, ist gelöst.

 
Elvin Nasirov #:

Es stellt sich heraus, dass das beste Ergebnis erzielt wird, wenn max_depth=1 ist und es wie folgt aussieht:

Genauigkeit auf Trainingsmenge: 0.515021 Genauigkeit auf Testmenge: 0.503333

Ich sehe auch oft, dass das beste Ergebnis bei Tiefe=1 erzielt wird, was bedeutet, dass nur eine Aufteilung auf eines der Merkmale vorgenommen wurde. Eine weitere Aufteilung des Baums führt zu Übertraining im Training und schlechteren Ergebnissen im Test.

 
elibrarius #:

Ich stelle auch oft fest, dass das beste Ergebnis bei Tiefe = 1 liegt, was bedeutet, dass nur eine Aufteilung auf eines der Merkmale vorgenommen wurde. Eine weitere Aufteilung des Baums führt zu einem erneuten Training in der Ausbildung und einer Verschlechterung der Ergebnisse im Test.

Als ich gestern die Ergebnisse überprüfte, stellte sich heraus, dass das Modell in allen Fällen im Durchschnitt eine Vorhersage von "1" lieferte, also 50/50. Sie können ohne das Modell zu tun - die ganze Zeit sagen, "up" gehen wird.

 
Handeln wie ein professioneller Profi-Händler
h ttps://youtu.be/RS9jRVmW1j4

Das sind die Unterstützungs- und Widerstandsniveaus in meinem Verständnis.....

Nicht jeder wird es verstehen, aber wenn sie es tun, dann Hut ab....

EARNING SEASON KICKS OFF - Trading Futures Live
EARNING SEASON KICKS OFF - Trading Futures Live
  • 2023.01.13
  • www.youtube.com
Join our FREE Discord community https://discord.gg/zhvUwUUhFirst 5 days of January bullish were followed by Full-year gains 83% of the time since 1950.Earnin...
Grund der Beschwerde: