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

 

Kann mir jemand in einfacher, aber präziser Sprache erklären, nach welchen Prinzipien RF die Wichtigkeitsskala der Prädiktoren erstellt?

Ich habe eine Menge mit zwei Klassen in der Zielklasse, die Anzahl der Beobachtungen in einer Klasse ist Hunderte Male mehr als in der zweiten, ich erinnere mich von irgendwo, dass eines der Kriterien der Bedeutung der Prodiktoren in RF ist die Häufigkeit des Auftretens von einigen Beobachtungen.

Ich möchte also wissen, ob RF bei der Berechnung der Wichtigkeit der Prädiktoren die Klasse mit den wenigen Beobachtungen unterdrückt.

 
interessanter Artikel (oder eher kein Artikel, sondern interessante Bilder über nicht-lineare "pca") https://imdevsoftware.wordpress.com/tag/non-linear-pca/
Discriminating Between Iris Species
Discriminating Between Iris Species
  • imdevsoftware.wordpress.com
The Iris data set is a famous for its use to compare unsupervised classifiers. The goal is to use information about flower characteristics to accurately classify the 3 species of Iris. We can look at scatter plots of the 4 variables in the data set and see that no single variable nor bivariate combination can achieve this. One approach to...
 
mytarmailS:

Ich vermute, Sie sind in Forex, gibt es keine Makler in Forex und sie nicht handeln, sie sind Geschäfte arbeiten auf Buchmacher Dokumente

p.s. Was halten Sie von meinem Vorschlag für die Merkmalsauswahl?

Nun ja, ein Handelszentrum ist kein Makler. Aber niemand hat seinen Zugang zum Interbankenmarkt widerrufen.

Ihre Auswahl erscheint logisch. Ich habe jedoch beschlossen, keine Indikatoren nach meinen Vorstellungen auszuwählen, da dies das Modell nicht verbessert hat. Ich würde lieber den Algorithmus viele Indikatoren auswählen lassen und ihn entscheiden lassen, was gut ist und was nicht. Manchmal kommen gleitende Durchschnitte auch in die endgültige Reihe der Prädiktoren, ich denke, sie können einige Informationen nicht allein, sondern in Kombination mit anderen Indikatoren liefern. Aber meine Ergebnisse sind noch nicht stabil, ich kann ihre Nützlichkeit noch nicht garantieren.
Ich würde auch nicht versuchen, die Umkehrung genau vorherzusagen, in den Trainingsdaten wird die Klasse "business as usual" dutzende Male mehr Fälle haben als "Umkehrung", und man sagt, dass das Verhältnis der Klassen für das Training besser 50/50 sein sollte.

 
SanSanych Fomenko:

Ich habe einen Algorithmus, der die Vorhersagekraft eines Prädiktors für eine bestimmte Zielvariable bestimmt. Kurz gesagt, es sind Oszillatoren und verschiedene Inkremente. Wenn ein bestimmter Prädiktor Vorhersagekraft für eine bestimmte Zielvariable hat, folgt daraus nicht, dass er auch für eine andere Zielvariable Vorhersagekraft hat. Darüber hinaus kann ein Prädiktor in einem Fenster Vorhersagekraft haben, in einem anderen jedoch nicht.

Der Algorithmus funktioniert gut. Die von ihm ausgewählten Prädiktoren führen nicht zu einer Überanpassung der Modelle.

PS

Meinem Algorithmus zufolge haben Zettel jeglicher Art keine Vorhersagekraft, so lächerlich das auch klingen mag.

Alle Modelle mit einem beliebigen Datensatz werden neu trainiert.

Ein weiterer Punkt ist, dass die Wahrscheinlichkeit eines Übertrainings mit der richtigen Wahl und Umwandlung der Prädiktoren stark reduziert wird.

Die Wahrscheinlichkeit des Übertrainings hängt gleichermaßen von der Datenmenge und der Art des Modells ab.

Es gibt keinen Grund für Illusionen.

Werfen Sie einen Blick auf das pbo-Paket, es ist interessant zu sehen, wie dieses Problem dort behandelt wird.

Viel Glück!

 
Vladimir Perervenko:

Alle Modelle mit beliebigen Datensätzen können neu trainiert werden.

Ein weiteres Problem besteht darin, dass die Wahrscheinlichkeit des Überlernens bei der richtigen Wahl der Prädiktoren deutlich geringer ist.

Die Wahrscheinlichkeit des Übertrainings hängt gleichermaßen von der Datenmenge und der Art des Modells ab.

Kein Grund für Illusionen.

Werfen Sie einen Blick auf das pbo-Paket, es sieht interessant aus.

Viel Glück!

Angeschaut. Die zugrunde liegenden Annahmen sind keineswegs klar. Insbesondere "eine Zunahme der Anzahl der Beobachtungen führt zu Übertraining".

Ich verwende ein ganz klares und vor allem praktisch wertvolles Kriterium.

Ich habe das Wesentliche schon oft gesagt. Ich werde es wiederholen.

Ich verwende das folgende Kriterium für Übertraining (Überanpassung): Wenn der Fehler während des Trainings NICHT gleich dem Fehler bei anderen Daten außerhalb der Trainingsstichprobe ist, d. h. bei anderen Zeitintervallen, dann ist das Modell übertrainiert. Das heißt, das Modell hat während des Trainings einige Besonderheiten aufgenommen, die es in den nachfolgenden Zeitintervallen nicht angetroffen hat.

Wie dies in der Praxis umgesetzt wird.

Wir nehmen einen Quotienten, z.B. 10.000 bar.

Wir teilen es mechanisch durch die Taktzahl, ohne irgendwelche Extravaganzen, was für mich sehr wichtig ist, denn in der Praxis wird es so und nicht so sein.

Ich nehme also die ersten Takte von Nummer 1 bis 7000. Diese Balken werden für Lerntests und Validierung verwendet. Um sie in drei Gruppen aufzuteilen, verwende ich zum Beispiel das Muster oder das, was im Modell selbst eingebaut ist.

Ich erhalte drei Zahlen von dem Modell. Wenn das Modell nicht neu trainiert wird, sind diese Zahlen ungefähr gleich.

Dann das Wichtigste.

Ich nehme eine Datei mit den Takten 7001 bis 10 000. Und ich verwende das Modell, das mit den vorherigen Balken trainiert wurde. Ich erhalte eine Fehlermeldung. Weicht der Fehler geringfügig von den drei vorherigen ab, wird das Modell NICHT neu trainiert. In der Regel gehe ich davon aus, dass bei einer Diskrepanz von 15-20 % keine Umschulung erfolgt. Weicht eine der Zahlen um mehr als 50 % von einer der anderen ab, wird das Modell neu trainiert.

Bei meiner Methodik wähle ich also eine Teilmenge von Prädiktoren aus einer Reihe von Prädiktoren aus. Wenn gefunden, was nicht zwingend ist, dann werden Modelle wie randomforest, SVM, ada und ihre Varianten NICHT neu trainiert! Ich weiß nicht, wie es bei anderen Modellen ist - ich benutze sie nicht.

Dies ist keine Illusion. Das ist eine Tatsache.

 
mytarmailS:

Kann mir jemand in einfacher, aber präziser Sprache erklären, nach welchen Prinzipien RF die Wichtigkeitsskala der Prädiktoren erstellt?

Ich habe eine Menge mit zwei Klassen in der Zielklasse, die Anzahl der Beobachtungen in einer Klasse ist Hunderte Male mehr als in der zweiten, ich erinnere mich von irgendwo, dass eines der Kriterien der Bedeutung der Prodiktoren in RF ist die Häufigkeit des Auftretens von einigen Beobachtungen.

Ich möchte also wissen, ob RF bei der Berechnung der Wichtigkeit der Prädiktoren die Klasse mit den wenigen Beobachtungen unterdrückt.

Ihr habt sehr unausgewogene Klassen, und das ist nicht gut. Es gibt Algorithmen zum Ausgleich von Klassen, aber in Ihrem Fall hat es bei mir nicht funktioniert. Ich habe versucht, die Umkehrung von ZZ nicht durch eine Taktnummer anzugeben, sondern durch mehrere, vor und nach der Umkehrung. Dies verringerte zwar die Unwucht, löste das Problem aber nicht.

Ich habe keine Modelle gefunden, die garantiert für NICHT ausgewogene Klassen geeignet sind.

 
SanSanych Fomenko:

