Wie vermeide ich eine Überanpassung in zufälligen Wäldern?


11
  1. Ich möchte eine Überanpassung in zufälligen Wäldern vermeiden. In diesem Zusammenhang beabsichtige ich, mtry, nodeize und maxnodes usw. zu verwenden. Können Sie mir bitte bei der Auswahl der Werte für diese Parameter helfen? Ich benutze R.

  2. Wenn möglich, teilen Sie mir bitte auch mit, wie ich die k-fache Kreuzvalidierung für zufällige Gesamtstrukturen (in R) verwenden kann.

Antworten:


7

Im Vergleich zu anderen Modellen ist es weniger wahrscheinlich, dass zufällige Wälder überanpassen, aber es ist immer noch etwas, das Sie explizit vermeiden möchten. Das Optimieren von Modellparametern ist definitiv ein Element, um eine Überanpassung zu vermeiden, aber es ist nicht das einzige. Tatsächlich würde ich sagen, dass Ihre Trainingsfunktionen eher zu einer Überanpassung als zu Modellparametern führen, insbesondere bei zufälligen Wäldern. Ich denke, der Schlüssel ist wirklich eine zuverlässige Methode zur Bewertung Ihres Modells, um mehr als alles andere auf Überanpassung zu prüfen, was uns zu Ihrer zweiten Frage bringt.

Wie oben erwähnt, können Sie durch Ausführen einer Kreuzvalidierung eine Überanpassung vermeiden. Die Auswahl Ihres besten Modells basierend auf den CV-Ergebnissen führt zu einem Modell, das nicht überpasst, was bei einem Fehler aus der Tasche nicht unbedingt der Fall ist. Der einfachste Weg, CV in R auszuführen, ist mit dem caretPaket. Ein einfaches Beispiel ist unten:

> library(caret)
> 
> data(iris)
> 
> tr <- trainControl(method = "cv", number = 5)
> 
> train(Species ~ .,data=iris,method="rf",trControl= tr)
Random Forest 

150 samples
  4 predictor
  3 classes: 'setosa', 'versicolor', 'virginica' 

No pre-processing
Resampling: Cross-Validated (5 fold) 

Summary of sample sizes: 120, 120, 120, 120, 120 

Resampling results across tuning parameters:

  mtry  Accuracy  Kappa  Accuracy SD  Kappa SD  
  2     0.96      0.94   0.04346135   0.06519202
  3     0.96      0.94   0.04346135   0.06519202
  4     0.96      0.94   0.04346135   0.06519202

Accuracy was used to select the optimal model using  the largest value.
The final value used for the model was mtry = 2. 

Vielen Dank für die Antwort und den Rat. Möchten Sie nur wissen, wie unterschiedlich die Verwendung eines Caret-Pakets für die Funktionsauswahl im Vergleich zur Auswahl wichtiger Variablen mithilfe des randomForest-Algorithmus ist?
Arun

Das klingt nach einer anderen Frage - die Unterschiede sind groß, da Sie beispielsweise die Auswahl rekursiver Features mit einem beliebigen Algorithmus Ihrer Wahl in Caret ausführen.
David

@ David Was meinst du mit "was nicht unbedingt der Fall ist für so etwas wie einen Fehler aus der Tasche"? Meinen Sie damit, dass eine Schätzung aus der Tasche kein guter Weg ist, um eine Überanpassung zu vermeiden?
Pierre

5

@ xof6 ist insofern richtig, als je mehr Tiefe das Modell hat, desto mehr neigt es dazu, sich anzupassen, aber ich wollte einige weitere Parameter hinzufügen, die für Sie nützlich sein könnten. Ich weiß nicht, welches Paket Sie mit R verwenden, und ich bin mit R überhaupt nicht vertraut, aber ich denke, dass dort Gegenstücke dieser Parameter implementiert sein müssen.

Anzahl der Bäume - Je größer diese Anzahl, desto weniger wahrscheinlich ist es, dass sich der Wald überpasst. Dies bedeutet, dass Sie, da jeder Entscheidungsbaum einen Aspekt der Trainingsdaten lernt, sozusagen mehr Optionen zur Auswahl haben. Anzahl der Features - Diese Anzahl gibt an, wie viele Features jeder einzelne Baum lernt. Wenn diese Zahl wächst, werden die Bäume immer komplizierter, daher lernen sie Muster, die möglicherweise nicht in den Testdaten enthalten sind. Es wird einige Experimente erfordern, um den richtigen Wert zu finden, aber dies ist maschinelles Lernen. Experimentieren Sie auch mit der allgemeinen Tiefe, wie bereits erwähnt!


4

Hier ist ein netter Link dazu auf stackexchange /stats/111968/random-forest-how-to-handle-overfitting . Meine allgemeine Erfahrung ist jedoch, dass das Modell umso mehr dazu neigt, je tiefer es ist überanpassen.


Dies ist mit einem einzelnen Baumklassifikator sinnvoll. In diesen Foren habe ich jedoch gelesen, dass zufällige Wälder vor Überanpassung geschützt sind und dass Bäume vollständig wachsen sollten (dh Knotengröße = 1 für die Klassifizierung).
Seanosapien

0

Ich mtrynehme immer ab, bis der Fehler im Zugdatensatz zunimmt, dann verkleinere ich die Knotengröße und -tiefe, bis der Unterschied zwischen dem Fehler im Zug und dem Datensatzstopp abnimmt

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.