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

 
Maxim Kuznetsov #:

Funktioniert sie?

Wir fangen mit etwas Einfacherem an: einem 2D-Agenten, der 9 Augen hat, die in verschiedenen Winkeln nach vorne zeigen, und jedes Auge nimmt 3 Werte entlang seiner Richtung wahr (bis zu einer bestimmten maximalen Sichtweite): Entfernung zu einer Wand, Entfernung zu einem grünen Gegenstand oder Entfernung zu einem roten Gegenstand. Der Agent navigiert, indem er eine von 5 Aktionen ausführt, die ihn in verschiedene Richtungen lenken. Die roten Dinge sind Äpfel und der Agent erhält eine Belohnung, wenn er sie isst. Die grünen Dinge sind Gift und der Agent erhält eine negative Belohnung für den Verzehr dieser Dinge. Das Training dauert mit den aktuellen Parametereinstellungen einige zehn Minuten."

Sie können auf "Lernen starten" klicken... und dann auf "Lernen stoppen". .....

die Kakerlake soll laufen und die roten Punkte bevorzugen, um die grünen Punkte zu vermeiden...

In der Realität: nach dem Lernstopp folgt sie mehr oder weniger dem letzten Bewegungsmuster und unterscheidet nicht zwischen rot und grün. Oder ich habe eine ungewöhnlich dumme Kakerlake :-)

denn man sollte nicht auf Stopp-Lernen drücken , bevor das Lernen abgeschlossen ist.

 
mytarmailS #:

weil man nicht aufhört zu lernen, bevor das Lernen abgeschlossen ist.

Hurra! Es hat geklappt... 3 Stunden Lernen, ich habe es fast vergessen.

Jetzt läuft die Kakerlake so, wie sie sollte (fast) versucht, die grünen zu vermeiden und frisst die roten.

Anscheinend ist es so, dass ein "Fühler" weniger Fühler trainiert :-) Das heißt, wenn ein Strafgrün auf einer bestimmten Seite ist, wird es sofort gefressen. Umgekehrt werden Rote auf einer bestimmten Traverse gemieden

Aber das ist wohl ein Systemfehler.

 
Aleksey Nikolayev #:

Dies funktioniert nur im Falle unabhängiger Merkmale, und da sie zum gleichen Preis gezählt werden, ist dies nicht möglich. Im Falle der Abhängigkeit ist es viel komplizierter - wir können Kopulas als Beispiel nehmen, wo univariate Verteilungen immer gleich sind, aber gleichzeitig bivariate Verteilungen sehr unterschiedlich sein können.

Vielleicht gibt es eine Lösung für das gleiche R, aber man muss nur danach suchen?

Aleksey Nikolayev #:

Sie haben eine Vorliebe für umfangreiche Aufzählungsberechnungen) Wir müssen (zu der bereits beträchtlichen Menge an Aufzählungen) eine Aufzählung nach Merkmalstypen und sicher auch nach Merkmalsparametern hinzufügen.

Nichtsdestotrotz scheint es mir, dass in Ihrem Ansatz ein rationaler Kern steckt, über den man nachdenken kann.

Ja, offenbar bin ich schlecht darin, Ergebnisse ohne Experimente vorherzusagen, also ist es besser, zu testen und oft enttäuscht zu werden, als mehrstufige logische Berechnungen anzustellen, bei denen sich in einem der Schritte ein Fehler einschleichen kann.

Selbst wenn man lernt, eine Stichprobe in Teilstichproben zu unterteilen, ist die nächste Frage, wie man die aktuelle Stichprobe richtig klassifiziert und das erforderliche Modell darauf anwendet.

 
mytarmailS #:
Vielleicht sollte man anstelle der statistischen Kriterien für die Homogenität der Stichprobe einfach die Veränderung der Bedeutung der Merkmale des Modells in der Dynamik (in einem gleitenden Fenster) beobachten.

Wenn es eine starke Diskrepanz zwischen dem aktuellen Zustand und dem vorherigen Zustand gibt, bedeutet das, dass wir uns bereits in einer anderen Stichprobe befinden....

Pro:
1. man muss nicht die stat. Tests, alles ist fertig aus der Box
2. Es wird nicht nur die Änderung der Probenahmezeit berücksichtigt, sondern auch die Änderung des Ziels, was meiner Meinung nach nicht weniger wichtig ist

