library(randomForest)
rf.model <- randomForest(WIN ~ ., data = learn)
Ich möchte ein zufälliges Waldmodell anpassen, erhalte jedoch folgende Fehlermeldung:
Error in na.fail.default(list(WIN = c(2L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, :
missing values in object
Ich habe Datenrahmen mit 16 numerischen Attributen gelernt und WIN ist ein Faktor mit Level 0 1.
r
random-forest
Borut Flis
quelle
quelle
Antworten:
Meine erste Reaktion auf diese Frage war, dass sie nicht viel Forschungsaufwand zeigte, da "jeder" weiß, dass zufällige Wälder nicht mit fehlenden Werten in Prädiktoren umgehen. Aber bei der Überprüfung
?randomForest
muss ich gestehen, dass dies viel expliziter sein könnte.(Obwohl Breimans PDF, auf das in der Dokumentation verwiesen wird, ausdrücklich besagt, dass fehlende Werte einfach überhaupt nicht behandelt werden.)
Der einzige offensichtliche Hinweis in der offiziellen Dokumentation, den ich sehen konnte, war, dass der Standardwert für den
na.action
Parameter istna.fail
, der für neue Benutzer möglicherweise zu kryptisch ist.Wenn Ihre Prädiktoren fehlende Werte haben, haben Sie (im Grunde) zwei Möglichkeiten:
rpart
behandelt fehlende Werte gut.)Es überrascht nicht, dass das
randomForest
Paket eine Funktion hat, um genau dies zu tunrfImpute
. Die Dokumentation unter enthält?rfImpute
ein grundlegendes Beispiel für die Verwendung.Wenn nur eine kleine Anzahl von Fällen fehlende Werte aufweist, können Sie auch versuchen
na.action = na.omit
, diese Fälle einfach zu löschen.Und natürlich ist diese Antwort eine Vermutung, dass Ihr Problem wirklich einfach darin besteht, dass Werte fehlen.
quelle
WIN ~ .
im ersten Argument zum OP bedeutet? Dies ist sicherlich nicht der beste Ort, um die Frage zu stellen, aber ich habe mich gefragt, ob Sie es wissen würden. Vielen Dank.Die zufällige Gesamtstruktur von Breiman, auf der das randomForest-Paket basiert, verarbeitet tatsächlich fehlende Werte in Prädiktoren. Im randomForest-Paket können Sie festlegen
Zunächst wird der Median / Modus für fehlende Werte verwendet, dann wird jedoch eine Gesamtstruktur vergrößert und die Nähe berechnet. Anschließend wird eine Gesamtstruktur mit diesen neu gefüllten Werten usw. iteriert und erstellt. Dies wird in der randomForest- Dokumentation (S. 10) nicht ausführlich erläutert . Es heißt nur
Auf Breimans Homepage finden Sie ein bisschen mehr Informationen
quelle
Wenn die Möglichkeit besteht, dass fehlende Werte informativ sind, können Sie fehlende Werte eingeben und zusätzliche binäre Variablen (mit
new.vars<-is.na(your_dataset)
) hinzufügen und prüfen, ob der Fehler verringert wird. Wenn der Wertnew.var
zu groß ist, um ihn hinzuzufügen, könnenyour_dataset
Sie ihn alleine verwenden und wichtige Variablen mit auswählenvarImpPlot
und fügen Sie sichyour_dataset
, können Sie auch einzelne Variable hinzuzufügen versuchen ,your_dataset
die zählt Anzahl vonNA
‚snew.var <- rowSums(new.vars)
Dies ist keine Off-Topick-Antwort, wenn fehlende Variablen informativ sind und deren Berücksichtigung die Zunahme des Modellfehlers allein aufgrund eines unvollständigen Imputationsverfahrens korrigieren könnte.
Fehlende Werte sind informativ, dann entstehen sie aufgrund nicht zufälliger Ursachen, was besonders in sozialen Experimenten üblich ist.
quelle