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

 
Dr. Trader:

Aber warum glauben Sie, dass das lineare Modell, wenn es nach der Formel y=ax+b extrapoliert, dies perfekt tut, während der Wald, wenn er den nächsten bekannten Nachbarn verwendet, nichts tut? Beide Algorithmen haben ihre Daseinsberechtigung.


Ich zähle nichts, ich habe Ihnen ein Beispiel und eine Reihe von Artikeln gezeigt. Was macht es für einen Unterschied, ob die LR es perfekt macht oder nicht. Der Punkt ist, dass RF überhaupt nicht extrapolieren kann, konstruktiv, niemals und unter keinen Umständen, während LR zum Vergleich und zur Klarheit gegeben ist.

Das ist es, was ich frage, und ich habe nur nach VERSTEHENDEN Beispielen gefragt, warum Sie denken, dass es falsch ist :)

 
Aljoscha:



Was hat das mit "Artikeln" zu tun? Wollen Sie mich auf den Arm nehmen? Ich habe Ihnen ein Beispiel von Minsky gegeben, der wie Newton ist, nur in ML, und er hat es so sehr vermasselt, und Sie reden von Müll auf Hubra oder Skripten in R (lies: Ich habe den Algorithmus nicht selbst entwickelt, ich habe nur ein paar Parameter geändert).


Wenn Sie den Wald selbst in C++ erstellt hätten, wären Sie auf die Idee gekommen, eine "Extrapolation" ala MLP durchzuführen, aber in R... Viel Glück...


Ich kenne keinen Minsky und Pozharsky und ich verstehe nicht, was auf Ihren Diagrammen steht), müssen Sie RF irgendeinen Satz mit Zielen von 0 bis 10 oder bis zu 100 beibringen und dann eine Antwort geben, die absichtlich 100 überschreiten sollte und RF sollte nur 100 geben

hat der Autor hier in dem Artikel:

#  set up functionality for modelling down the track
library(xgboost) #  extreme gradient boosting
library(nnet) #  neural network
library(ranger) # for random forests
library(rpart) # for demo single tree
library(rpart.plot)
library(viridis) # for palette of colours
library(grid) # for annotations

#  sample data - training set
set.seed(134) # for reproducibility
x <- 1:100 + rnorm(100)
y <- 3 + 0.3 * x + rnorm(100)

#  extrapolation / test set, has historical data plus some more extreme values
extrap <- data.frame(x = c(x, 1:5 * 10 + 100))

mod_lm <- lm(y ~ x)
mod_nn <- nnet(y ~ x, size = 8, linout = TRUE)

#  XG boost.  This is a bit more complicated as we need to know how many rounds
#  of trees to use.  Best to use cross-validation to estimate this.  Note - 
#  I use a maximum depth of 2 for the trees which I identified by trial and error
#  with different values of max.depth and cross-validation, not shown
xg_params <- list(objective = "reg:linear", max.depth = 2)
mod_cv <- xgb.cv(label = y, params = xg_params, data = as.matrix(x), nrounds = 40, nfold = 10) #  choose nrounds that gives best value of root mean square error on the training set
best_nrounds <- which(mod_cv$test.rmse.mean == min(mod_cv$test.rmse.mean))
mod_xg <- xgboost(label = y, params = xg_params, data = as.matrix(x), nrounds = best_nrounds)

mod_rf <- ranger(y ~ x)

p <- function(title) {
    plot(x, y, xlim = c(0, 150), ylim = c(0, 50), pch = 19, cex = 0.6,
        main = title, xlab = "", ylab = "", font.main = 1)
    grid()
}

predshape <- 1

par(mfrow = c(2, 2), bty = "l", mar = c(7, 4, 4, 2) + 0.1)

p("Linear regression")
points(extrap$x, predict(mod_lm, newdata = extrap), col = "red", pch = predshape)

p("Neural network")
points(extrap$x, predict(mod_nn, newdata = extrap), col = "blue", pch = predshape)

p("Extreme gradient boosting")
points(extrap$x, predict(mod_xg, newdata = as.matrix(extrap)), col = "darkgreen", pch = predshape)

p("Random forest")
fc_rf <- predict(mod_rf, data = extrap)
points(extrap$x, fc_rf$predictions, col = "plum3", pch = predshape)

grid.text(0.5, 0.54, gp = gpar(col = "steelblue"),
          label = "Tree-based learning methods (like xgboost and random forests)\nhave a particular challenge with out-of-sample extrapolation.")
grid.text(0.5, 0.04, gp = gpar(col = "steelblue"),
          label = "In all the above plots, the black points are the original training data,\nand coloured circles are predictions.")

Ich verstehe r nicht gut, ich verstehe nur, dass von 100 bis 150 RF sollten angemessene Ergebnisse wie andere Modelle vorhergesagt haben, aber dies ist nicht geschehen


 
Aljoscha:

Das sollte es nicht. Er liefert eine lokale Interpolation der nächstgelegenen Punkte, ähnlich wie Knn (quasi-optimaler Klassifikator), aber gröber. Sie wissen einfach nicht, wie man Basen in RF-Bäumen dreht, und es erscheint "gewürfelt".


Nun, im vorherigen Beitrag habe ich einen Code mit einem Screenshot hinzugefügt, was ist da "falsch"?

 
Aljoscha:

