RandomForest für die Regression in R
Ich experimentiere mit R und die randomForest-Paket, ich habe einige Erfahrungen mit SVM und Neuronale Netze.
Mein Erster test ist, um zu versuchen und regress: sin(x)+Gaußsches Rauschen.
Mit Neuronale Netze und svm, die ich erhalten ein "relativ" schönes approximation von sin(x), so dass das Rauschen herausgefiltert wird und die Lern-Algorithmus nicht overfit. (für menschenwürdige Parameter)
Wenn das gleiche tun auf randomForest ich habe eine ganz overfitted Lösung.
Ich einfach (R 2.14.0, versucht auf 2.14.1 auch, nur für den Fall):
library("randomForest")
x<-seq(-3.14,3.14,by=0.00628)
noise<-rnorm(1001)
y<-sin(x)+noise/4
mat<-matrix(c(x,y),ncol=2,dimnames=list(NULL,c("X","Y")))
plot(x,predict(randomForest(Y~.,data=mat),mat),col="green")
points(x,y)
Ich denke, es ist eine Magie, die option in randomForest, damit es funktioniert korrekt, ich habe versucht ein paar, aber ich fand nicht die richtigen Hebel zu ziehen...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
maxnodes
Begrenzung der Größe der Bäume,wie in den Beispielen in der Anleitung.
Können Sie viel besser (rmse ~ 0.04, $R^2$ > 0.99) durch training einzelner Bäume auf kleine Proben oder beißt als Breiman rief Sie
Da es eine erhebliche Menge an Rauschen in den Trainingsdaten, dieses problem ist wirklich zu glätten, anstatt Verallgemeinerung. Im Allgemeinen Maschinen-Lern-Bedingungen dies erfordert eine stärkere Regularisierung. Für ensemble Lernenden bedeutet dies, trading Kraft für Vielfalt.
Vielfalt der randomForests werden können, erhöhen durch verringern der Anzahl von Kandidaten-feature pro split (
mtry
in R) oder der Ausbildung von jedem Baum (sampsize
in R). Da gibt es nur 1 Eingang Abmaße,mtry
nicht hilft, verlassensampsize
. Dies führt zu einer 3,5 x Verbesserung des RMSE über die default-Einstellungen >6x Verbesserung gegenüber dem verrauschten Trainingsdaten selbst. Da eine erhöhte divresity erhöht sich die Varianz in der Vorhersage der einzelnen Lernenden, die wir auch brauchen, um die Zahl der Bäume zu stabilisieren, ist die ensemble-Vorhersage.kleine Taschen, mehr Bäume :: rmse = 0.04:
Standardeinstellungen :: rmse=0.14:
Fehler aufgrund von Rauschen in der Ausbildung gesetzt :: rmse = 0.25
Den Fehler aufgrund von Rauschen ist natürlich offensichtlich, von
In der Bewertung wird getan gegen die Ausbildung eingestellt, wie es in der ursprünglichen Frage. Da das Problem Glättung eher als Verallgemeinerung, das ist nicht so ungeheuerlich, wie es scheinen mag, aber es ist beruhigend zu sehen, dass aus dem bag die Auswertung zeigt eine ähnliche Genauigkeit:
Meine intuition ist, dass:
Für eine Treppe-Funktion, um eine gute approximator für f(x), möchten Sie genug Schritte auf der x-Achse, aber jeder Schritt sollte genügend Punkte, so dass Ihr Mittelwert eine gute Näherung von f(x) und weniger Probleme mit Rauschen.
So, ich schlage vor, Sie Stimmen die nodesize parameter. Wenn Sie 1 Entscheidung-Baum und N Punkte, und nodesize=n, dann ist Ihre Treppe-Funktion N/n Schritte. n zu klein, bringt overfitting. Ich habe schöne Ergebnisse mit n~30 (RMSE~0.07):
Beachten Sie, dass RMSE kleiner wird wenn man N'=10*N und n'=10*n.