Ihr habt sehr unausgewogene Klassen, und das ist nicht gut. Es gibt Algorithmen zum Ausgleich von Klassen, aber in Ihrem Fall hat das nicht funktioniert. Ich habe versucht, die ZZ-Umkehrung nicht mit einer Taktnummer zu markieren, sondern mit mehreren, vor und nach der Umkehrung. Dies verringerte zwar die Unwucht, löste das Problem aber nicht.

Ich habe keine Modelle gefunden, die garantiert für NICHT ausgewogene Klassen geeignet sind.

Ich interessiere mich für die Frage der Merkmalsauswahl
 
mytarmailS:
Ich interessiere mich für die Frage der Merkmalsauswahl

Ich habe alles beantwortet, was ich für notwendig hielt.

Wenn Sie eine Reihe von Attributen mit einer Zielvariablen haben, schicken Sie sie mir, ich werde sie auswählen, dann Modelle mit den ausgewählten Attributen erstellen und das Ergebnis sehen

 
Hat jemand versucht, eine nicht-lineare pca, den Link zu verwenden, die ich oben links, aber ich habe Probleme erkennen, neue Daten mit ihm, es gibt einen Fehler
 
mytarmailS:
Niemand durch einen Zufall versucht, nicht-lineare pca?? Link, den ich oben links, ich habe kein Glück erkennen neue Daten mit ihm, es gibt einen Fehler

Ich glaube nicht, dass dieses Paket ausreicht, um ein Modell zu erstellen, das die Zielvariable vorhersagen kann. Alles, was ich in der Hilfe gefunden habe, ist, ein PCA-Modell auf der Grundlage von Prädiktoren zu erstellen, die Zielvariable ist überhaupt nicht vorhanden.

#установка  пакета, нужно выполнить один раз и перезапустить R
source("https://bioconductor.org/biocLite.R")
biocLite("pcaMethods")        

#создание  pca объекта
library(pcaMethods)
browseVignettes("pcaMethods") #хелп  файлы
data(metaboliteDataComplete)
mdC <- prep(metaboliteDataComplete, scale="none", center=TRUE)
resNipals <- pca(md, method="nipals", center=FALSE, nPcs=5)

Dadurch wird ein resNipals-Objekt (Nonlinear Estimation by Iterative Partial Least Squares) mit 5 Hauptkomponenten zur Analyse der Tabelle metaboliteDataComplete erstellt. Anstelle von metaboliteDataComplete können Sie auch Ihre eigene Tabelle mit Prädiktoren verwenden. Es ist wichtig, dass die Zielvariable hier nicht eingegeben wird, sie wird später verwendet.

Dies reicht jedoch nur aus, um die Beziehungen zwischen den Variablen anhand verschiedener Diagramme zu analysieren. Um ein Vorhersagemodell zu erstellen, wird dann ein lineares Regressionsmodell erstellt, das die Hauptkomponenten PC1,PC2,PC3,PC4,PC5 als Eingangsvariablen (x1,x2,x3,...) verwendet. Und die Zielvariable Y ist bereits als gewünschtes Ergebnis in das lineare Modell eingegeben. Das Problem ist, dass resNipals ein Objekt der Klasse "pcaRes" aus dem Paket pcaMethods ist. Ich konnte in der Hilfe nicht finden, wie man das alles macht.

Wäre es ein PCA-Modell aus dem Caret-Paket, würde es folgendermaßen ablaufen:

#http://www.win-vector.com/blog/2016/05/pcr_part2_yaware/ (раздел Is this the same as caret::preProcess?)
newVars <- colnames(resNipals)
resNipals$y <- dTrain$y   #"y" в данном случае это название колонки с целевой переменной, dTrain - исходная таблица с данными
modelB <- lm(paste('y',paste(newVars,collapse=' + '),sep=' ~ '),data=resNipals)
print(summary(modelB)$r.squared)
#дальше нужно использовать функцию predict(modelB, newdata = <таблица с валидационной выборкой>) для прогноза на новых данных

Aber es funktioniert nicht mit resNipals, theoretisch sollte das pcaMethods-Paket einige eigene Funktionen haben, um mit diesem Objekt zu arbeiten, aber ich habe nichts gefunden.