In der Wald-Algorithmus, die Bäume teilen die Punkte durch ein Merkmal orthogonal, wenn Sie die Basis zu drehen, erhalten Sie das gleiche wie in MLP, für diese müssen Sie in den Wald-Code zu erhalten und zu korrigieren oder schreiben Sie Ihre eigenen Wald)))


Tut mir leid, das wäre eine andere Art von Wald. Ich meinte die klassische Version.

Ich versuche, das, was da ist, in den Griff zu bekommen, um etwas zu schreiben...

Das Ergebnis ist, dass der klassische RF nicht weiß, wie er extrapolieren soll.

 
Aljoscha:

In der ML gibt es keine "Klassiker", es gibt etwas, das funktioniert und das Problem löst. Die Algorithmen eines anderen in ihrer ganzen Vielfalt zu beherrschen, ist so sinnvoll, wie den Code aller Indikatoren in kodobase und market zu verstehen, was nicht sinnvoll ist...

Es gibt nicht allzu viele grundlegende Heuristiken in ML, die Sie selbst beherrschen müssen, und zwar von Hand, so dass es Ihnen "von den Fingern perlt", dass Sie nachts aufwachen und einfach aus dem Gedächtnis heraus eine halbe Stunde lang Gradient Busting in C++ tippen (nur ein Scherz), das ist nicht so schwer, wie es scheint, und dann können Sie 100500 Variationen von Algorithmen aus Hobber-Artikeln selbst generieren.


Ohoho...

Dr. Trader hat es zweimal wiederholt, ich wiederhole es auch für Sie, das dritte Mal, sie sagen Gott und die Unreinen wollen dreimal hören, es bedeutet etwas, in einem mystischen Kontext...

Neue Punkte im PRINZIPRÄUM, in Bezug auf die physikalische Zeit, befinden sich NICHT STRENG AUSSERHALB der PUNKTE, Zeit ist Zeit, in Chips sind sie Chips, also nicht linear mit der physikalischen Zeit verbunden, z.B. mit Impuls oder Spektrum. Die "extrapolierten" Punkte liegen überall innerhalb und außerhalb des Merkmalsraums.


Das habe ich nicht gesagt, ich habe nur gesagt, dass die Struktur von "ancient" so ist, dass das Modell, wenn es durch alle Trainingswerte von Zielen verzweigt ist, genau das ausgibt, was es verzweigt ist, und keine neuen Werte ausgeben kann... zumindest steht das so in dem Artikel mit dem Beispiel. Ich werde meine Beispiele machen und dir zeigen, was ich habe :) Wenn Sie beim Training an der Grenze des Zielwertes von 100 waren, kann die Ausgabe nicht mehr als 100 ergeben... Da alle Werte über 100 in das Blatt 100 gehen, gibt es rein physikalisch keine Blätter mit Werten größer als 100.

 
Maxim Dmitrievsky:

Wenn der Grenzwert des Ziels während des Trainings 100 war, kann es nicht mehr als 100 ausgeben, weil alle Werte über 100 in das Blatt 100 gehen.

Die Normalisierung wurde aus einem bestimmten Grund erfunden.
 
Yuriy Asaulenko:
Die Normalisierung wurde aus einem bestimmten Grund erfunden.

verständlich ist, geht es bei der Grundsatzfrage um das Funktionieren der Bäume. Unabhängig davon, wie Sie ihn normalisieren, wird der Baum jeden Ausreißer bei neuen Daten nicht extrapolieren, sondern den ihm bekannten Extremwert angeben. Deshalb ist es nicht notwendig, die Daten für Bäume zu normalisieren.

 
Maxim Dmitrievsky:

verständlich ist, geht es bei der Grundsatzfrage um das Funktionieren der Bäume. Unabhängig davon, wie Sie ihn normalisieren, wird der Baum jeden Ausreißer bei neuen Daten nicht extrapolieren, sondern den ihm bekannten Extremwert angeben. Deshalb ist es auch nicht notwendig, die Daten für Bäume zu normalisieren.

Ich sehe für mich noch keine Notwendigkeit für RF, aber für MLP normalisiere ich nicht nur, sondern lasse das Eingangssignal auch durch ein Sigmoid laufen - d. h. der dynamische Bereich der Eingänge ist begrenzt und Ausreißer spielen keine Rolle.
 
Maxim Dmitrievsky:

verständlich ist, geht es bei der Grundsatzfrage um das Funktionieren der Bäume. Unabhängig davon, wie Sie ihn normalisieren, wird der Baum jeden Ausreißer bei neuen Daten nicht extrapolieren, sondern den ihm bekannten Extremwert angeben. Deshalb ist es auch nicht notwendig, die Daten für Bäume zu normalisieren.

Meiner Meinung nach ist die Lösung in diesem Fall ganz einfach: Verwenden Sie Feedback.

Hochachtungsvoll.

 
Andrey Kisselyov:

Meiner Meinung nach ist die Lösung in diesem Fall einfach: Einführung von Feedback.

Hochachtungsvoll.


Ich habe eine :) Es ist mir egal, ob es nicht extrapolieren kann oder ob es das kann... das Modell wird eine Vorhersage für eine bekannte Menge machen... nur zur allgemeinen Information

es gibt einige Fehler in der Lib mit Modellfehlern, je kleiner die Menge, desto kleiner der Fehler, ich verstehe rpicol noch nicht

Grund der Beschwerde: