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

 
Nun. Ich habe in der Woche vor der Markteröffnung begonnen, die Version 14 aktiv zu testen. Ich möchte Folgendes sagen. Je länger man trainiert, desto mehr Inputs fließen in den TS ein. Weitere Prädikate. Ich hatte bis zu 8-9 Einträge maximal. Allerdings ist die Verallgemeinerungsfähigkeit in der Regel nicht hoch. Und solche TSs funktionieren kaum. D.h. sie können kaum die Marke von 3 erreichen. Aber Prädikate mit 4-6 Eingaben funktionieren im Großen und Ganzen zufriedenstellend. Ich habe die Anzahl der Einträge von 50 auf 150 erhöht. Es ist jetzt in der dritten Stunde der Ausbildung. Aber ich denke, dass die Zahl der Eingaben auch dieses Mal nicht unerheblich sein wird. Also, schauen wir mal......
 
Nun, ich habe diese Sache wieder bemerkt. Die Sache ist die, dass ich einen Satz von Daten haben, perdicts 12 und dann gehen ihre gleichen lag, lag1 und lag2. Zuvor lagen die Eingaben meist am Anfang des Satzes, d.h. es gab nur wenige Verzögerungen und dann nicht mehr als lag1, selten lag2. Ich kann verstehen, dass die Stichprobe mit Daten überladen ist, aber Tatsache ist, dass vor der Generalisierung lag1 und lag2 häufiger verwendet wurden. Aber es ist eine Tatsache, dass die Verallgemeinerung früher meist in den Anfangskolumnen war, jetzt ist sie in den Endkolumnen.... praktisch, also lassen Sie uns einige Schlussfolgerungen ziehen....
 
Mihail Marchukajtes:
Nun, ich habe diese Sache wieder bemerkt. Die Sache ist, dass ich einen Satz von Daten, perdicts 12 und dann ihre Verzögerungen kommen, lag1 und lag2. Zuvor lagen die Eingaben meist am Anfang des Satzes, d.h. es gab nur wenige Verzögerungen und dann nicht mehr als lag1, selten lag2. Ich kann verstehen, dass die Stichprobe mit Daten überladen ist, aber Tatsache ist, dass vor der Verallgemeinerung lag1 und lag2 häufiger vorkamen. Aber es ist eine Tatsache, dass die Verallgemeinerung früher meist in den Anfangskolumnen war, jetzt ist sie in den Endkolumnen.... fast, so folgern....

Sie müssen also zu früheren Versionen zurückkehren.

Mein Flug ist in Ordnung. Vielleicht, weil es in der Stichprobe keine Verzögerungen gibt?

 
Dr. Trader:

Es sieht im Allgemeinen gut aus, ich bin gespannt, was am Ende passieren wird.

Zum Ausschuss: Ich habe einige Beispiele genannt, aber es gibt auch Modelle, die Regression mit Rundung zur Klassifizierung verwenden, und da ist es nicht so eindeutig. Ich habe zwei verschiedene Möglichkeiten ausprobiert, die Stimmen zu kombinieren:

1) Runden Sie alles zu Klassen auf, nehmen Sie die Klasse, für die es mehr Stimmen gibt.
D.h. eine 4-Bar-Vorhersage aus drei Modellen
c(0,1, 0,5, 0,4, 0,4) c(0,6, 0,5, 0,7, 0,1) c(0,1, 0,2, 0,5, 0,7) Ich würde es weiter auf die Klassen aufrunden
c(0, 1, 0, 0) c(1,1,1,0) c(0,0,1,1) , und der endgültige Vektor mit Vorhersagen wäre c(0, 1, 1, 0) nach Anzahl der Stimmen.

2) eine andere Möglichkeit besteht darin, das durchschnittliche Ergebnis sofort zu ermitteln und es erst dann auf die Klassen aufzurunden
das Ergebnis wäre c((0.1+0.6+0.1)/3, (0.5+0.5+0.2)/3, (0.4+0.7+0.5)/3, (0.4+0.1+0.7)/3)
oder (0,2666667, 0,4000000, 0,5333333, 0,4000000), oder
c(0, 0, 1, 0)

Sie sehen, dass das Ergebnis unterschiedlich ausfällt und davon abhängt, welcher Schritt gerundet werden soll. Ich weiß nicht, was üblicher ist, aber ich denke, die zweite Methode funktioniert besser mit neuen Daten.

