У меня есть прекрасная randomForest
классификационная модель, которую я хотел бы использовать в приложении, которое предсказывает класс нового случая. В новом случае неизбежно отсутствуют значения. Прогноз не будет работать как таковой для АН. Как мне тогда это сделать?
data(iris)
# create first the new case with missing values
na.row<-45
na.col<-c(3,5)
case.na<-iris[na.row,]
case.na[,na.col]<-NA
iris.rf <- randomForest(Species ~ ., data=iris[-na.row,])
# print(iris.rf)
myrf.pred <- predict(iris.rf, case.na[-5], type="response")
myrf.pred
[1] <NA>
Я попробовал missForest
. Я объединил исходные данные и новый случай, встряхнул их missForest
и получил вмененные значения для NA в моем новом случае. Слишком тяжелые вычисления, хотя.
data.imp <- missForest(data.with.na)
Но должен быть способ использовать rf-модель для предсказания нового случая с отсутствующими значениями, верно?
randomForest
пакет в R имеет только метод импутации, который вы описали. Если вы хотите остаться в аналогичной среде,gbm
есть несколько более плавный метод обработки пропущенных значений в новых данных (это не идеально, но полезно).party
пакет работает с NA в тестовом наборе? Я не мог найти следов вменения вparty
руководствах или примерах.Ответы:
У вас нет выбора, кроме как вменять значения или менять модели. Хороший выбор может быть хорошим решением в пакете Hmisc. Я думаю, что он менее тяжелый, чем rfimpute, который вас задерживает, первый пример пакета (есть и другие):
Вы упоминаете, что у вас есть много новых наблюдений, в которых отсутствуют значения для независимых переменных. Несмотря на то, что у вас есть много подобных случаев, если для каждого нового наблюдения есть только пропуски в одной или двух его переменных, а количество переменных не является крошечным, возможно, просто заполняет дыры медианой или средним (они непрерывны?) может работать
Другая вещь, которая может быть интересной, - это провести анализ незначительной переменной важности. Реализация случайного леса R вычисляет два показателя важности и соответствующие графики:
И вы можете просто поиграть с «важными» переменными в обучении модели, пока точность прогноза не окажет существенного влияния по сравнению с «полной моделью». Может быть, вы храните переменные с небольшим количеством пропусков. Это может помочь вам уменьшить размер вашей проблемы.
источник