In welchem Moment soll man beobachten, im Moment der Ausbildung? Und wie schlagen Sie vor, in der Dynamik zu beobachten, wie zu implementieren?

Ich habe ein Skript, das die Aktivierung der Blätter des Modells in der Dynamik anzeigt, d.h. man kann sehen, welche Blätter ausgelöst werden. Vielleicht sollten wir die durchschnittliche Häufigkeit ihrer Aktivierung im Trainingssegment berechnen und uns dann die Abweichungen in den Testsegmenten ansehen? Auf diese Weise können wir zumindest versuchen, die Abnahme der Modelleffizienz theoretisch zu überwachen.

 
Aleksey Vyazmikin #:

In welchem Moment soll man beobachten, im Moment der Ausbildung? Und wie schlagen Sie vor, in der Dynamik zu beobachten, wie zu realisieren?

Ich habe ein Skript, das die Aktivierung der Blätter des Modells dynamisch anzeigt, d. h. man kann sehen, welche Blätter aktiviert sind. Vielleicht sollten wir dann die durchschnittliche Häufigkeit ihrer Aktivierung auf dem Trainingssegment berechnen und uns dann die Abweichungen auf den Testsegmenten ansehen? Auf diese Weise können wir zumindest versuchen, die Abnahme der Modelleffizienz theoretisch zu überwachen.

Es hat keinen Sinn, das alte Modell zu betrachten, denn es erfasst keine Veränderungen auf dem Markt....

Ich schlage vor, dies wie vorgeschlagen umzusetzen))))))
In einem gleitenden Fenster das Modell neu trainieren und die Bedeutung der Zeichen beobachten, oder einfach einen Determinator für gute Zeichen nehmen und ihn in einem gleitenden Fenster beobachten. Fenster


Hier ist ein Beispiel für eine zufällig generierte Stichprobe mit 5 Merkmalen und 1 binären Ziel.

forrest und fiche selector

X <- matrix(rnorm(1000),ncol = 5)
Y <- as.factor(sample(0:1,nrow(X),replace = T))

head(X)
head(Y)

#install.packages("randomForest")
library(randomForest)
rf_imp_mat <- matrix(ncol = ncol(X),nrow = nrow(X))
for(i in 30:nrow(X)){
  ii <- (i-29):i
  rf <- randomForest(Y[ii]~.,X[ii,],ntree=100)
  rf_imp_mat[i,] <- importance(rf)[,1]
}

#install.packages("FSelectorRcpp")
library(FSelectorRcpp)
fs_imp_mat <- matrix(ncol = ncol(X),nrow = nrow(X))
for(i in 30:nrow(X)){
  ii <- (i-29):i
  infg <- information_gain(y = Y[ii],x = as.data.frame(X[ii,]))
  fs_imp_mat[i,] <-  infg$importance
}

par(mfrow=c(1,2))
matplot(rf_imp_mat , t="l",lty=1,main="rf_var_imp")
matplot(fs_imp_mat , t="l",lty=1,main="fs_var_imp")


In R-ka ist es natürlich nicht üblich, in Zyklen zu schreiben, wenn es nicht notwendig ist, aber dieser Stil verwirrt Neulinge, und Mittelsmänner wie mich verwirrt auch....

aber man kann so schreiben, der Code ist dreimal kleiner, und das Ergebnis ist dasselbe.

X <- matrix(rnorm(1000),ncol = 5)
Y <- as.factor(sample(0:1,nrow(X),replace = T))
idx <- embed(1:nrow(X),dimension = 30)[,30:1]

library(randomForest)
rf_imp_mat <- t(apply(idx,1,function(i) importance(randomForest(Y[i]~.,X[i,]))[,1]))
library(FSelectorRcpp)
fs_imp_mat <- t(apply(idx,1,function(i) information_gain(y=Y[i],x=as.data.frame(X[i,]))$importance))

par(mfrow=c(1,2))
matplot(rf_imp_mat , t="l",lty=1,main="rf_var_imp")
matplot(fs_imp_mat , t="l",lty=1,main="fs_var_imp")


