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

 
Maxim Dmitrievsky:

wählen Sie alle Dateien aus und laden Sie sie herunter, sie werden gezippt

unterschiedliche Probenlängen, wenn ein Teil

Danke, das ist richtig - man kann sie als Archiv herunterladen, das ist schön!

Aber unterschiedliche Stichprobenlängen sind schlecht, ich dachte daran, die zufälligsten Spalten auszuwählen, bei denen kleine Abweichungen akzeptabel sind.

Ich denke, es ist nicht notwendig, diese Methode auf die Probe anzuwenden - wie könnte ich sie sonst im wirklichen Leben nutzen?

Ich lasse es zum Training laufen, mal sehen, was passiert.

 
Aleksey Vyazmikin:

Danke, das ist richtig - man kann ein Archiv herunterladen, das ist schön!

Aber die unterschiedlichen Stichprobenlängen sind schlecht, ich dachte, ich hebe die zufälligsten Spalten hervor, bei denen kleine Abweichungen akzeptabel sind.

Ich denke, es ist nicht notwendig, diese Methode auf die Probe anzuwenden - wie könnte ich sie sonst im wirklichen Leben nutzen?

Ich lasse es zum Training laufen, mal sehen, was passiert.

Ich brauche es nicht für Prüfungen, aber es könnte sich als nützlich erweisen.

 
elibrarius:

Zu faul zum Konvertieren)
Lassen Sie mich erklären:

1) wir sortieren die Spalte
2) wir zählen die durchschnittliche Anzahl der Elemente in einem Quantum, z.B. 10000 Elemente / 255 Quanten = 39,21
3) in der Schleife bewegen wir uns in jedem Schritt um 39,21 Elemente und fügen den Wert aus dem sortierten Array zum Array der Quantenwerte hinzu. D.h. Array-Wert 0 = Wert 0 Quantum, 39. Wert = 1 Quantum, 78. Wert = 2 Quantum, usw.

Wenn der Wert bereits im Array enthalten ist, d.h. wenn wir in einen Bereich mit vielen Duplikaten kommen, überspringen wir das Duplikat und fügen es nicht hinzu.

Bei jedem Schritt addieren wir genau 39,21 und runden dann die Summe auf, um ein Element im Array auszuwählen, so dass sie gleich ist. D.h. anstelle von 195 (39*5 = 195) nehmen Sie 196 ( 39,21 * 5 = (int) 196,05).

Mit gleichmäßiger Verteilung ist klar - ich würde ein Array mit eindeutigen Werten erstellen und es zum Schneiden verwenden.

