Soweit ich gesehen habe, gehen die Meinungen darüber auseinander. Best Practice würde sicherlich die Verwendung von Kreuzvalidierung vorschreiben (insbesondere wenn RFs mit anderen Algorithmen auf demselben Datensatz verglichen werden). Andererseits besagt die ursprüngliche Quelle, dass die Tatsache, dass der OOB-Fehler während des Modelltrainings berechnet wird, als Indikator für die Leistung des Testsatzes ausreicht. Sogar Trevor Hastie sagte kürzlich in einem Gespräch, dass "Random Forests eine kostenlose gegenseitige Validierung ermöglichen". Das ist für mich intuitiv sinnvoll, wenn ich ein RF-basiertes Modell in einem Datensatz trainieren und verbessern möchte.
Kann jemand bitte die Argumente für und gegen die Notwendigkeit einer Kreuzvalidierung mit zufälligen Wäldern darlegen?
quelle
Antworten:
Standardmäßig erfasst der Zufallswald 2/3 der Daten für das Training und die Pause zum Testen auf Regression und fast 70% der Daten für das Training und die Pause zum Testen während der Klassifizierung. Da die Variablenauswahl während jeder Baumaufteilung nach dem Zufallsprinzip ausgewählt wird, ist sie im Gegensatz zu keiner Überanpassung anfällig Andere Modelle. Wenn Sie CV mit nfolds in sklearn verwenden möchten, können Sie dennoch das Konzept des Hold-Out-Sets wie oob_score (out of bag) = True verwenden, das die Modellleistung mit oder ohne CV anzeigt. Auf den Punkt gebracht kann mit oob_score = True mit oder ohne nfolds selbst festgestellt werden, ob die Verwendung von CV für Ihre Daten gut ist. Wenn Ihr Ziel einer bestimmten Verteilung folgt und Sie nicht viele Beobachtungsdaten bei sich haben, gibt die Verwendung von CV keine Ergebnisse viel Verbesserung.
quelle
Ein wesentlicher Unterschied besteht darin, dass durch die Kreuzvalidierung sichergestellt wird, dass alle Proben in den Trainings- und Testsätzen angezeigt werden, sodass 100% Ihrer Daten zu einem bestimmten Zeitpunkt für das Training und zum Testen verwendet werden.
Abhängig von der Größe Ihres Datasets garantiert das Bootstrapping (Sampling mit Ersetzung), das in der zufälligen Gesamtstruktur auftritt, nicht, dass die Aufteilungen, die die Bäume sehen, alle Instanzen enthalten. Wenn Sie genügend Bäume in Ihrem Wald haben, sollte die OOB-Schätzung asymptotisch zum besten OOB-Schätzwert konvergieren.
Die Genauigkeit beider Methoden hängt zu einem gewissen Grad von den Daten ab. Daher ist es möglicherweise ratsam, beide Methoden mit den Daten zu vergleichen, die Sie vor sich haben, und zu prüfen, ob die CV- und RF-OOB-Schätzungen ähnliche Werte ergeben.
Wenn dies nicht der Fall ist, lohnt es sich, weitere Schätzungen der tatsächlichen Fehlerrate vorzunehmen, möglicherweise durch viel höhere Werte von K in CV.
quelle
Ich habe einige Tests mit einem Datensatz von 50k Zeilen durchgeführt
sklearn.RandomForestRegressor
.Ich erhalte signifikant unterschiedliche Werte - ich verwende eine normalisierte Gini für die Metrik - abhängig davon, ob ich
rf.oob_prediction_
(0,2927) oder einen KFold-Lebenslauf (0,3258 für 7-fach und 0,3236 für 3-fach) verwende.In diesem Zusammenhang scheint es Ihnen wichtig zu sein, "insbesondere wenn Sie RFs mit anderen Algorithmen auf demselben Dataset vergleichen", statt sich auf die OOB-Vorhersage zu verlassen, einen manuellen Lebenslauf zu verwenden.
quelle