Eu tenho um bom randomForest
modelo de classificação que gostaria de usar em um aplicativo que prevê a classe de um novo caso. O novo caso tem inevitavelmente valores ausentes. Prever não funcionará como tal para NAs. Como devo fazer isso então?
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>
Eu tentei missForest
. Combinei os dados originais e o novo caso, agitei com eles missForest
e obtive valores imputados para NAs no meu novo caso. Computação muito pesada, no entanto.
data.imp <- missForest(data.with.na)
Mas deve haver uma maneira de usar o modelo rf para prever um novo caso com valores ausentes, certo?
randomForest
pacote em R possui apenas o método de imputação que você descreveu. Se você deseja permanecer em um ambiente semelhante,gbm
possui um método um pouco mais suave de lidar com valores ausentes em novos dados (não é perfeito, mas é útil).party
pacote funciona com NAs no conjunto de testes? Não encontrei vestígios de imputação emparty
manuais ou exemplos.Respostas:
Você não tem escolha a não ser imputar os valores ou alterar modelos. Uma boa opção pode ser negativa no pacote Hmisc. Eu acho que é menos pesado que o rfimpute, que é o que está prendendo você, primeiro exemplo de pacote (existem outros):
Você mencionou que tem muitas observações novas que têm valores ausentes nas variáveis independentes. Embora você tenha muitos casos como esse, se para cada nova observação houver apenas uma falta em uma ou duas de suas variáveis e sua quantidade de variáveis não for pequena, talvez apenas preencha os buracos com uma mediana ou média (eles são contínuos?) poderia trabalhar.
Outra coisa que poderia ser interessante é fazer uma análise de importância variável menor. A implementação da floresta aleatória R calcula duas medidas de importância e respectivas plotagens:
E você pode brincar apenas incluindo variáveis "importantes" no treinamento do modelo, até que a precisão da previsão não seja a única afetada em comparação com o "modelo completo". Talvez você mantenha variáveis com um número baixo de erros. Isso pode ajudar a reduzir o tamanho do seu problema.
fonte