RandomForest für die Regression in R

8

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 ...

    
user1206729 13.02.2012, 12:32
quelle

3 Antworten

3

Sie können maxnodes verwenden, um die Größe der Bäume zu begrenzen, wie in den Beispielen im Handbuch.

%Vor%     
Vincent Zoonekynd 13.02.2012 12:50
quelle
1

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%     
Daniel Mahler 29.03.2016 23:24
quelle
0

Meine Intuition ist das:

  • Wenn Sie einen einfachen Entscheidungsbaum für eine 1-dimensionale Kurve f (x) hätten, wäre das gleichbedeutend mit einer Treppenfunktion (nicht unbedingt mit gleich beabstandeten Sprüngen)
  • mit zufälligen Wäldern werden Sie eine lineare Kombination von Treppenhausfunktionen machen

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.

    
fabiob 13.10.2017 11:31
quelle

Tags und Links