Es gibt aber auch andere Methoden zur Aufteilung des Netzes:

    THolder<IBinarizer> MakeBinarizer(const EBorderSelectionType type) {
        switch (type) {
            case EBorderSelectionType::UniformAndQuantiles:
                return MakeHolder<TMedianPlusUniformBinarizer>();
            case EBorderSelectionType::GreedyLogSum:
                return MakeHolder<TGreedyBinarizer<EPenaltyType::MaxSumLog>>();
            case EBorderSelectionType::GreedyMinEntropy:
                return MakeHolder<TGreedyBinarizer<EPenaltyType::MinEntropy>>();
            case EBorderSelectionType::MaxLogSum:
                return MakeHolder<TExactBinarizer<EPenaltyType::MaxSumLog>>();
            case EBorderSelectionType::MinEntropy:
                return MakeHolder<TExactBinarizer<EPenaltyType::MinEntropy>>();
            case EBorderSelectionType::Median:
                return MakeHolder<TMedianBinarizer>();
            case EBorderSelectionType::Uniform:
                return MakeHolder<TUniformBinarizer>();
        }
 
Aleksey Vyazmikin:

Bei einer gleichmäßigen Verteilung würde ich zunächst ein Array mit eindeutigen Werten erstellen und es zum Ausschneiden verwenden.

Es gibt aber auch andere Methoden, das Netz aufzuteilen:

Es muss eine große Anzahl von Stichproben geben, sonst lernt das Modell nichts.

 
Maxim Dmitrievsky:

es muss viele Stichproben geben, sonst lernt das Modell nichts

Dies sind die Sampling-Quantisierungsmethoden für CatBoost - dies sind die Grenzen, auf denen die Aufzählung/Lernen dann geht.

Meine Experimente zeigen, dass Raster sollte für jeden Prädiktor getrennt gewählt werden, dann Erhöhung der Qualität beobachtet wird, aber es ist nicht in der Lage, es CatBoost zu tun und ich bin nicht in der Lage, ein Raster zu bauen und ich habe Raster zu bauen und laden Sie sie auf csv, und dann iterieren sie, um Verhalten von Zielen in ihnen zu schätzen. Ich halte es für ein sehr vielversprechendes Tool, aber ich muss den Code in MQL übersetzen.

 
Aleksey Vyazmikin:

Dies sind die Sampling-Quantisierungsmethoden für CatBoost - dies sind die Grenzen, nach denen die Aufzählung/Lernverfahren dann ablaufen.

Meine Experimente zeigen, dass das Raster für jeden Prädiktor separat ausgewählt werden sollte, dann wird ein Qualitätsgewinn beobachtet, aber CatBoost kann das nicht, und ich kann kein Raster erstellen, und ich muss Raster erstellen und in eine CSV-Datei hochladen und dann durch sie iterieren, um das Zielverhalten in ihnen zu bewerten. Ich denke, das ist eine vielversprechende Funktion, aber ich muss den Code in MQL übersetzen.

ist dies in den Einstellungen des Modells selbst (Parameter)? ich weiß nicht, was es ist

wenn nicht in den Einstellungen, dann ist es Blödsinn.

 
Maxim Dmitrievsky:

Liegt es an den Einstellungen des Modells selbst (Parameter)? Ich weiß nicht, was es ist

Wenn es nicht in den Einstellungen steht, ist es Blödsinn.

Es steht in den Einstellungen, zumindest für die Kommandozeile

--feature-border-type

Der Quantisierungsmodus für numerische Merkmale.

Mögliche Werte:
  • Median
  • UniformAndQuantiles
  • MaxLogSum
  • MinEntropie
  • GreedyLogSum
Quantization - CatBoost. Documentation
  • catboost.ai
Mode How splits are chosen Combine the splits obtained in the following modes, after first halving the quantization size provided by the starting parameters for each of them: Maximize the value of the following expression inside each bucket: Minimize the value of the following expression inside each bucket: Maximize the greedy approximation of...
 
Aleksey Vyazmikin:

Es steht in den Einstellungen, zumindest für die Kommandozeile

--feature-border-type

Der Quantisierungsmodus für numerische Merkmale.

Mögliche Werte:
  • Median
  • Uniform
  • UniformAndQuantiles
  • MaxLogSum
  • MinEntropie
  • GreedyLogSum

Macht es einen großen Unterschied? Es sollte innerhalb eines Prozentes liegen.

 
Aleksey Vyazmikin:

Mit einer gleichmäßigen Verteilung verstehe ich - ich würde zuerst ein Array von eindeutigen Werten erstellen und es zum Ausschneiden verwenden.

Es gibt aber auch andere Methoden, das Netz aufzuteilen:

Wenn Sie eindeutige Werte haben, wird es ein Chaos geben. Ein Beispiel: Sie haben 100 Zeichenfolgen, von denen 10 eindeutig sind, 2 davon haben 45 Zeichenfolgen und 8 haben 1. Geteilt durch 5 Quanten, ist es möglich, dass nur 5 durch 1 ausgewählt werden und die 2 repräsentativsten (durch 45) übersprungen werden.
 
Maxim Dmitrievsky:

und macht es einen großen Unterschied? Es sollte innerhalb eines Prozentsatzes liegen.

Die Wahl der richtigen Aufschlüsselung hat einen erheblichen Einfluss auf das Ergebnis.

Hier ein Beispiel für den Rückruf - bis zu 50 % Abweichung - für mich ist das signifikant.

Die Erhöhung der Grenzen von 16 auf 512 in 16er-Schritten - wenn auch nicht in der Reihenfolge des Histogramms - ist für meine Titel etwas hinderlich.


Ich experimentiere noch mit der Maschenauswahl, aber es ist bereits offensichtlich, dass es verschiedene Prädiktoren gibt, für die verschiedene Maschen benötigt werden, um die Logik zu beobachten und nicht nur um sie anzupassen.