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

 
mytarmailS #:
Zeigen Sie mir Ihr Handwerk.
Was soll das große Gerede?

Und lass uns sehen, wie dein TS nach einer hundert Jahre alten Theorie funktioniert, die wie ein Uhrwerk läuft...
Ach, kommen Sie.

Bei solchen Fragen wird jedem schwindelig.

Das ist wie in der Schule.

Man muss von ganz weit weg anfangen und einfache Fragen stellen.

Mit welchem Paar handeln Sie?

Und zeigen Sie den letzten Handel, Einstieg-Ausstieg mit allen Parametern.

Und dann, wie viele Trades Sie pro Tag machen, und an dieser Stelle gibt es eine Pause.

P.Z..

Sie sollten nicht mehr als zwei Fragen stellen.

Sie können Meister beleidigen. Und was, wenn Sie damit anfangen?

P.Z..

Ich unterstütze Spartak.

 
Forester #:

Sie missverstehen den Herd. Es sieht so aus, als hätten Sie sich nie den Code für die Baumstruktur angesehen: .... Dort gibt es überhaupt keine Operationen innerhalb einer einzelnen Zeile!!!, nur mit Mengen (vollständig oder in Stapeln).

Kurz gesagt:
Ein zufälliger/vollständiger Satz von Zeilen, der zum Training übergeben wird, wird für jeden Prädiktor/jede Spalte einzeln sortiert. Es werden verschiedene Aufteilungen geprüft (Mitte/Perzentil/Zufall), die Statistiken für jede Aufteilung werden gezählt, und die beste Aufteilung wird für den gesamten Satz von Zeilen ausgewählt, nicht für eine/jede Zeile, wie Sie vorgeschlagen haben.
Entsprechend der besten Aufteilung wird die Menge der Strings in zwei Gruppen aufgeteilt, dann wird jede Gruppe erneut sortiert und die beste Aufteilung wird für jeden der Teile ausgewählt usw., bis die Stoppregel erreicht ist (nach Tiefe, Anzahl der Beispiele pro Zeile usw.)

Sie können weitere Details im Editor sehen, Sie haben die Datei:
\MQL5\Include\Math\Alglib\dataanalysis.mqh
ClassifierSplit()-Funktion und diejenige, von der sie aufgerufen wird.
Sie werden es in ein paar Stunden verstehen und müssen nicht mehr über die Suche nach Prädiktoren in einer Zeile sprechen.
Hier wird es klarer sein, der Code ist prägnanter und hat Kommentare https://habr.com/ru/companies/vk/articles/438560/.

1. RegressionTree()-Klasse

Пишем XGBoost с нуля — часть 1: деревья решений
Пишем XGBoost с нуля — часть 1: деревья решений
  • 2019.02.06
  • habr.com
Привет, Хабр! После многочисленных поисков качественных руководств о решающих деревьях и ансамблевых алгоритмах (бустинг, решающий лес и пр.) с их непосредственной реализацией на языках программирования, и так ничего не найдя (кто найдёт — напишите в комментах, может, что-то новое почерпну), я решил сделать своё собственное руководство, каким...
 
Forester #:

Sie missverstehen den Herd. Es sieht so aus, als hätten Sie sich nie den Code für die Baumstruktur angesehen: .... Dort gibt es überhaupt keine Operationen innerhalb einer einzelnen Zeile!!!, nur mit Mengen (vollständig oder in Stapeln).

Kurz gesagt:
Ein zufälliger/vollständiger Satz von Zeilen, der zum Training übergeben wird, wird für jeden Prädiktor/jede Spalte einzeln sortiert. Es werden verschiedene Aufteilungen geprüft (Mitte/Perzentil/Zufall), die Statistiken für jede Aufteilung werden gezählt, und die beste Aufteilung wird für den gesamten Satz von Zeilen ausgewählt, nicht für eine/jede Zeile, wie Sie vorgeschlagen haben.
Entsprechend der besten Aufteilung wird die Menge der Strings in zwei Gruppen aufgeteilt, dann wird jede Gruppe erneut sortiert und die beste Aufteilung wird für jeden der Teile ausgewählt usw., bis die Stoppregel erreicht ist (nach Tiefe, Anzahl der Beispiele pro Zeile usw.)

