Как построить случайные леса в 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 64

2 ответа:

?randomForest Я должен признаться, что это может быть гораздо более явным об этом.

(хотя, у Бреймана PDF ссылка на в документации явно говорит, что пропущенные значения просто не обрабатываются вообще.)

единственная очевидная подсказка в официальном документация, которую я мог видеть, заключалась в том, что значение по умолчанию для и na.fail, что может быть слишком загадочным для новых пользователей.

в любом случае, если предикторы нет значения, у вас есть (в основном) два варианта:

  1. используйте другой инструмент (rpart обрабатывает пропущенные значения красиво.)
  2. вменить пропущенные значения

неудивительно, что randomForest пакет имеет функцию для этого,rfImpute. Этот документация по адресу ?rfImpute проходит через основной пример его использования.

если только небольшое количество случаев имеют пропущенные значения, вы также можете попробовать установить na.action = na.omit просто отбросить эти случаи.

и, конечно, этот ответ немного догадывается, что ваша проблема действительно просто имеет отсутствующие значения.

если есть возможность, что пропущенные значения являются информативными, то вы можете ввести пропущенные значения и добавить дополнительные двоичные переменные (с new.vars<-is.na(your_dataset) ) и проверить, если он снижает ошибку, если new.var слишком большой набор, чтобы добавить его в your_dataset тогда вы можете использовать его в одиночку, выбрать значимые переменные с varImpPlot и добавить их в your_dataset, вы также можете попробовать добавить одну переменную в your_dataset который считает количество NA ' s new.var <- rowSums(new.vars)

это не Офф-топик ответ, если отсутствует переменные являются информативными, учет которых может привести к увеличению погрешности модели только за счет несовершенной процедуры вменения.

пропущенные значения информативны, тогда они возникают из-за неслучайных причин, особенно часто встречающихся в социальных экспериментах.