J'ai un randomForest
modèle de classification fine que j'aimerais utiliser dans une application qui prédit la classe d'un nouveau cas. Le nouveau cas a inévitablement des valeurs manquantes. Predict ne fonctionnera pas comme tel pour les AN. Comment dois-je faire alors?
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>
J'ai essayé missForest
. J'ai combiné les données d'origine et le nouveau cas, je les ai secouées missForest
et j'ai obtenu des valeurs imputées pour les NA dans mon nouveau cas. Informatique trop lourde cependant.
data.imp <- missForest(data.with.na)
Mais il doit y avoir un moyen d'utiliser le modèle rf pour prédire un nouveau cas avec des valeurs manquantes, non?
randomForest
package de R ne dispose que de la méthode d'imputation que vous avez décrite. Si vous voulez rester dans un environnement similaire,gbm
a une méthode un peu plus fluide pour gérer les valeurs manquantes dans les nouvelles données (ce n'est pas parfait, mais c'est utile).party
package avec les NA dans l'ensemble de test? Je n'ai trouvé aucune trace d'imputation dans desparty
manuels ou des exemples.Réponses:
Vous n'avez pas d'autre choix que d'imputer les valeurs ou de changer de modèle. Un bon choix pourrait être aregImpute dans le paquet Hmisc. Je pense que c'est moins lourd que rfimpute qui est ce qui vous retient, premier exemple de package (il y en a d'autres):
Vous mentionnez que de nombreuses nouvelles observations ont des valeurs manquantes sur les variables indépendantes. Même si vous avez de nombreux cas comme celui-ci, si pour chaque nouvelle observation il n'y a que des lacunes dans une ou deux de ses variables et que votre quantité de variables n'est pas minuscule, peut-être simplement en remplissant les trous avec une médiane ou une moyenne (sont-ils continus?) pourrait fonctionner.
Une autre chose qui pourrait être intéressante est de faire une analyse d'importance variable mineure. L'implémentation aléatoire de la forêt R calcule deux mesures d'importance et des parcelles respectives:
Et vous pouvez jouer avec l'inclusion de variables "importantes" dans la formation du modèle, jusqu'à ce que la précision de la prédiction ne soit pas autant affectée par rapport au "modèle complet". Peut-être que vous conservez des variables avec un faible nombre de manquements. Cela pourrait vous aider à réduire la taille de votre problème.
la source