Sie können weitere Details im Editor sehen, Sie haben die Datei:
\MQL5\Include\Math\Alglib\dataanalysis.mqh
ClassifierSplit()-Funktion und diejenige, von der sie aufgerufen wird.
Sie werden es in ein paar Stunden verstehen, und Sie müssen nicht über die Suche nach Prädiktoren in einer Zeile sprechen.

Sie haben Recht mit den vielen Zeilen.

Gehen wir zurück zum Anfang: Was ist ein Muster in einem Random Forest?

Es ist ein einzelner Baum. Hier ist ein Beispiel für einen solchen Baum aus RF:

    left daughter right daughter split var split point status prediction
1               2              3         2  0.34154125      1          0
2               4              5         2  0.28238475      1          0
3               6              7         4  0.37505155      1          0
4               0              0         0  0.00000000     -1          2
5               8              9         5  0.64235664      1          0
6               0              0         0  0.00000000     -1          2
7              10             11         1  0.45438075      1          0
8              12             13         1  0.46271469      1          0
9              14             15         3  0.25803691      1          0
10             16             17         2  0.51942328      1          0
11             18             19         1  0.48839881      1          0
12             20             21         3  0.45243581      1          0
13              0              0         0  0.00000000     -1          2
14              0              0         0  0.00000000     -1          2
15             22             23         6  0.62789488      1          0
16             24             25         2  0.34224983      1          0
17             26             27         4  0.53845361      1          0
18             28             29         3  0.39207978      1          0
19             30             31         3  0.03596312      1          0
20             32             33         7  0.49380156      1          0
21              0              0         0  0.00000000     -1          2
22              0              0         0  0.00000000     -1          2
23             34             35         6  0.76472904      1          0
24              0              0         0  0.00000000     -1          1
25              0              0         0  0.00000000     -1          2
26             36             37         5  0.87588550      1          0
27             38             39         1  0.31089209      1          0
28             40             41         2  0.39193398      1          0
29             42             43         1  0.47068628      1          0
30             44             45         7  0.76420940      1          0
31             46             47         2  0.38380954      1          0

 [ reached getOption("max.print") -- omitted 185 rows ]

Gesamtanzahl der Zeilen = 166+185! Alle haben nicht gepasst

Es gibt 150 solcher Bäume in meinem Modell

split var - это номер переменной, всего их в модели 8
split point - лучшее значение конкретной переменной, которое использовалось для разделения.
 
СанСаныч Фоменко #:

Sie haben Recht mit den vielen Zeilen.

Zurück zum Anfang: Was ist ein Muster in einem Random Forest?

Es ist ein einzelner Baum. Hier ist ein Beispiel für einen solchen Baum aus RF:

Zeilen insgesamt = 166+185! Keine von ihnen passt

Es gibt 150 solcher Bäume in meinem Modell

Betrachten Sie noch einmal den Pfad, der das Blatt bildet. In meinem obigen Beispiel gibt es 5 Teilungen. Ist dies nicht eine Beschreibung des Musters von 2 Scheitelpunkten mit einer Mulde? Beschreibung.
7 Splits können Kopf-Schulter usw. beschreiben.
Jedes Blatt eines Baumes beschreibt ein anderes Muster.

Der Wald ist die Meinung der Menge (derviews).
Der 1. Baum sagt: dieser String fällt in mein 18. Muster/Blatt und Antwort = 1
2.: derselbe String fällt in mein 215 Muster/Blatt und ergibt Antwort=0
3.: = 1

...

Wir bilden den Durchschnitt und erhalten die durchschnittliche Meinung von 150 Bäumen. Zum Beispiel = 0,78. Jeder hatte ein anderes aktiviertes Blatt/Muster.

 
Forester #:

Betrachten wir noch einmal das pfadbildende Blatt. In meinem obigen Beispiel gibt es 5 Spaltungen. Ist das nicht eine Beschreibung des Musters von 2 Tops mit einem Trog? Beschreibung.
7 Spaltungen können Kopf-Schulter usw. beschreiben.
Jedes Blatt eines Baumes beschreibt ein anderes Muster.

