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

 
Aleksey Vyazmikin:

Interessanter Spruch. Allerdings werden nachfolgende Bäume erstellt, um den Fehler aus der bestehenden Baumzusammensetzung zu reduzieren, aber ich verstehe nicht, warum sie dann keine Stichproben verwenden, sagen Sie mir mehr im Detail, vielleicht verstehe ich etwas nicht...

Sie sind nicht zufällig dort, wo Sie die Blätter von Boosting-Bäumen mit einer Zahl > 1 untersuchen, indem Sie sie mit Rohdaten füttern? Wenn ja, dann sollte das Ergebnis zufällig sein, denn diese Bäume haben nicht aus den Eingabedaten gelernt, sondern aus Fehlern. Sie lösen also ein Problem, für das der Baum und seine Blätter nicht ausgebildet wurden.
Wenn diese Bäume aus einem Zufallsforst stammen, dann sind sie alle auf Rohdaten trainiert und können verwendet werden (was aber keinen Sinn macht, da 1 Baum dem Wald in Bezug auf den Fehler stark unterlegen ist). Beim Boosten - nein, denn 1 Baum ohne alle anderen Bäume hat keinen Sinn.

 
elibrarius:

Gibt es zufällig Blätter von Boosting-Bäumen mit einer Anzahl > 1, die mit Eingangsdaten gefüttert werden? Wenn ja, sollte das Ergebnis zufällig sein, da diese Bäume nicht auf Eingabedaten, sondern auf Fehler trainiert wurden. Sie lösen also ein Problem, für das der Baum und seine Blätter nicht ausgebildet wurden.
Wenn diese Bäume aus einem Zufallsforst stammen, dann sind sie alle auf Rohdaten trainiert und Sie können sie verwenden (aber es hat keinen Sinn, denn 1 Baum ist dem Wald in Bezug auf den Fehler stark unterlegen). Beim Boosten - nein, denn 1 Baum ohne alle anderen zu berücksichtigen, macht keinen Sinn.

Dies ergibt sich aus der Definition von Boosting als einer sequentiellen Verbesserungsmethode, bei der jeder nachfolgende Algorithmus versucht, die Mängel in der Zusammensetzung der vorangegangenen Algorithmen auszugleichen.
 
elibrarius:

Ja, um den Fehler zu reduzieren, nehmen sie den Fehler als Ziel und ziehen ihn dann ab.

Hier ist der Algorithmus für das Boosten, ich studiere ihn gerade selbst https://neurohive.io/ru/osnovy-data-science/gradientyj-busting/


Ich verstehe, dass es sich um klassisches Boosten handelt. Vielleicht hat catbust etwas Eigenes erfunden...

Ich habe mir den Artikel angeschaut. Ja, ich habe den Eindruck, dass ein Baum erstellt, auf die Probe angewendet und das Delta zwischen den tatsächlichen Zielen und den vorhergesagten Zielen berechnet wird, dann wird der nächste Baum erstellt, um den Fehler zu reduzieren, d. h. das Delta vorherzusagen. Tatsächlich werden aber neue Bäume auf die gleiche Weise auf der gleichen Probe aufgebaut und neue und neue Verbindungen gebildet, d.h. es ändert sich eigentlich nur das Ziel. Aber ein solcher Ansatz bietet die Möglichkeit, neue Verbindungen (Blätter) zu finden, die bei einem Zufallswald nicht offensichtlich sind, und diese Verbindungen hängen vom ersten Baum ab, und dieser hängt von der Probe ab (was nichts Neues ist), aber die nachfolgenden Bäume in CatBoost werden entweder nach der festgelegten Anzahl von Iterationen oder nach dem Vorzeichen des Anhaltens konstruiert, und dieses Vorzeichen ist auf einer Testprobe definiert. Das Vorzeichen ist ein beliebiger geschätzter Indikator für die Modellqualität (es gibt eine Liste mit verschiedenen Indikatoren). Ich wähle die Beendigung des Trainings für den Indikator, da ich eine Verbesserung für zwei Stichproben auf einmal erzielen möchte, und wenn es nur für die Trainingsstichprobe ist, ist es eindeutig ein Übertraining. Aus diesem Grund stellt sich die Frage nach der Stichprobengröße, die sich direkt auf das Lernen auswirkt, d. h. wenn sogar die Größe der Trainingsstichprobe konstant ist, dann wirkt sich die Größe der Teststichprobe auf das Lernen aus.


elibrarius:

