Imputación con bosques al azar


8

Tengo dos preguntas sobre el uso de bosque aleatorio (específicamente randomForest en R) para la imputación de valor faltante (en el espacio del predictor).

1) ¿Cómo funciona el algoritmo de imputación, específicamente cómo y por qué se requiere la etiqueta de clase para la imputación? ¿Es la matriz de proximidad que sirve para ponderar el valor promedio para imputar un valor perdido definido por separado por clase?

2) Si se necesita la etiqueta de clase para imputar valores perdidos, ¿cómo se puede usar para imputar valores perdidos para los nuevos datos que está intentando predecir?

Respuestas:


8

La idea básica es hacer un reemplazo rápido de los datos faltantes y luego mejorar iterativamente la imputación faltante utilizando la proximidad. Para trabajar con datos sin etiquetar, simplemente replique los datos con todas las etiquetas y luego trátelos como datos etiquetados.

La fracción de árboles para la cual un par de observaciones comparten un nodo terminal da la matriz de proximidad, y de manera explícita usa la etiqueta de clase.

Conjunto de entrenamiento:

  1. Reemplace los valores faltantes por el valor promedio.
  2. Repita hasta que esté satisfecho:

    a. Usando valores imputados calculados hasta ahora, entrene un bosque aleatorio.

    si. Calcule la matriz de proximidad.

    C. Usando la proximidad como el peso, impute los valores perdidos como el promedio ponderado de los valores no perdidos.

Equipo de prueba:

  1. Si existen etiquetas, use la imputación derivada de los datos de prueba.
  2. Si los datos no están etiquetados, replique el conjunto de prueba con una copia para cada etiqueta de clase y proceda como con los datos etiquetados.

Aquí, el promedio (ponderado) se refiere a la mediana (ponderada) para las variables numéricas y el modo (ponderado) para las variables categóricas. Se recomiendan 4-6 iteraciones en las referencias.

Documentación R (pdf) , manual de Breiman v4.0 (pdf) , página RF de Breiman


2
Me interesaría saber más acerca de si este algoritmo se puede adaptar para la imputación múltiple, y si tendría la cantidad adecuada de variabilidad y explicaría la incertidumbre del modelo de imputación.
Frank Harrell

1
Frank, por su descripción, dudo que tenga suficiente variabilidad. Dibujar un mazo caliente de una clase terminal puede ser el truco. Si el algoritmo de crecimiento de árboles tiende a sobreajustar, la variabilidad aún se suprimiría, pero no tanto como cuando se usa una media condicional o un cuantil condicional. Nuevamente, ese es mi instinto respecto a cómo funcionan los métodos de imputación, en general.
StasK

1
Cohoz, gracias, esto confirma lo que había aprendido desde entonces. El problema es el bosque aleatorio que se construye utilizando la variable objetivo. Hay un paquete missForest en R con papel que se puede usar para la imputación sin supervisión: ncbi.nlm.nih.gov/pubmed/22039212
B_Miner

Si tuviera que preguntar, ¿se sklearn.ensemble.RandomForestClassifierprocesa esto en los datos de entrenamiento o simplemente lo ignoraré y tengo que hacerlo yo mismo?
Abhishta Gatya

3

He intentado usar Random Forest para la imputación múltiple en MICE para manejar los datos faltantes en el análisis de supervivencia. Usé bootstrapping para explicar la variabilidad del muestreo en los modelos de imputación. Descubrí que Random Forest MICE funcionó mejor que MICE paramétrico cuando hubo interacciones entre variables predictoras que no se incluyeron en el modelo de imputación.

El paquete CALIBRErfimpute proporciona una función para la imputación de bosque aleatorio en MICE:
http://cran.r-project.org/web/packages/CALIBERrfimpute/index.html

Este es un artículo que describe las pruebas del método en datos simulados y un conjunto de datos epidemiológicos reales:
http://dx.doi.org/10.1093/aje/kwt312


3
Bienvenido al sitio, @ user37364. Gracias por estos enlaces. ¿Te importaría profundizar un poco en ellos, en caso de linkrot y para que los futuros lectores puedan juzgar antes de hacer clic si quieren perseguirlos?
gung - Restablece a Monica

Hola @ user37364! He visto el documento que presenta, sin embargo, no puedo aplicar bosque aleatorio con ratones en mi conjunto de datos. Publiqué una pregunta aquí: stackoverflow.com/questions/24239595/… . Si tiene experiencia con MICE, ¿tiene alguna idea de cómo resolver estos errores? Gracias
psoares

Hola, acabo de encontrar tu papel, y luego este hilo. ¿Cómo se ha mantenido el método durante el último año y medio? ¿Alguna arruga descubierta?
generic_user
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.