Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 2032
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
Für einen Wald gibt es die Option, die Wichtigkeit und die Cluster zu betrachten. In catbust ist es wahrscheinlich plot_tree.
Ich werde die Daten vorbereiten und sie veröffentlichen.
Ich habe eine Testversion für 6 Spalten erstellt, die 11 GB benötigt. Notepad++ konnte sie nicht öffnen, weil die Datei zu groß ist. Der BD Browser für SQLite hängt seit etwa 20 Minuten.Zeigen Sie ein Bild davon, wie Baumgruppen aussehen, ich weiß noch nicht, was Sie meinen.
Warum öffnen Sie es? :) Ich mache einfach eine Minikopie mit einer ähnlichen Struktur für die Fehlersuche.
Ich frage mich, wie sie Bäume trainieren, ohne alle Daten im Speicher zu haben. Wenn die Tabelle 6 Gigabyte groß ist, sollten etwa 6 Gigabyte Speicher verwendet werden. Der Baum muss jede Spalte als Ganzes sortieren. Wenn wir nicht alles im Speicher ablegen, sondern jedes Mal Daten von der Festplatte lesen, wird es zu langsam.
Die einzige Variante besteht darin, die Daten im Speicher als Float statt als Double zu speichern, was jedoch zu einer geringeren Genauigkeit führt. Für uns mit einer Genauigkeit von 5 Stellen ist das vielleicht nicht so schlimm, aber Catbust ist eine universelle Software, ich denke, die physikalischen und mathematischen Probleme sollten in doppelter Genauigkeit gelöst werden.
Ich habe den Code nicht studiert, aber wenn man logisch darüber nachdenkt, konvertiert CatBoost wahrscheinlich die Beispieldatentabelle und speichert genau die konvertierte Variante, was sich für eine schnelle Komprimierung anbietet.
Die Umwandlung geschieht nach dem Gitter der Quantisierung jedes PrÀdiktors (es gibt 6 Algorithmen), und zum Beispiel bleiben von 1000 verschiedenen Werten der Variablen 32 Varianten (die in den Bereich des Gitters der Quantisierung fallen), und solcher Vektor der Daten wird leicht komprimiert, außer den Zahlen schon nur der ganzen Zahlen (nach den BeschrÀnkungen der Größe des Gitters - des Typs der Daten ushort - 2 Bytes nach der Zahl urteilend), und die Tabelle der Quantisierung liegt einfach im GedÀchtnis und wird schon dann bei der Bildung des Modells im Code verwendet. Jetzt haben wir bereits die Größe reduziert, und es ist weiterhin möglich, den Umfang zu reduzieren, indem man nicht alle Prädiktoren für die Auswertung auswählt, sondern nur einen Teil davon, was bei großen Stichproben empfohlen wird, wobei der Algorithmus des Zufallsgenerators es erlaubt, in anderen Bäumen jene Prädiktoren zu verwenden, die nicht sofort in den "Beutel" gelangt sind, dadurch wird das Training auch schneller, aber es wird mehr Bäume im Modell geben. Sicherlich gibt es noch andere Tricks, aber der wichtigste ist die Quantisierung.
Die Quantisierung sollte gesondert betrachtet werden, idealerweise sollte jeder Prädiktor mit seinem eigenen Raster abgeglichen werden und die Daten sollten zusammen mit dem Raster zum Training eingereicht werden, damit der Algorithmus dies tun kann.
So kann die Probe selbstquantisiert werden und wird gut komprimiert.
Ich habe den Code nicht studiert, aber wenn man logisch darüber nachdenkt, wandelt CatBoost wahrscheinlich die Musterdatentabelle um und speichert genau die umgewandelten Varianten, die sich für eine schnelle Komprimierung eignen.
Die Umwandlung geschieht nach dem Gitter der Quantisierung jedes PrÀdiktors (es gibt 6 Algorithmen), und zum Beispiel bleiben von 1000 verschiedenen Werten der Variablen 32 Varianten (die in den Bereich des Gitters der Quantisierung fallen), und solcher Vektor der Daten wird leicht komprimiert, außer den Zahlen schon nur der ganzen Zahlen (nach den BeschrÀnkungen der Größe des Gitters - des Typs der Daten ushort - 2 Bytes nach der Zahl urteilend), und die Tabelle der Quantisierung liegt einfach im GedÀchtnis und wird schon dann bei der Bildung des Modells im Code verwendet. Jetzt haben wir bereits die Größe reduziert, und es ist weiterhin möglich, den Umfang zu reduzieren, indem man nicht alle Prädiktoren für die Auswertung auswählt, sondern nur einen Teil davon, was bei großen Stichproben empfohlen wird, wobei der Algorithmus des Zufallsgenerators es erlaubt, in anderen Bäumen jene Prädiktoren zu verwenden, die nicht sofort in den "Beutel" gelangt sind, dadurch wird das Training auch schneller, aber es wird mehr Bäume im Modell geben. Sicherlich gibt es noch andere Tricks, aber der wichtigste ist die Quantisierung.
Die Quantisierung sollte gesondert betrachtet werden, idealerweise sollte jeder Prädiktor mit seinem eigenen Raster abgeglichen werden und die Daten sollten zusammen mit dem Raster zum Training eingereicht werden, damit der Algorithmus dies tun kann.
Aus diesem Grund kann das Sample selbst quantisiert werden und wird gut komprimiert.
Jetzt weiß ich, wozu dieses Gitter dient: Es dient der Komprimierung. Und es ist schneller zu sortieren.
Richtig, ich erinnere mich, es scheint ein Standardraster von 1024 geteilten Varianten zu haben. Wenn Sie alle Daten durch geteilte Zahlen ersetzen, können Sie im ushort-Format speichern, was 2 Bytes statt 8 bedeutet, was eine vierfache Kompression bedeutet. Das ist wahrscheinlich der Grund, warum Sie 2gb statt 6gb hatten und diese genutzt haben.
Der Standardwert ist 254, aber ich weiß nicht mehr, wie viel ich damals eingestellt habe. Wahrscheinlich wurden weniger als 2 GB Speicherplatz verbraucht - ich erinnere mich, dass ich sehr überrascht war, dass es so wenig war.
Auf jeden Fall ermöglicht dieser Ansatz eine erhebliche Komprimierung der Daten, auch bei der Probenahme selbst. Mit neuronalen Netzen ist das nicht möglich.
Jetzt verstehe ich, wofür dieses Raster verwendet wird, es stellt sich heraus, dass es der Komprimierung dient. Und es ist schneller, sie zu sortieren.
Der Standardwert ist 254, aber ich weiß nicht mehr, wie viel ich damals eingestellt habe. Wahrscheinlich wurden weniger als 2 GB Speicherplatz verbraucht - ich erinnere mich, dass ich sehr überrascht war, dass es so wenig war.
Sie können dann uchar verwenden, es ist 1 Byte.
Grid erlaubt es, weniger einzupassen, da eine Reihe von Werten verwendet wird. Aber das ist nicht immer gut, denn um die theoretischen Werte zu erreichen, muss man das Gitter selbst schneiden.
Der maximale Wert in ushort beträgt 65 Tausend - wenn Sie ein solches Raster einstellen, brauchen Sie sich nicht manuell darum zu kümmern.
https://www.mql5.com/ru/articles/8385
es ist keine Tatsache, dass es eine gute Umsetzung ist )
Ich verzichte auf das russische Angebot.
Ich habe das gelesen))) es ist voller Fehler in den Berechnungen und das Netzwerk gibt eher zufällige Antworten
Dann können Sie uchar verwenden, es ist 1 Byte.
In ushort ist der maximale Wert 65k - wenn Sie ein solches Raster einstellen, müssen Sie sich nicht manuell darum kümmern
Ihre maximale Größe beträgt65535, aber ich kann die Variablen im Code nicht beeinflussen.
Was die maximale Größe betrifft - nein, sie garantiert nicht das Ergebnis, da sie an den Datenstreifen angepasst werden kann und die Daten in der Nähe davon übersprungen werden können.
Im Allgemeinen ist es gut, einen Lernalgorithmus zu haben, der immer die Angemessenheit der Schlussaufteilung prüft (A>10 && A<=15), aber normalerweise geschieht dies zufällig - es gibt keine solche obligatorische Bedingung, obwohl sie manchmal reproduziert wird.
Ich habe dies gelesen))) es gibt eine Menge Fehler in den Berechnungen und das Netzwerk gibt eher zufällige Antworten
Möchten Sie das Netzwerk selbst schreiben?
Vod hier ist ein Minimum an Worten und ein Maximum an Code in Python, aber auch Englisch.
https://datascience-enthusiast.com/DL/Building_a_Recurrent_Neural_Network-Step_by_Step_v1.html
Möchten Sie das Netzwerk selbst schreiben?
Es gibt ein Minimum an Wörtern und ein Maximum an Code in Python, aber auch in Englisch.
https://datascience-enthusiast.com/DL/Building_a_Recurrent_Neural_Network-Step_by_Step_v1.html
Ja, ich will es selbst machen), weil in allen Artikeln Beispiele Aktivierungsfunktionen falsch gezählt werden) z.B. wird Sigmoid überall als 1/1+exp(-x) gezählt. Ich brauche 1.0/1.0+exp(-x). Es scheint dasselbe zu sein, aber das Terminal gibt unterschiedliche Berechnungen an), um zu sehen, ob Sie die gleichen Berechnungen haben), daher der Fehler.