Как построить случайные леса в R с отсутствующими значениями (NA)?
Я хотел бы соответствовать случайной модели леса, но когда я звоню
library(randomForest)
cars$speed[1] <- NA # to simulate missing value
model <- randomForest(speed ~., data=cars)
Я получаю следующую ошибку
Error in na.fail.default(list(speed = c(NA, 4, 7, 7, 8, 9, 10, 10, 10, :
missing values in object
2 ответа:
?randomForest Я должен признаться, что это может быть гораздо более явным об этом.
(хотя, у Бреймана PDF ссылка на в документации явно говорит, что пропущенные значения просто не обрабатываются вообще.)
единственная очевидная подсказка в официальном документация, которую я мог видеть, заключалась в том, что значение по умолчанию для и
na.fail
, что может быть слишком загадочным для новых пользователей.в любом случае, если предикторы нет значения, у вас есть (в основном) два варианта:
- используйте другой инструмент (
rpart
обрабатывает пропущенные значения красиво.)- вменить пропущенные значения
неудивительно, что
randomForest
пакет имеет функцию для этого,rfImpute
. Этот документация по адресу?rfImpute
проходит через основной пример его использования.если только небольшое количество случаев имеют пропущенные значения, вы также можете попробовать установить
na.action = na.omit
просто отбросить эти случаи.и, конечно, этот ответ немного догадывается, что ваша проблема действительно просто имеет отсутствующие значения.
если есть возможность, что пропущенные значения являются информативными, то вы можете ввести пропущенные значения и добавить дополнительные двоичные переменные (с
new.vars<-is.na(your_dataset)
) и проверить, если он снижает ошибку, еслиnew.var
слишком большой набор, чтобы добавить его вyour_dataset
тогда вы можете использовать его в одиночку, выбрать значимые переменные сvarImpPlot
и добавить их вyour_dataset
, вы также можете попробовать добавить одну переменную вyour_dataset
который считает количествоNA
' snew.var <- rowSums(new.vars)
это не Офф-топик ответ, если отсутствует переменные являются информативными, учет которых может привести к увеличению погрешности модели только за счет несовершенной процедуры вменения.
пропущенные значения информативны, тогда они возникают из-за неслучайных причин, особенно часто встречающихся в социальных экспериментах.