Auch verschiedene Selektoren für jeden Geschmack, wahrscheinlich 5% von dem, was in R-ka verfügbar ist.

GitHub - FrancisArgnR/R-FeatureSelection-Packages: Brief guide to feature selection packages in R
GitHub - FrancisArgnR/R-FeatureSelection-Packages: Brief guide to feature selection packages in R
  • FrancisArgnR
  • github.com
Feature selection or variable selection in machine learning is the process of selecting a subset of relevant features (variables or predictors) for use in model construction. Packages FSinR Boruta caret spFSR varSelRF CORElearn FSelector
 

oder schauen Sie sich Fenster für zwei oder drei Währungen an und handeln Sie mit einer Verzögerung in der dritten Währung.

D.h. schauen Sie auf die zweite Hälfte des Tages EUR,CHF zu USD CAD und öffnen Sie früh am Morgen JPY (AUD,NZD)...so dass das System gelernt, den Trend der USD zu bestimmen und hatte Zeit zu kaufen, bevor "es ist nicht faul".

Ich fürchte nur, dass in einem einzigen Zitat "alle Wege gegangen wurden" und es ist unmöglich, Fisch aus ihm mit den verfügbaren Methoden zu bekommen.

 
Um etwas zu erfinden, muss man den Forschungsgegenstand definieren, dann seine Eigenschaften bestimmen, dann wird es nicht wie ein Affe und eine Brille sein
 
Maxim Dmitrievsky #:
Um etwas zu erfinden, muss man den Gegenstand der Forschung definieren, dann seine Eigenschaften festlegen, dann wird es nicht wie ein Affe und eine Brille sein

Es ist noch zu früh, den Gegenstand der Forschung und seine Eigenschaften zu definieren, das Forum ist erst 6 Jahre alt. Seien Sie nicht so böse!

 
Evgeny Dyuka #:

Es ist noch zu früh, um den Gegenstand der Forschung und seine Eigenschaften zu definieren, das Forum ist erst 6 Jahre alt. Seien Sie nicht so böse!

Wenn man anfängt, Zitate als Zeitreihe zu untersuchen, fallen einem vielleicht einige Besonderheiten auf, die in anderen Zeitreihen nicht zu finden sind. Vielleicht gibt es Muster in diesen Merkmalen. Und ja, nicht alles lässt sich durch Autoregression und Klassifizierung direkt mit Hilfe von Lag-Merkmalen herausfinden, aber mit etwas Einfallsreichtum kann man
 
Maxim Kuznetsov #:

(Ich hoffe, sie erschießen dich nicht wegen des CodeBase-Links: https: //www.mql5.com/ru/code/36558

kann sich bei der Vorhersage von Zeichen als nützlich erweisen - Sie dürfen gerne vorhersagen :-) Der Indikator zeigt nur die "Schwarz/Weiß"-Zeichen an (und fasst sie zusammen).

Ich werde die Balkenzeichen hier zeigen, es ist nicht schade.

Ich werde in meinem bescheidenen Archiv der Entwicklungen kramen und sie posten.

Es ist natürlich interessant, das bestreite ich nicht, aber auch hier gibt es Nicht-Stationarität.

Deshalb wird es mit einer Wahrscheinlichkeit von etwas weniger als eins vorhergesagt.

Aber im Grunde genommen, wenn es jetzt nach oben geht, wird der nächste Balken nach unten gehen.

Und diese Art der Bewegung der jüngeren TFMs spiegelt sich in den älteren wider.

Der Trend verläuft also nicht geradlinig, sondern mit vielen Rücksetzern, die bei den jüngeren ein Vielfaches der Dauer und der Balkengröße betragen.

Es scheint jedoch, dass man Fourier anwenden und diese Wellen finden kann, aber das ist nicht der Fall, denn

die Zeitskala ist auf dieselbe Weise moduliert, vorwärts und rückwärts.

Es ist nicht einfach, dieses Wunder zu verstehen, und wenn man es direkt angeht, gibt es eine Menge Fragen.

Wir können zum Beispiel die Kursbewegung von links nach rechts oder von rechts nach links betrachten, wobei wir nicht unbedingt vom rechten Rand ausgehen müssen.

So kommt man vorwärts und rückwärts, rauf und runter.