Imputation avec des forêts aléatoires

8

J'ai deux questions sur l'utilisation de la forêt aléatoire (spécifiquement randomForest dans R) pour l'imputation des valeurs manquantes (dans l'espace des prédicteurs).

1) Comment fonctionne l'algorithme d'imputation - en particulier comment et pourquoi l'étiquette de classe est-elle requise pour l'imputation? la matrice de proximité qui sert à pondérer la valeur moyenne pour imputer une valeur manquante est-elle définie séparément par classe?

2) Si l'étiquette de classe est nécessaire pour imputer des valeurs manquantes - comment peut-elle être utilisée pour imputer des valeurs manquantes pour de nouvelles données que vous essayez de prédire?

B_Miner
la source

Réponses:

8

L'idée de base est de remplacer rapidement les données manquantes, puis d'améliorer de manière itérative l'imputation manquante à l'aide de la proximité. Pour travailler avec des données sans étiquette, répliquez simplement les données avec toutes les étiquettes, puis traitez-les comme des données étiquetées.

La fraction d'arbres pour laquelle une paire d'observations partage un nœud terminal donne la matrice de proximité et utilise donc explicitement l'étiquette de classe.

Ensemble d'entraînement:

  1. Remplacez les valeurs manquantes par la valeur moyenne.
  2. Répétez jusqu'à ce que vous soyez satisfait:

    une. En utilisant les valeurs imputées calculées jusqu'à présent, entraînez une forêt aléatoire.

    b. Calculez la matrice de proximité.

    c. En utilisant la proximité comme poids, imputez les valeurs manquantes comme moyenne pondérée des valeurs non manquantes.

Ensemble d'essai:

  1. S'il existe des étiquettes, utilisez l'imputation dérivée des données de test.
  2. Si les données ne sont pas étiquetées, répliquez l'ensemble de test avec une copie pour chaque étiquette de classe et procédez comme pour les données étiquetées.

Ici, la moyenne (pondérée) fait référence à la médiane (pondérée) pour les variables numériques et au mode (pondéré) pour les variables catégorielles. 4-6 itérations sont recommandées dans les références.

Documentation R (pdf) , Breiman's manual v4.0 (pdf) , Breiman's RF page

cohoz
la source
2
Je serais intéressé à en savoir plus sur la possibilité d'adapter cet algorithme pour l'imputation multiple et s'il aurait la bonne quantité de variabilité et tiendrait compte de l'incertitude du modèle d'imputation.
Frank Harrell
1
Frank, d'après sa description, je doute qu'il y aurait suffisamment de variabilité. Dessiner un deck chaud à partir d'une classe terminale peut faire l'affaire. Si l'algorithme de croissance des arbres a tendance à sur-ajuster, la variabilité serait toujours supprimée, mais pas autant que lorsque vous utilisez une moyenne conditionnelle ou un quantile conditionnel. Encore une fois, c'est mon intuition concernant le fonctionnement des méthodes d'imputation, en général.
StasK
1
Cohoz, merci cela confirme ce que j'avais appris depuis. Le problème est la forêt aléatoire en cours de construction à l'aide de la variable cible. Il existe un package missForest en R avec du papier qui peut être utilisé pour l'imputation non supervisée: ncbi.nlm.nih.gov/pubmed/22039212
B_Miner
Si je sklearn.ensemble.RandomForestClassifierdevais demander, ce processus concerne-t-il les données de formation ou va-t-il simplement l'ignorer et je dois le faire moi-même?
Abhishta Gatya
3

J'ai essayé d'utiliser Random Forest pour l'imputation multiple dans MICE pour gérer les données manquantes dans l'analyse de survie. J'ai utilisé le bootstrap pour tenir compte de la variabilité d'échantillonnage dans les modèles d'imputation. J'ai trouvé que Random Forest MICE fonctionnait mieux que MICE paramétrique lorsqu'il y avait des interactions entre des variables prédictives qui n'étaient pas incluses dans le modèle d'imputation.

Le package CALIBERrfimpute fournit une fonction pour l'imputation de forêts aléatoires dans MICE:
http://cran.r-project.org/web/packages/CALIBERrfimpute/index.html

Ceci est un article décrivant les tests de la méthode sur des données simulées et un véritable ensemble de données épidémiologiques:
http://dx.doi.org/10.1093/aje/kwt312

user37364
la source
3
Bienvenue sur le site, @ user37364. Merci pour ces liens. Cela vous dérangerait de les développer un peu, en cas de linkrot & afin que les futurs lecteurs puissent juger avant de cliquer s'ils veulent les poursuivre?
gung - Rétablir Monica
Salut @ user37364! J'ai vu le document que vous présentez, cependant, je ne suis pas en mesure d'appliquer une forêt aléatoire avec des souris dans mon ensemble de données. J'ai posté une question ici: stackoverflow.com/questions/24239595/… . Si vous avez de l'expérience avec MICE, avez-vous une idée de comment résoudre ces erreurs? Merci
psoares
Bonjour, je viens de tomber sur votre papier, puis sur ce fil. Comment la méthode a-t-elle résisté au cours de la dernière année et demie? Des rides découvertes?
generic_user