Tratamiento de datos perdidos (Imputación mediante Machine Learning MissForest)
Imputación mediante algoritmo de Machine Learning
missForest es un algoritmo de imputación basado en el algoritmo de Machine Learning Random Forest (package missForest en R) que maneja tanto variables cuantitativas como cualitativas sin transformaciones previas. Empieza imputando los datos perdidos con media/moda y luego, variable a variable, entrena un bosque con las filas observadas y predice las celdas faltantes. Repite este ciclo de forma iterativa hasta que la mejora entre iteraciones deja de ser relevante o se alcanza un número máximo de iteraciones. A partir de la segunda vuelta, los bosques se entrenan sobre datos progresivamente mejor imputados, lo que mejora la calidad de las predicciones para las variables restantes.
Algunas ventajas de este algoritmo son:
Se puede aplicar tanto a variables cuantitativas como cualitativas.
No necesita prepocesado de los datos.
Es robusto al ruido ya que atenúa predictores débiles/irrelevantes.
No asume linealidad y port tanto capta la no linealidad e interacciones entre variables.
Escala a alta dimensionalidad (p≫n) algo que pasa mucho en ciencia de datos.
Algunas desventajas son:
Tiempo computacional es elevado y crece con el número de observaciones, predictores y porcentaje de celdas con datos perdidos.
Tiene poca interpretabilidad ya que hereda la “caja negra” del Random Forest.
No genera un “modelo” final reutilizable y por tanto hay que re-ejecutar el algoritmo cada vez que se necesite imputar, lo que puede ser un problema.
Evaluación mediante métrica OOB (interna del algoritmo)
missForest devuelve un error OOB (out-of-bag) qusando las muestras no usadas para entrenar cada árbol. Este error mide cómo de bien predicen los bosques sin necesidad de un conjunto externo de validación.
Para las variables numéricas se mide el NRMSE (Normalized Root Mean Square Error)
donde S es el número de celdas evaluadas (aquellas con valor real conocido) y luego se normaliza dividiendo por la desviación estándar de los valores reales (para quedar sin unidades y ser comparable entre variables):
.
Interpretación: cuanto más pequeño es este valor mejor, siendo el 0 la imputación perfecta.
Para las variables categóricas se midel el PFC (Percentage Falsely Classified) que es la proporción mal clasificada:
De nuevo, cuanto más bajo mejor, siendo 0 la clasificación perfecta.
Si usas variablewise = TRUE obtienes el error por cada variable con NA (muy útil para detectar variables problemáticas).
Ejemplo
Vamos a utilizar los datos de airquality de R que son datos de mediciones de la calidad del aire medidos en EEUU que hemos visto en la imputación con MICE:
Se ejecuta el algoritmo de forma muy sencilla con la función missForest()
Nos da por un lado la base de datos imputada y por otro lado los errores OOB:
Como todas las variables son continuas, sólo nos muestra el error NRMSE, para poder ver los errores propios de cada variable hay que usar la opción variablewise = TRUE . Esta opción nos da simplemente el MSE, habrá que dividirla por la desviación típica para hacerla comparable entre variables
En este caso, podemos ver el error individual por variable siendo la variable Ozone la que menor valor tiene y la de Solar.R la que peor.
Comparando gráficamente:

Todas las imputaciones se asemejan a la distribución original de datos.
Last updated