Gibt es zufällig die Blätter von Boosting-Bäumen mit einer Zahl > 1, indem man ihnen die Rohdaten zuführt? Wenn ja, sollte das Ergebnis zufällig sein, da diese Bäume nicht aus Rohdaten, sondern aus Fehlern gelernt haben. Sie lösen also ein Problem, für das der Baum und seine Blätter nicht ausgebildet wurden.
Wenn diese Bäume aus einem Zufallswald stammen, sind sie alle auf Rohdaten trainiert und können verwendet werden (was aber keinen Sinn macht, da 1 Baum dem Wald in Bezug auf den Fehler stark unterlegen ist). Beim Boosten - nein, denn 1 Baum ohne alle anderen zu berücksichtigen, macht keinen Sinn.

Guter Punkt, ich bereite gerade eine Plattform vor, um Blätter zu studieren (in catbust ist es eher wie binäre Bäume). Das Ergebnis kann vernachlässigbar sein, wenn es sehr viele Bäume gibt, aber es kann sehr wohl vernünftige Verknüpfungen geben, sogar in der Theorie, wenn der erste Baum einen großen Fehler in seinem Blatt hatte und der vierte Baum diesen Fehler in seinem Blatt korrigiert, dann wird die neue Verknüpfung in der Tat logisch sinnvoll sein und selbst die Probe korrekt klassifizieren. Technisch gesehen verfügt catbust über ein Array mit den Antwort-Ergebnissen jedes Binärbaums (Blattes). Diese Antworten werden dann addiert, aber der Trick besteht darin, dass pro Probezeile nur ein kleiner Teil der Binärbäume (Blätter) eine Antwort gibt. Daher ist es theoretisch möglich, binäre Bäume (Blätter) zu entfernen (auf Null zu setzen), die eine sehr geringe Vorhersagekraft haben, da es sich entweder um Bäume mit Anfangsfehlern oder kleinen Passungen (bei der Umschulung) handelt, und nur Blätter mit signifikanten Werten übrig zu lassen. Die andere Richtung besteht darin, diese Verbindungen zu verwenden, um die Wichtigkeit der Prädiktoren abzuschätzen. Wenn es ein großes Gewicht in der endgültigen Anordnung gibt, sind diese Verbindungen und damit die Prädiktoren signifikant, die anderen werden durch Schwellenwerte als weniger signifikant aussortiert. Wenn wir eine solche Sichtung vornehmen, kann das Modell zuerst auf den signifikanteren Prädiktoren und dann auf den weniger signifikanten Prädiktoren trainiert werden, was das Trainingsergebnis verbessern sollte, da die weniger signifikanten Prädiktoren die Konstruktion stabilerer Beziehungen nicht verhindern, sondern sie nur ergänzen, wenn dies möglich ist.

Das Fazit ist, dass Müll-Binärbäume für die Anpassung nicht wirklich von Interesse sind, während Mikro-Analysen (2-3 Binärbäume (Blätter)) mit einem gemeinsamen hohen Gewicht oder einzelne Binärbäume ebenfalls von großer Bedeutung sind und separat für die Klassifizierung verwendet werden können.

Leider habe ich keinen Mechanismus, um einzelne Binärbäume (im normalen Blattsinn) zu ziehen und sie in eine normal lesbare Regel umzuwandeln, also ist alles nur Theorie, aber ich bin offen für Zusammenarbeit.

 
Aleksey Vyazmikin:

Leider habe ich derzeit keinen Mechanismus, um einzelne Binärbäume (im normalen Verständnis von Blättern) zu ziehen und in eine normal lesbare Regel umzuwandeln, so dass alles noch in der Theorie ist, aber ich bin offen für Zusammenarbeit.

Und wie ziehen Sie das Modell in mt5? Ich würde es gerne tauschen oder im Tester laufen lassen. Ich habe lange daran gearbeitet, aber ich habe keine Ahnung, ich sollte entweder Python verwenden und es mit mt5 verbinden oder katbust binär verwenden.

 
Maxim Dmitrievsky:

Wie zeichnen Sie das Modell in mt5? Was dort zu handeln oder es in den Tester laufen. Ich denke, was wäre der beste Weg, um es zu bauen, ich habe noch nicht entschieden: zu gehen, um Python und verbinden Sie es mit mt5 oder verwenden katbust binär.

Ich werde ein Modell für C++ zu MQL5 konvertieren - in der Tat, nur Arrays werden dort genommen, und es gibt einen Interpreter dieses Modells in MQL (nicht mein Code). So werden die Modelle in den Expert Advisor geladen und ich kann nun Hunderte von Modellen über die Datei laden und sie im Terminal betrachten, einschließlich des Durchlaufs durch den Optimierer.

 
Aleksey Vyazmikin:

