Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 2974
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Und es wird sowieso leer sein.
Nun, ja, wenn Sie nicht wollen.
Es ist traurig, dass maschinelles Lernen mit Targeting nicht funktioniert und One-Shot-Learning nicht funktioniert....
Entfernen Sie symmetrische Merkmale, um Verzerrungen zu reduzieren.
Ersetzen Sie zum Beispiel Inkremente durch absolute Inkremente (Volatilität).
Hilft manchmal
symmetrische Merkmale entfernen, um die Verzerrung zu verringern
z. B. Inkremente durch absolute Inkremente ersetzen (Volatilität)
Manchmal hilft das.
Meine Idee ist es, ein Modell zu entwickeln, das stabile Quantensegmente anhand einer Reihe von statistischen Merkmalen auswählt. Jeder ist willkommen, sich an diesem Projekt zu beteiligen.
Warum sind Sie so besessen von diesen Quanten?...?
Sie haben nichts Intellektuelles an sich. Einfach z.B. 10000 Zeilen in 100 Stücke aufteilen, d.h. sortieren und von unten nach oben 100 Zeilen zählen, wenn die folgenden mit der hundertsten Zeile übereinstimmen (d.h. Wiederholungen), dann verweisen wir sie alle auf das erste Stück. Duplikate sind über Beginn der Eingabe von Zeilen in der zweiten Quantum - die nächsten 100 + Duplikate, wenn es welche gibt. Und so weiter, bis wir keine Zeilen mehr haben.
Selbst ein Baum enthält um Größenordnungen mehr nützliche Informationen (weil er auf Daten trainiert ist) als diese Quantumsegmente (nur 100 sortierte Strings mit Duplikaten).
Warum sind Sie so versessen auf diese Quanten? ....
Sie haben überhaupt nichts Intellektuelles an sich. Einfach z.B. 10000 Zeilen in 100 Stücke aufteilen, d.h. sortieren und von unten nach oben 100 Zeilen zählen, wenn die nächsten mit der hundertsten Zeile übereinstimmen (d.h. Wiederholungen), dann verweisen wir sie alle auf das erste Stück. Duplikate sind über Beginn der Eingabe von Zeilen in der zweiten Quantum - die nächsten 100 + Duplikate, wenn es welche gibt. Und so weiter, bis wir keine Zeilen mehr haben.
Selbst ein Baum enthält um Größenordnungen mehr nützliche Informationen (weil er auf Daten trainiert ist) als diese Quantensegmente (nur 100 sortierte Zeilen mit Duplikaten).
Quantensegmente sind die Bausteine, aus denen das CatBoost-Modell aufgebaut ist. Ursprünglich, so habe ich es verstanden, wurde auf diese Weise die Frage der Speichereinsparung und allgemein der Beschleunigung von Berechnungen gelöst. Ein Nebeneffekt ist die Verringerung der Varianten von Kombinationen von Prädiktorindikatoren, ein Schritt zur Verringerung der Multikollinearität, was im Allgemeinen zur Geschwindigkeit und Qualität des Trainings beiträgt. Außerdem wird das Problem der Datendrift zum Teil gelöst.
Ich sehe noch einen weiteren Ansatzpunkt - die Erforschung des Potenzials probabilistischer Schätzungen in Quantensegmentdaten. Nimmt man die von Ihnen vorgeschlagene Methode der Quantisierung (eigentlich ist es besser, sich vorzustellen, dass der Zweck des Prozesses darin besteht, homogene Gruppen auszusieben - analog zum Clustering) und teilt die Daten entsprechend der Anzahl der Beispiele in 20 gleiche Quantensegmente auf, so stellt sich heraus, dass in jedem Quantensegment nur 5 % der Daten übrig sind. CatBoost erstellt standardmäßig 254 Trennzeichen - 255 Segmente. Aus diesen Segmenten werden dann Bäume gebildet. Es wird davon ausgegangen, dass alle Quantensegmente gleich nützlich sind, und ihre Einfügung sollte durch die Partitionierung der Gruppe in Untergruppen bestimmt werden, durch die Methode des Aufbaus eines Entscheidungsbaums. Die Partitionierung erfolgt sowohl nach der Wurzel als auch nach anderen Prädiktoren. Selbst wenn wir einen Baum nehmen, wie viele der ursprünglichen Beispiele der Positivklasse "1" werden nach 6 Teilungen in der endgültigen Liste verbleiben? Wir müssen berücksichtigen, dass die Auswahl der Aufteilung auf der Metrik der kumulativen Anzahl von Quantensplits basiert. Berücksichtigt man die Baumkonstruktionsmethode selbst, so wird deutlich, dass je qualitativer die Aufteilung des Prädiktors in Quantensegmente erfolgt, desto weniger Splits erforderlich sind, um die gleiche Genauigkeit im Blatt zu erreichen. Ich weise darauf hin, dass jeder Split eine Hypothese ist, und nicht alle Hypothesen wahr sein können. Wenn wir also die Aufteilung unter Berücksichtigung des Potenzials eines Quantensegments, eher zu einer der Klassen zu gehören, vornehmen, reduzieren wir die Anzahl der Aufteilungen, um eine ähnliche Genauigkeit zu erreichen, und somit auch die Anzahl der potenziell falschen Hypothesen (Aufteilungen). Wenn wir außerdem den Prädiktor sofort in drei globale Regionen aufteilen können - zwei für die Klassenzugehörigkeit und eine für die Ungewissheit -, dann werden die Modelle im Durchschnitt kleiner sein und eine bessere statistische Leistung aufweisen - ich erwarte auch eine höhere Robustheit.
Nehmen wir zum Beispiel an, dass der Prädiktor der RSI-Oszillator ist - signifikante Aktionen der Marktteilnehmer treten um die Werte 70, 50, 30 auf - alles darüber hinaus, sagen wir, hat keinen Einfluss auf die Entscheidungsfindung der Marktteilnehmer. Dann ist es sinnvoll, eine Quantentabelle so zu erstellen, dass diese 3 Werte vom Rest der Bevölkerung getrennt werden. Andernfalls wird einer der Splits zufällig mehr Beispiele im Quantum-Segment der Klassenzugehörigkeit haben, und Sie erhalten eine falsche Regel für eine falsche Hypothese.
Sie können ein Balkendiagramm mit quantisierten Prädiktorenwerten erstellen und für jede Spalte eine Kurve der Wahrscheinlichkeit der Klassenzugehörigkeit "1" zeichnen. Wenn die Kurve eher eine gerade Linie ist, würde ich einen solchen Prädiktor auf die Bank setzen. Ein guter Prädiktor weist meiner Meinung nach entweder eine schräge Linie oder Spitzen in einigen Spalten auf.
Man kann sagen, dass ich durch die Quantifizierung nach diskreten Ereignissen suche, die die Wahrscheinlichkeit einer Kursbewegung beeinflussen.
Die Regel teilt einfach
Es gibt verschiedene Möglichkeiten, eine Quantentabelle zu erstellen. Ich glaube, man kann es tatsächlich mit einem Standardpaket machen, das Bäume auf einem einzigen Prädiktor mit gegebenen Einschränkungen im Blatt auf den Prozentsatz der Beispiele aufbaut. Was das für ein Paket ist und wie ich die Daten in dem von mir benötigten Format erhalte, weiß ich nicht.
Wichtig ist nicht nur die Partitionierung, sondern die Suche nach Kriterien für die Bewertung dieser Quantenaufteilung, die die Wahrscheinlichkeit erhöhen, dass die Klassenzugehörigkeit in den neuen Daten erhalten bleibt.
Warum ich das tue - weil dies der Schlüssel zum Aufbau eines qualitativen Modells ist.
Warum es so lange dauert - eine Menge Experimente und Testskripte. Ich habe ein wenig Verständnis für OpenCL und der Code ist jetzt teilweise auf einer Videokarte gerechnet - es braucht Zeit - ich muss eine Menge Dinge studieren.
Dabei geht es nicht nur um die Partitionierung, sondern auch darum, Kriterien für die Bewertung dieses Quanten-Cutoffs zu finden, die die Wahrscheinlichkeit erhöhen, dass die Klassenzugehörigkeit in den neuen Daten erhalten bleibt.
Haben Sie sich jemals den Code in demselben Catbuster angesehen? Sie verwenden ihn. Es werden keine Pakete von Drittanbietern verwendet. Aber das ist so eine kleine Funktion (sie ist sogar noch einfacher als das, was ich beschrieben habe, sie verschiebt den Trennpunkt nicht um die Anzahl der Duplikate).
Ich habe Kommentare dazu geschrieben, was dabei herauskommt. Die Eingabe ist eine sortierte Spalte.
Wie Sie sehen können, ist alles sehr einfach und es gibt hier nichts Intellektuelles - zählen Sie einfach z.B. 100 Zeilen und das ist alles.
Etwas komplexere Varianten können sich nach der Anzahl der Duplikate richten, Sie können auch die Größe der Quanten optimieren (z.B. wenn von 10000 Zeilen 9000 Duplikate sind, wird die einfache Funktion 11 Quanten sein: 10 aus den ersten 1000 Zeilen und in der 11. die restlichen 9000 Duplikate, oder man kann die ersten 1000 Zeilen in 99 Quanten + 1 Quant mit 9000 Duplikaten unterteilen).
Aber sie haben auch nichts Intellektuelles - die gleiche einfache Zählung der erforderlichen Anzahl von Zeichenfolgen ist die Grundlage.
Das Original (es gibt kompliziertere Varianten) https://github.com/catboost/catboost/blob/3cde523d326e08b32caf1b8b138c2c5303dc52e5/library/cpp/grid_creator/binarization.cpp
P.s. Der Hauptgrund, warum das nächste Quantum nicht genau 100 Strings hat, sondern 315 oder 88 oder 4121, liegt nicht in irgendeiner super-kniffligen Formel (bei der Strings nach der Vorhersagekraft kombiniert werden, mit der man nach Bewertungskriterien für dieses Quantumsegment suchen will), sondern einfach in der Anzahl der Duplikate.Studieren Sie die Funktionen dieser Seite eine Woche lang und sparen Sie mehrere Jahre.
Haben Sie sich den Code in denselben Catbusters überhaupt angesehen? Du verwendest ihn. Es werden keine Pakete von Drittanbietern verwendet. Aber das ist so eine kleine Funktion (sie ist sogar einfacher als das, was ich beschrieben habe, sie verschiebt den Trennungspunkt nicht um die Anzahl der Duplikate).
Ich habe Kommentare dazu geschrieben, was dabei herauskommt. Die Eingabe ist eine sortierte Spalte.
Natürlich habe ich mir das angeschaut. Außerdem bin ich bereit, die Arbeit zu bezahlen, um alle Quantisierungsmethoden in MQL5 zu reproduzieren. Bisherige Versuche waren erfolglos, möchten Sie es versuchen?
Wie Sie sehen, ist alles sehr einfach und es gibt hier nichts Intellektuelles - zählen Sie einfach z.B. 100 Zeilen und das war's.
Du hast die einfachste Methode angegeben - ja, es ist nicht schwer.
Außerdem, habe ich geschrieben, dass es ausgeklügelte Quantifizierungsmethoden gibt oder so etwas in der Art? Inwiefern steht das im Widerspruch zu dem, was ich geschrieben habe?