Ich experimentiere mit R und dem randomForest-Paket, ich habe Erfahrung mit SVM und Neuronalen Netzen. Mein erster Test ist, zu versuchen und zurückzufahren: sin (x) + gaußsches Rauschen. Mit Neural Nets und SVM erhalte ich eine "relativ" nette Näherung von sin (x), so dass das Rauschen herausgefiltert wird und der Lernalgorithmus nicht übersteuert. (für anständige Parameter) Wenn ich das selbe auf RandomForest mache, habe ich eine komplett überarbeitete Lösung. Ich benutze einfach (R 2.14.0, versuchte auch auf 2.14.1, nur für den Fall):
%Vor%Ich denke, es gibt eine magische Option in randomForest, damit es richtig funktioniert, ich habe ein paar ausprobiert, aber ich habe nicht den richtigen Hebel zum Ziehen gefunden ...
Sie können maxnodes
verwenden, um die Größe der Bäume zu begrenzen,
wie in den Beispielen im Handbuch.
Sie können viel besser machen (rmse ~ 0.04, $ R ^ 2 $ & gt; 0.99), indem Sie einzelne Bäume an kleinen Stichproben trainieren oder beißt , wie Breiman sie nannte
Da in den Trainingsdaten eine erhebliche Menge an Rauschen vorhanden ist, geht es bei diesem Problem eher um Glättung als um Verallgemeinerung. Im Allgemeinen erfordert das maschinelle Lernen eine zunehmende Regularisierung. Für den Ensemble-Lernenden bedeutet dies, Stärke für Diversität zu handeln.
Die Vielfalt der randomForests kann sich erhöhen, indem die Anzahl der Kandidaten-Features pro Split ( mtry
in R) oder der Trainingssatz jedes Baums ( sampsize
in R) reduziert wird. Da es nur 1 Eingabe-Dimesionen gibt, hilft mtry
nicht dabei, sampsize
zu lassen. Dies führt zu einer 3,5-fachen Verbesserung von RMSE gegenüber den Standardeinstellungen und zu einer 6-fachen Verbesserung gegenüber den geräuschvollen Trainingsdaten selbst. Da vermehrte Trennschärfe eine erhöhte Varianz in der Vorhersage der einzelnen Lernenden bedeutet, müssen wir auch die Anzahl der Bäume erhöhen, um die Ensemble-Vorhersage zu stabilisieren.
kleine Taschen, mehr Bäume :: rmse = 0.04 :
%Vor%Standardeinstellungen :: rmse = 0.14 :
%Vor%Fehler aufgrund von Rauschen im Trainingssatz :: rmse = 0.25
%Vor%Der Fehler aufgrund von Rauschen ist natürlich aus
ersichtlich %Vor%Im obigen Fall wird die Bewertung gegen das Trainingssatz durchgeführt, wie es in der ursprünglichen Frage ist. Da das Problem eher eine Glättung als eine Verallgemeinerung ist, ist dies nicht so ungeheuerlich, wie es scheinen mag, aber es ist beruhigend zu sehen, dass die Auswertung von Taschen eine ähnliche Genauigkeit zeigt:
%Vor%Meine Intuition ist das:
Damit eine Treppenhausfunktion ein guter Approximator von f (x) ist, wollen Sie genügend Stufen auf der x-Achse, aber jeder Schritt sollte genügend Punkte enthalten, so dass ihr Mittelwert eine gute Näherung von f (x) und weniger beeinflusst ist durch Lärm.
Ich schlage also vor, dass Sie den Knotengröße Parameter tunen. Wenn Sie 1 Entscheidungsbaum und N Punkte und Knotengröße = n haben, dann hat Ihre Treppenhausfunktion N / n Schritte. n zu klein bringt Überanpassung. Ich habe schöne Ergebnisse mit n ~ 30 (RMSE ~ 0.07):
%Vor%Beachten Sie, dass RMSE kleiner wird, wenn Sie N '= 10 * N und n' = 10 * n nehmen.
Tags und Links r random-forest regression