Ein Wald ist die Meinung einer Schar von Derviden.
Der 1. Baum sagt: diese Linie fällt in mein 18. Muster/Blatt und Antwort = 1
2.: dieselbe Linie fällt in mein 215 Muster/Blatt und gibt Antwort=0
3.: = 1

...

Wir bilden den Durchschnitt und erhalten die durchschnittliche Meinung von 150 Bäumen. Jeder hatte ein anderes aktiviertes Blatt/Muster.

Wir wissen nicht, wie viele Blätter.

Die Anzahl der Bäume ist ein Parameter, der geändert werden kann, um die minimale Stichprobengröße für das Training zu erhalten.

Wir sehen, dass 50 Bäume ausreichen, so dass es praktisch ist, einen Baum als ein Muster zu betrachten.

 
СанСаныч Фоменко #:

Wie viele Blätter es sind, ist nicht bekannt.

Die Anzahl der Bäume ist ein Parameter, der geändert werden kann, um die Mindeststichprobengröße für das Training zu erhalten.

Wir sehen, dass 50 Bäume ausreichen, also ist es praktisch, einen Baum als Muster zu betrachten.

Der Baum antwortet auf jede Situation/Zeile mit einem Blatt/Muster. In anderen Situationen wird die Antwort von anderen Blättern/Mustern stammen.
 
Forester #:
Der Baum antwortet auf jede Situation/Zeile mit einem Blatt/Muster. In anderen Situationen wird die Antwort von anderen Blättern/Mustern kommen.

Es scheint, dass nicht nur das Blatt, sondern auch der Baum keine Lösung bietet.

Hier habe ich die Formel für den endgültigen Klassifikator gefunden




Wobei

  • N - Anzahl der Bäume;
  • i - Zähler für Bäume;
  • b - der entscheidende Baum;
  • x - die Stichprobe, die wir aus den Daten erzeugt haben.

Es ist auch erwähnenswert, dass wir bei der Klassifizierungsaufgabe die Lösung durch Mehrheitsabstimmung wählen, während wir bei der Regressionsaufgabe die Lösung durch den Mittelwert wählen.

 
СанСаныч Фоменко #:

Es scheint, dass nicht nur das Blatt, sondern auch der Baum keine Lösung bietet.

Hier ist die Formel für den endgültigen Klassifikator

Es ist auch erwähnenswert, dass wir bei der Klassifizierungsaufgabe die Lösung durch Mehrheitsentscheidung wählen, während wir bei der Regressionsaufgabe die Lösung durch den Durchschnitt wählen.

Warum wird sie nicht gelöst? Er trägt (1/150) zur endgültigen Antwort bei.

Von jedem Baum nimmt eines der aktivierten Blätter/Muster an der Abstimmung teil (Durchschnitt).

Die Antwort des Waldes ist der Durchschnitt der Antworten aller Bäume (oder aktivierten Blätter/Muster) - diese Formel zählt sie. Die Mehrheit für die binäre Klassifizierung ist, wenn der Durchschnitt >0,5 ist, dann 1, sonst 0.
Aber die 0,5-Grenze ist wahrscheinlich nicht die beste Option, wenn das Paket Zugriff auf den Wert des Durchschnitts gibt, können Sie mit verschiedenen Grenzen experimentieren.

 
Forester #:
Der Baum antwortet auf jede Situation/Zeile mit einem Blatt/Muster. In anderen Situationen wird die Antwort von anderen Blättern/Mustern kommen.
SanSanych Fomenko #:

Es scheint, dass nicht nur das Blatt, sondern auch der Baum keine Lösung bietet.

Nicht nur ein Blatt, sondern alle Bäume sind für jede Situation verantwortlich, nur werden nicht alle von ihnen aktiviert, die Summe der Vorhersagen derjenigen, die aktiviert sind, ist die Vorhersage des Modells....


Wovon zum Teufel redet ihr, Baummodellexperten?

 
mytarmailS #:

Nicht ein Blatt, sondern alle Bäume sind für die jeweilige Situation verantwortlich, nur werden nicht alle aktiviert, sondern die Summe der Prognosen der aktivierten Bäume ist die Prognose des Modells.


Wovon zum Teufel reden Sie, Baummodellexperten?

Haben Sie etwas Neues gesagt? Wenn nicht, dann ist es Ihrer Meinung nach auch Blödsinn.