Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 3322
![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
Niemand hat irgendetwas diskutiert, Sie haben sich in ein Gespräch über Modellkomplexität eingemischt oder auf einen Beitrag reagiert, also sind Sie als Optimierer bekannt.
Das war's, Maxim. Es hat keinen Sinn, weiter zu diskutieren, jeder hat schon alles herausgefunden. Hier sieht man Sanych, der seit Jahrhunderten mit mir darüber streitet, dass es schädlich ist, nach einem Global zu suchen, worauf ich antwortete "je nachdem, was für ein Global", und Sanych hat noch nicht verstanden, dass er am Ende nach einem Global sucht.
Ich hoffe, dass ich die Diskussion wieder in eine ruhige, freundliche und konstruktive Richtung lenken kann.
Und alle, die diesen Thread regelmäßig lesen, sollten sich daran erinnern, wer und was wann gesagt hat, und nicht die Bewusstlosigkeit einbeziehen - das ist nutzlos. Ich habe heute einen Fehler gemacht - ich habe das Diagramm falsch gezeichnet, ich habe den Fehler ruhig zugegeben und es gesagt. Es ist normal, seine Fehler zuzugeben, Maxim.
Warum nicht? Ja. Ich habe keine andere Idee, es ist nur so, dass viele Leute die Dinge aus irgendeinem Grund nicht beim richtigen Namen nennen wollen.
Wann genau man mit dem Lernen aufhört, ist eine Frage der Methodik. Ich wollte nur betonen, dass es unmöglich ist, mit dem Lernen aufzuhören, ohne ein globales Extremum zu erkennen (oder es zu erzwingen, was aber keinen praktischen Nutzen hat).
Ich sehe nur ein Missverständnis der Gegner - vorhin war von Optimierung die Rede, und dass Overfitting in einem Tester und das Trainieren eines Modells unterschiedliche Dinge sind. Es ist nur so, dass beim maschinellen Lernen der Prozess der Prädiktorenauswahl normalerweise eine separate Aufgabe ist, während man im Terminal-Tester oft die Werte dieser Prädiktoren ändern kann - ein einfaches Beispiel ist hier die Suche nach Indikatoreinstellungen, aber gleichzeitig kann man im Tester Variablen verwenden, um die Werte dieser Indikatoren zu verarbeiten - bewegliche Schwellenwerte, Vergleichsregeln, Koeffizienten mit unterschiedlicher logischer Bedeutung.
Daher kann man, ohne den Code des Expert Advisors zu sehen, nicht eindeutig sagen, wie der Optimierungsprozess aussieht - Erstellung von Regeln oder Suche nach Prädiktoren, die besser mit festen Regeln funktionieren, oder wird der eine und der andere Teil implementiert. Daher der ganze Streit, meiner Meinung nach, zu diesem Thema.
In Anbetracht der Tatsache, dass die Überanpassung von allem und jedem im Allgemeinen angewendet wird, argumentiert Maxim, dass dies kein Lernen mit einem Lehrer ist, da die Auszeichnungslogik fehlen kann und die Situationen einander nicht ähnlich sind, was den Lernprozess erschwert. Und das zu Recht, denn im Grunde genommen haben wir viele verschiedene Klassen, die nach Vorlieben und Abneigungen gruppiert sind, die sich aber in ihren Eigenschaften nicht unbedingt ähneln. Ich habe bereits eine Methode vorgeschlagen, mit der solche Daten durch inkrementelles Lernen schrittweise aussortiert werden können, indem die Abwesenheit von Widersprüchen in der anfänglichen Stichprobe mit Hilfe eines trainierten Modells isoliert und dann mit den übrigen Daten trainiert wird. Dies ist nicht die einzige Lösung. Das Thema verdient wirklich Aufmerksamkeit.
Zum Abbruchkriterium: Hier können Sie natürlich Ihr Kriterium wählen und nach dem optimalen Wert suchen, je nachdem, was in den Antworten des Modells eine höhere Priorität hat. Es muss aber nicht unbedingt ein Kriterium des maschinellen Lernens sein - manchmal kann man auch einfach eine feste Anzahl von Iterationen festlegen - d.h. man kann auch ohne dieses Kriterium trainieren. Die Frage ist immer eine andere, nämlich wie man ein Modell auswählt, das auf neuen Daten funktioniert. Es ist besser, nach Kriterien zu suchen, die diese Frage beantworten.
Daher kann das Lernen beim maschinellen Lernen als eine Optimierung angesehen werden, bei der das Ziel darin besteht, die Kombination von Modellparametern zu finden, die die Verlustfunktion minimiert und die beste Modellleistung erzielt.
Bingo!
Jetzt haben Sie endlich begriffen, dass jegliches Lernen nichts anderes als eine Optimierung mit der Suche nach einem globalen Extremum ist. Oder vielleicht haben Sie es noch nicht begriffen, aber das werden Sie.
Es kann nicht anders sein, Sie brauchen immer ein eindeutiges Kriterium, um das Lernen zu beenden, und dieses Kriterium ist immer so gestaltet, dass es ein globales Extremum ist. Normalerweise wird ein integrales Kriterium entworfen (nicht immer). Sie haben integrale Kriterien genannt.
Das Problem der Neuronen in Python sind schöne Bilder von Statistiken auf Makroebene. Sobald man anfängt, sie zu analysieren, stellt sich heraus, dass das Neuron zu einem gleitenden Durchschnitt wird - es ist nahe am Vorhersagepreis, aber es errät die Richtung nicht. Die Richtung wird 50/50 erraten, so dass es unmöglich ist, auf diesen Neuronen zu handeln.
Ich habe versucht, die Artikel hier, und mit ChatGPT sammelten wir 10 000 Neuronen in 3 Schichten, oder 10 Schichten von 1000 Neuronen, oder eine Schicht von 100 000 Neuronen (meine RTX 3080 war völlig verstopft, und wenn Sie mehr nehmen - Python schrieb, dass es nicht genug Speicher), und RNN, und LSTM, und CNN, und CNN-LSTM, und CNN-BiLSTM, und CNN-BiLSTM-MLP mit zwei Regelung und Dropouts, und Q-Learning. DQN scheiterte nur, Chat schrieb Actor-Critic für ein paar Seiten, aber der Code stellte sich als fehlerhaft heraus, den weder ich noch Chat beheben konnten.
ALLES davon - funktioniert nicht. Das Ergebnis ist überall dasselbe - es wird zu einem gleitenden Durchschnitt. Ich habe alles Mögliche aus dem Thread "Was ist in das neuronale Netzwerk einzugeben?" und viele andere Dinge eingegeben.
Und hier sitze ich nun und schneide Zwiebeln in der Küche, während im Hintergrund YouTube läuft und Empfehlungen an einen lockigen Typen gegeben werden, der gerade dabei ist, ein neuronales Netzwerk zu bauen, das Preise vorhersagt. Okay, komm schon, sage ich mir, versuch es.
Und so öffnet er Google-collab und beginnt dort, Python-Code zu schreiben (ich glaube, es ist Python). Er gibt die Schlusskurse von Bitcoin ein, wenn ich mich nicht irre - des Tages. Trainiert ihn. Überprüft es. Hier wischte ich mir die Augen von der Schleife und begann, das Ergebnis zu betrachten.
Das Ergebnis ist wie folgt: die Vorhersage geht neben dem tatsächlichen Preis, aber... mit einer Richtungsvorhersage. Sagen wir also, es waren 35000, die Vorhersage ist 37500, der tatsächliche Kurs ist 37100. Nächster Schritt: 35700 prognostiziert, 35300 tatsächlich. Vorhersage 34000, Tatsache - 35000. Und so weiter und so fort. Er schrieb ein Netzwerk, das nicht den nächsten Preis vorhersagt, sondern 12, glaube ich, nächste Preise in einer Reihe auf einmal. Und hier stimmten sie nach jedem Schritt in der Richtung überein.
Frage: Ist es wirklich möglich, etwas zu schreiben, das in Python funktioniert?
Das war's, Maxim. Weitere Diskussion hat keinen Sinn, alles ist schon herausgefunden worden. Hier in der Nähe und Sanych beobachtet, die von Zeit zu Zeit mit mir argumentiert, dass, sagen wir, globale Suche ist schädlich, auf die ich antwortete "je nachdem, was global", und Sanych hat auch noch nicht erkannt, dass am Ende ist für eine globale suchen.
Ich hoffe, dass ich die Diskussion wieder in eine ruhige, freundliche und konstruktive Richtung lenken kann.
Und jeder, der diesen Thread regelmäßig liest, sollte sich daran erinnern, wer und was und wann gesagt hat, keine Bewusstlosigkeit einschließen - es ist nutzlos. Ich habe heute einen Fehler gemacht - ich habe das Diagramm falsch gezeichnet, ich habe den Fehler ruhig zugegeben und es gesagt. Es ist normal, seine Fehler zuzugeben, Maxim.
Tun Sie das nicht für mich.
Wir haben über den Tester gesprochen, nicht über die MO.
Bei MO suchen sie nicht nach einem Optimum, sondern nach einem Zufall eines Fehlers bei der Ausbildung, Prüfung und Validierung. Dann wird das Ganze Schritt für Schritt mit einer weiteren Datei durchgeführt. Überall sollte ungefähr derselbe Fehler auftreten.
Hier gibt es keinen Raum für Optimierung.
Tun Sie es nicht für mich.
In der Diskussion ging es um den Prüfer, nicht um die Vorgehensweise.
Bei MO wird nicht nach einem Optimum gesucht, sondern nach dem Zufall eines Fehlers bei der Ausbildung, Prüfung und Validierung. Und dann lassen sie es Schritt für Schritt auf eine weitere Datei laufen. Es sollte überall ungefähr derselbe Fehler auftreten.
Hier gibt es keinen Raum für Optimierung.
Rot ist Optimierung, in Ihrem Fall klingt das wie "Verringerung der Varianz" oder "Festlegen einer festen Varianz auf einen bestimmten Wert", je nachdem, was Sie tun)))
Rot ist Optimierung, in Ihrem Fall würde es sich anhören wie "die Varianz reduzieren" oder "eine feste Varianz eines bestimmten Wertes einstellen", je nachdem, was Sie tun)))
Irgendwie nehmen Sie den Text nicht wahr.
Eine Optimierung(?) ist NUR für das Training möglich, auf dem das Modell trainiert wird. Beim Training gibt es einen Algorithmus und man kann die Optimierung mit einer Lupe sehen. Dann gibt es einen Test dieses Modells, der KEINE Rückkopplung mit der "Optimierung" hat, weil es keine Parameter im Modell gibt, die die Ergebnisse beim Test beeinflussen können. Um zu beeinflussen, muss man etwas an den Prädiktoren und/oder dem Lehrer tun.
Bei MOE, d. h. Vorverarbeitung, Modellanpassung und Modellschätzung, kann es KEINE Optimierung geben, da der resultierende Fehler eine Eigenschaft dieser drei Schritte ist.