Ich konvertierte ein Modell für C++ zu MQL5 - in der Tat, nur Arrays werden dort genommen, und es gibt einen Interpreter dieses Modells in MQL (der Code ist nicht mein). Dementsprechend werden die Modelle in Expert Advisor geladen, und jetzt kann ich Hunderte von Modellen über eine Datei laden und sie im Terminal beobachten, einschließlich der Ausführung durch den Optimierer.

Nun, hier ist ein Artikel zu schreiben, mit einigen Rahmen und Idee (die Idee sollte nicht weniger als Raum), und welche Hilfe benötigt wird, oder zu kopieren, was es ist

Ich verstehe, dass die Gemeinschaft gespalten ist: Einige ziehen sich zurück, andere verallgemeinern. Ich z. B. bin mit diesem Ansatz nicht einverstanden, vielleicht habe ich die Idee nur nicht ganz verstanden
 
Maxim Dmitrievsky:

Nun, hier ist ein Artikel zu schreiben, mit einem Rahmen und einer Idee (die Idee sollte nicht weniger als kosmisch sein) und welche Hilfe benötigt wird, oder zusammen mit dem, was da draußen ist

Ich habe kein tiefes theoretisches Wissen für Artikel, ich erfinde verschiedene Konzepte und ändere Interpretationen von etablierten Phänomenen - das ist kein akademischer Ansatz.

Ich denke, ein Interpreter des Modells wäre interessant, aber ich kann ihn nicht veröffentlichen, da der Code nicht von mir geschrieben wurde.

Und alles, was in der Theorie bleibt, mit Code, der nicht angewandt werden kann (wegen geschlossener Klassen), wäre meiner Meinung nach uninteressant. Und der Prozess der Modellerstellung und -auswahl, ich denke, alle gelöst, und es ist kein Interesse.

 
Maxim Dmitrievsky:

Ich verstehe, dass die Gemeinschaft gespalten ist: Die einen ziehen sich zurück, die anderen verallgemeinern. Ich für meinen Teil bin mit diesem Ansatz nicht einverstanden, vielleicht habe ich die Idee nur noch nicht ganz verstanden

Und ich weiß nicht, wie es in der Gemeinschaft aussieht, d. h. ich weiß nicht, wie andere Leute in anderen Bereichen es machen?

Das Ziehen von Daten erscheint mir logisch, da ich mit Hilfe von MO nach einem Modell für menschliches Verhalten (oder einem Algorithmus) suche. Es kann viele solcher Verhaltensmuster geben, und sie können unabhängig sein, also ist es sinnvoll, so viele wie möglich zu ziehen, da es unmöglich ist, sie alle zusammen zu verallgemeinern. Und für jemanden ist der Markt etwas Ganzes, das Ergebnis kollektiver Geistesarbeit, eine Art Abstimmungsorgan ohne Regeln. Offensichtlich suchen sie für diese Situation nach einem Modell, das das Marktverhalten als eigenständigen Organismus beschreibt.

 
Aleksey Vyazmikin:

Wenn der erste Baum einen großen Fehler in seinem eigenen Blatt hatte und der vierte Baum diesen Fehler in seinem eigenen Blatt korrigiert hat, dann macht die neue Verknüpfung logisch Sinn und klassifiziert die Stichprobe selbst richtig.

Ich bin mir nicht sicher, ob der 4. Baum die Fehler des ersten mit seinen Blättern korrigiert. Ich denke, dass sie nur paarweise Sinn machen. Aber ich könnte mich irren. Da ich mit solchen Dingen nicht experimentiert habe.

 
elibrarius:

Ich bin mir nicht sicher, der 4. Baum korrigiert mit seinen Blättern die Fehler des ersten Baumes. Ich denke, sie sind nur paarweise sinnvoll. Aber ich könnte mich irren. Denn ich habe mit solchen Dingen nicht experimentiert.

Wenn wir sehr primitiv sind, hat der erste Baum keine Antwort auf die Probe, er liefert Null, während der vierte Baum diese Antwort hat und die "Wahrscheinlichkeit" mit 0,6 angibt - technisch gesehen haben wir den Fehler des ersten Baums korrigiert, aber in Wirklichkeit haben wir eine Verbindung aufgedeckt, die vorher überhaupt nicht existierte. Selbst wenn wir davon ausgehen, dass alle Bäume die gesamte Stichprobe teilen (was offensichtlich nicht der Fall ist), lassen Sie es 0,1 statt Null sein, und der nachfolgende Baum hat 0,5, den gleichen Effekt hier. Dort ist die Wahrscheinlichkeit nicht genau die Wahrscheinlichkeit, die Werte im Array werden erst dann in etwas ähnliches wie die Wahrscheinlichkeit umgewandelt, wenn alle Werte der aktivierten Binärbäume addiert werden.