GUÍA SOBRE TÉCNICAS DE IMPUTACIÓN DE DATOS CON PYTHON

Las personas que trabajan en el campo de la ciencia de datos comprenden la importancia de los datos. La mayoría de los algoritmos de Machine Learning esperan conjuntos de datos completos y limpios sin ningún tipo de ruido o perturbación; desafortunadamente, los conjuntos de datos del mundo real son desordenados, se encuentran en diferentes escalas de medición y siempre existen los conocidos valores faltantes, es por ello que el manejo de datos faltantes se vuelve muy importante para realizar un correcto análisis como científicos de datos.

En este tutorial, descubrirá cómo manejar los datos faltantes para el aprendizaje automático con Python:

  • Seleccionar valores perdidos en su conjunto de datos.
  • Eliminar valores perdidos en su conjunto de datos.
  • Imputar valores perdidos con técnicas de imputación simple, múltiple y de machine learning.

Conjunto de datos a trabajar: Brewer’s Friend Beer Recipes

Este es un conjunto de datos de 75,000 cervezas caseras con más de 176 estilos diferentes. Los registros de cerveza son informados por los usuarios y se clasifican de acuerdo con uno de los 176 estilos diferentes. Estas recetas tienen tanto o tan poco detalle como las proporcionó el usuario, pero hay al menos 5 columnas útiles donde se ingresaron datos para cada una: Original Gravity, Final Gravity, ABV, IBU, and Color:

(1) Cargando librerías necesarias

(2) Cargamos nuestro set de datos a trabajar

(3) Análisis inicial: Análisis Exploratorio de datos

De forma rápida podemos obtener el porcentaje de valores perdidos por variable y analizar qué variables son adecuadas para imputar y cuales se deberían descartar.

Un vistazo inicial nos muestra que existen variables con mucha información faltante como son las variables: MashThickness, PitchRate, PrimaryTemp, PrimingMethod, PrimingAmount. Más adelante se analizará las casuísticas de imputación que se pueden seguir para este tipo de tratamientos.

Ahora se trabajará con el paquete missingno para tratamiento y visualización de datos. Este tutorial no busca profundizar en esta herramienta pero para el que quiera hacerlo les dejo un enlace con mas detalles de este paquete: https://analyticsindiamag.com/tutorial-on-missingno-python-tool-to-visualize-missing-values/

Matrix missing: Mostramos una matriz de calor para visualizar las variables con mayor presencia de valores perdidos. Las líneas blancas indican los valores faltantes en cada columna.

heatmap missing cor: El mapa de calor muestra una correlación positiva con el azul. Cuanto más oscuro sea el tono de azul, mayor será la correlación.

bar missing: Otra forma de visualizar los datos de los valores perdidos es mediante el uso de gráficos de barras. Estas barras muestran los valores que son proporcionales a los datos que no faltan en el conjunto de datos. Junto con eso, también se muestra el número de valores que faltan.

(4) Técnicas de imputación de datos

Hay dos clases amplias de datos faltantes: datos que faltan al azar y datos que faltan no al azar. Al considerar qué hacer con nuestros datos debemos tener esto en cuenta.

4.1. Técnicas de Imputación Univariada

Existen varias técnicas de imputación simple que permite realizar estimaciones acertadas y sin muchas complicaciones.

a) Eliminar valores perdidos

El enfoque más fácil y rápido para un problema de datos faltantes es eliminar las entradas infractoras. Esta es una solución aceptable si estamos seguros de que los datos faltantes en el conjunto de datos faltan al azar, y si el número de puntos de datos a los que tenemos acceso es lo suficientemente alto como para que descartar algunos de ellos no nos haga perder la generalización en los modelos. construimos (para determinar si este es el caso o no, use una curva de aprendizaje).

Se puede observar que este primer método no es muy recomendable porque perdemos casi la totalidad de nuestra información por tratar de conservar todas las variables. En este caso lo mas recomendable es descartar estas variables con gran cantidad de valores perdidos que no aportan a nuestro análisis.