Paket tsDyn SETAR-Funktion

Es stellt sich heraus, dass der Schwellenwert (es kann zwei Schwellenwerte wie beim RSI geben) variabel ist. Erzielt erstaunliche Ergebnisse.

Nicht zu vergessen sind auch die Kalibrierungsalgorithmen bei der Klassifizierung. Der Punkt ist, dass die Klassenvorhersage in der Realität kein Nominalwert ist, der Algorithmus berechnet die Klassenwahrscheinlichkeit, die eine reale Zahl ist. Dann wird diese Wahrscheinlichkeit z. B. durch die Hälfte geteilt und man erhält zwei Klassen. Was ist, wenn die Wahrscheinlichkeit 0,49 und 051 ist, das sind zwei Klassen? Wie wäre es mit 0,48 und 052? Ist dies eine Einteilung in Klassen? Hier ist, wo SETAR würde in zwei Klassen, zwischen denen wäre Reshetovskie "auf dem Zaun" zu teilen.

 
Dr.Trader:

Es sieht im Allgemeinen gut aus, ich bin gespannt, was am Ende passieren wird.

Was den Ausschuss betrifft, so habe ich einige Beispiele genannt, aber es gibt auch Modelle, die eine Regression mit Rundung zur Klassifizierung verwenden, und da ist es nicht so eindeutig. Ich habe zwei verschiedene Möglichkeiten ausprobiert, die Stimmen zu kombinieren:

1) runde alles zu Klassen auf, nimm die Klasse, die die meisten Stimmen erhält.
D.h. eine 4-Balken-Vorhersage aus drei Modellen
c(0.1, 0.5, 0.4, 0.4) c(0.6, 0.5, 0.7, 0.1) c(0.1, 0.2, 0.5, 0.7) Ich würde dies weiter aufrunden auf die Klassen
c(0, 1, 0, 0) c(1,1,1,0) c(0,0,1,1) , und der endgültige Vektor mit Vorhersagen wäre c(0, 1, 1, 0) nach Anzahl der Stimmen.

2) Die andere Möglichkeit besteht darin, das durchschnittliche Ergebnis direkt zu ermitteln und es erst dann auf die Klassen aufzurunden
das Ergebnis wäre c((0,1+0,6+0,1)/3, (0,5+0,5+0,2)/3, (0,4+0,7+0,5)/3, (0,4+0,1+0,7)/3)
oder (0,2666667, 0,533333, c(0, 0, 1) oder
)

Wie Sie sehen können, ist das Ergebnis unterschiedlich, je nachdem, welchen Schritt Sie runden. Ich weiß nicht, welche der beiden Methoden die üblichere ist, aber ich glaube, dass die zweite Methode bei neuen Daten besser funktioniert.
Dies ist das gbpusd-Paar. Das bedeutet, dass das Modell darauf wartet, vom Brexit getestet zu werden. Ich habe noch nicht einmal die Daten des letzten Jahres verarbeitet.... Könnte eine Pflaume sein...

Je nach dem Ergebnis des Abschlusstests werde ich den Ton des Artikels festlegen. Es ist immer eine kleine Überraschung zu sehen, dass das Modell funktioniert, und die Norm zu sehen, dass es abläuft.

Ich werde den Ausschuss wie folgt zusammenstellen:

Ich bilde n Vorhersagevektoren numerischen Typs über die Anzahl der Modelle auf den Trainingsdaten (Regression der Preissteigerung).

Ich berechne den Durchschnitt der Antworten für die ausgewählten Modelle.

Ich zähle die Quantile 0,05 und 0,95.

Bei der Validierung wiederhole ich die Schritte 1 und 2.

Ich wähle nur die Beispiele aus, bei denen der Durchschnitt außerhalb der Quantile liegt.

Ich multipliziere die Antwort mit dem Vorzeichen der Vorhersage und ziehe die Spanne ab.

Auf der Grundlage des erhaltenen Vektors bilde ich m Teilstichproben mit zufälliger Einbeziehung von 1-4 Geschäften pro Tag, je nach Prognosehorizont.

Der Ausschuss hat bereits eine dreifache Steigerung der MO im Vergleich zu Einzelmodellen festgestellt. Denn Modelle sind vielfältig...

 
Как из данных вычленить некие группы данных по условию
Как из данных вычленить некие группы данных по условию
  • ru.stackoverflow.com
нужно найти такие строчки которые повторяются не менее 10 раз в всей выборке и в каждой из найденных одинаковых групок которые повторялись, количество "1" в target.label должно превышать 70% по отношению к "0" вот найденные одинаковые строчки единичек больше чем нулей...
 

Ich werde sie dann hier beantworten.

#пара строк из той таблицы, не буду я всё текстом копировать, потом первая строка повторена ещё дважды
dat <- data.frame(cluster1=c(24,2,13,23,6), cluster2=c(5,15,13,28,12), cluster3=c(18,12,16,22,20), cluster4=c(21,7,29,10,25), cluster5=c(16,22,24,4,11), target.label=c(1,1,0,1,0))
dat <- rbind(dat, dat[1,], dat[1,])
#результат последней строки поменян на 0 для эксперимента
dat[7,"target.label"]=0

library(sqldf)
#для sqldf точек в названиях колонок быть не должно
colnames(dat)[6] <- "target"

dat1 <- sqldf( "select cluster1, cluster2, cluster3, cluster4, cluster5, avg(target) as target_avg, count(target) as target_count from dat group by cluster1, cluster2, cluster3, cluster4, cluster5" )
dat1
dat1[ dat1$target_count>=10 & dat1$target_avg>0.63 , ]
dat1[ dat1$target_count>=10 & ( dat1$target_avg<0.37 | dat1$target_avg>0.63 ), ] #на случай если оба "0" или "1" встречаются чаще 70%
 
SanSanych Fomenko:

Das tsDyn-Paket ist eine SETAR-Funktion

SETAR bezieht sich speziell auf die Kalibrierung von Ausschüssen, oder ist dies ein separates Thema für die Erstellung von Finanzmodellen?

Ich habe die Packungsbeilage durchgeblättert, aber nicht gefunden, was ich brauche... Es gibt eine Situation: Ich habe eine Trainingstabelle mit 10000 Beispielen. Und es gibt 100 Modelle, die mit diesen Beispielen trainiert wurden. Um die Modelle zu testen, können Sie mit ihnen dieselben Eingabedaten vorhersagen und erhalten 100 Vektoren mit jeweils 10000 Vorhersagen. SETAR könnte verwendet werden, um all diese 100 Vektoren irgendwie zu einem zusammenzuführen?
Für eine Vorhersage mit neuen Daten gäbe es dann wieder 100 Vorhersagen, die wir zu einer einzigen zusammenführen müssten (es gäbe nicht 100 Vektoren, sondern 100 Einzelvorhersagen). Kann SETAR dies ebenfalls tun, indem es die aus den Trainingsdaten gewonnenen Ausschussparameter verwendet?

 
Dr. Trader:

SETAR bezieht sich speziell auf die Kalibrierung von Ausschüssen, oder ist dies ein separates Thema für die Erstellung von Finanzmodellen?

Ich habe das Handbuch des Pakets durchgeblättert, ich sehe nicht, was ich brauche... Folgende Situation: Ich habe eine Trainingstabelle mit 10000 Beispielen. Ich habe 100 Modelle an diesen Beispielen trainiert. Um die Modelle zu testen, können Sie sie zur Vorhersage derselben Eingabedaten verwenden und erhalten 100 Vektoren mit jeweils 10000 Vorhersagen. SETAR könnte verwendet werden, um all diese 100 Vektoren irgendwie zu einem zusammenzuführen?
Für eine Vorhersage mit neuen Daten gäbe es dann wieder 100 Vorhersagen, die wir zu einer einzigen zusammenführen müssten (es gäbe nicht 100 Vektoren, sondern 100 Einzelvorhersagen). Wird SETAR auch dazu in der Lage sein, indem es aus den Trainingsdaten abgeleitete Ausschussparameter verwendet?

Soweit ich weiß, hat es nichts mit Ausschüssen zu tun.
 
Yury Reshetov:

Sie müssen also zu früheren Versionen zurückkehren.

Ich komme gut zurecht. Vielleicht, weil es in der Stichprobe keine Verzögerungen gibt?

Nun, ja, ich habe Lags gemacht, weil sie in früheren Versionen die Aufzählungsfähigkeit erhöht haben, jetzt mit dem verbesserten Prefetching-Algorithmus ist das nicht mehr nötig, also versuche ich, ohne sie zu trainieren. Ich versuche, ohne sie zu trainieren. Ich werde später über die Ergebnisse der heutigen Übung berichten...