Die randomForest-Implementierung erlaubt keine Stichproben über die Anzahl der Beobachtungen hinaus, selbst wenn Stichproben mit Ersatz erstellt werden. Warum ist das?
Funktioniert gut:
rf <- randomForest(Species ~ ., iris, sampsize=c(1, 1, 1), replace=TRUE)
rf <- randomForest(Species ~ ., iris, sampsize=3, replace=TRUE)
Was ich machen will; was ich vorhabe zu tun:
rf <- randomForest(Species ~ ., iris, sampsize=c(51, 1, 1), replace=TRUE)
Error in randomForest.default(m, y, ...) :
sampsize can not be larger than class frequency
Ähnlicher Fehler ohne geschichtete Stichprobe:
rf <- randomForest(Species ~ ., iris, sampsize=151, replace=TRUE)
Error in randomForest.default(m, y, ...) : sampsize too large
Da ich erwartet hatte, dass die Methode in beiden Fällen Bootstrap-Beispiele nimmt, wenn replace = TRUE angegeben wird, habe ich dieses Limit nicht erwartet.
Mein Ziel ist es, dies mit der Option der geschichteten Stichprobe zu verwenden, um eine ausreichend große Stichprobe aus einer relativ seltenen Klasse zu ziehen.
Antworten:
Dies beantwortet nicht den Grund , aber um dies zu umgehen, kann man die Daten für die seltene Klasse in den Trainingsdaten duplizieren und eine geschichtete Stichprobe des Ergebnisses ziehen.
Zwei Nachteile dieses Ansatzes im Vergleich zu einer "natürlichen" Überabtastung:
aber es wird einem erlauben, den Wald mit den gewünschten Klassenverhältnissen zu bauen.
quelle
Ich habe genau die gleiche Frage und habe diese im Changelog für randomForest gefunden :
Änderungen in 4.1-0:
Das manuelle Setzen von replace = TRUE scheint dies ebenfalls nicht zu überschreiben.
quelle
rf <- randomForest(Species ~ ., iris, sampsize=c(51, 1, 1), strata=iris$Species, replace=TRUE)