Las variables con gran presencia de valores perdidos son:

MashThickness, PitchRate, PrimaryTemp,PrimingMethod, PrimingAmount,UserId.

b) Métodos de imputación: Media o mediana u otra sustitución estadística de resumen.

El método de imputación más simple es reemplazar los valores perdidos con los valores medios o medianos del conjunto de datos en general, o alguna estadística de resumen similar. Esto tiene la ventaja de ser el enfoque más simple posible y uno que no introduce ningún sesgo indebido en el conjunto de datos.

Seleccionamos la variable ‘MashThickness’ para imputar sus valores perdidos.

4.2. Técnicas de Imputación Multivariada

La imputación simple puede ser muy práctica pero poco útil al no considerar la relación entre las variables. Los conjuntos de datos multivariados son conjuntos de datos que tienen más de dos variables o columnas de características por observación.

IterativeImputer:

En IterativeImpute, cada característica con un valor perdido se usa como una función de otras características con salida conocida y modela la función para imputaciones.

Luego, el mismo proceso se itera en un bucle para algunas iteraciones y en cada paso, se selecciona una columna de características como salida y y otras columnas de características se tratan como entradas X , luego se ajusta un regresor en (X, y) para y conocidas y se utiliza para predecir los valores perdidos de y . El mismo proceso se repite para cada columna de características en un ciclo y se toma el promedio de todos los valores de regresión múltiple para imputar los valores faltantes para los puntos de datos.

Se consideran las variables: BoilGravity MashThickness PitchRate PrimaryTemp

Como ideales para imputación por estar en rangos aceptables de pérdida.

4.3. Técnicas de Imputación con Modelos de Machine Learning

Podemos corregir los valores faltantes aplicando el aprendizaje automático a nuestro conjunto de datos. Podemos considerar una columna con datos faltantes como nuestra variable de destino, y columnas existentes con datos completos como nuestras variables predictoras, entonces podemos construir un modelo de aprendizaje automático utilizando registros completos como nuestros conjuntos de datos de entrenamiento y prueba y los registros con datos incompletos como nuestra generalización.

a) KNNImputer:

KNNImputer es una técnica de imputación de datos multivariantes que se utiliza para completar los valores faltantes mediante el enfoque K-Neighbors Neighbors . Cada valor faltante se completa con el valor medio de los n vecinos más cercanos encontrados en el conjunto de entrenamiento, ponderados o no ponderados.

Si a una muestra le falta más de una característica, entonces el vecino para esa muestra puede ser diferente y si el número de vecinos es menor que n_neighbour especificado, entonces no hay una distancia definida en el conjunto de entrenamiento , el promedio de ese conjunto de entrenamiento se usa durante la imputación.

Se consideran las variables: BoilGravity MashThickness PitchRate PrimaryTemp como ideales para imputación por estar en rangos aceptables de pérdida.

Realizamos la imputación multivariada por K-Neighbors Neighbors:

b) MissForest:

Es otra técnica que se utiliza para completar los valores faltantes utilizando Random Forest de forma iterada. La columna candidata se selecciona del conjunto de todas las columnas que tienen el menor número de valores perdidos .

En el primer paso, todas las demás columnas, es decir, las columnas no candidatas que tienen valores perdidos, se rellenan con la media de las columnas numéricas y el modo de las columnas categóricas y, a continuación, el imputador ajusta un modelo de bosque aleatorio con las columnas candidatas como variable de resultado ( variable de destino) y las columnas restantes como variables independientes y luego llenando los valores faltantes en la columna candidata utilizando las predicciones del modelo de bosque aleatorio ajustado. Luego, el imputador avanza y se selecciona la siguiente columna candidata con el segundo menor número de valores perdidos y el proceso se repite para cada columna con los valores perdidos.

Finalmente podemos realizar un análisis descriptivo para comparar las variables originales vs las variables imputadas para validar que las distribuciones se mantienen.

Descarga el código aquí:

https://github.com/cesarqb/exploratory-data-analysis

Fuentes utilizadas: