Saltar al contenido

Agregar banderas binarias para los valores perdidos para el aprendizaje de la máquina

20 de julio de 2020

Los valores perdidos pueden causar problemas al modelar la clasificación y problemas de predicción de regresión con los algoritmos de aprendizaje de la máquina.

Un enfoque común consiste en sustituir los valores que faltan por una estadística calculada, como la media de la columna. Esto permite modelar el conjunto de datos según lo normal, pero no da ninguna indicación al modelo de que la fila original contenía valores perdidos.

Un enfoque para abordar esta cuestión consiste en incluir características adicionales de entrada de indicadores binarios que indiquen si una fila o una columna contiene un valor que falta y que se ha imputado. Esta información adicional puede o no ser útil al modelo para predecir el valor objetivo.

En este tutorial, descubrirá cómo añadir banderas binarias para los valores perdidos para el modelaje.

Después de completar este tutorial, lo sabrás:

  • Cómo cargar y evaluar modelos con imputación estadística en un conjunto de datos de clasificación con valores perdidos.
  • Cómo añadir una bandera que indique si una fila tiene un valor faltante más y evaluar los modelos con esta nueva característica.
  • Cómo añadir una bandera para cada variable de entrada que tiene valores perdidos y evaluar modelos con estas nuevas características.

Descubre la limpieza de datos, la selección de características, la transformación de datos, la reducción de la dimensionalidad y mucho más en mi nuevo libro, con 30 tutoriales paso a paso y el código fuente completo en Python.

Empecemos.

Agregar banderas binarias para los valores perdidos para el aprendizaje de la máquina

Agregar banderas binarias para los valores perdidos para el aprendizaje de la máquina
Foto de Keith O Connell, algunos derechos reservados.

Resumen del Tutorial

Este tutorial está dividido en tres partes; son:

  1. Imputar el conjunto de datos del cólico del caballo
  2. Modelo con una bandera binaria para los valores perdidos
  3. Modelo con indicadores de todos los valores perdidos

Imputar el conjunto de datos del cólico del caballo

El conjunto de datos del cólico de los caballos describe las características médicas de los caballos con cólico y si vivieron o murieron.

Hay 300 filas y 26 variables de entrada con una variable de salida. Es una tarea de predicción de clasificación binaria que implica predecir 1 si el caballo vivió y 2 si el caballo murió.

Hay muchos campos que podríamos seleccionar para predecir en este conjunto de datos. En este caso, predeciremos si el problema fue quirúrgico o no (índice de la columna 23), convirtiéndolo en un problema de clasificación binaria.

El conjunto de datos tiene numerosos valores perdidos para muchas de las columnas donde cada valor perdido se marca con un carácter de interrogación («?»).

A continuación se presenta un ejemplo de filas del conjunto de datos con valores perdidos marcados.

Puedes aprender más sobre el conjunto de datos aquí:

No es necesario descargar el conjunto de datos ya que lo descargaremos automáticamente en los ejemplos trabajados.

Marcar los valores perdidos con un valor de NaN (no un número) en un conjunto de datos cargado usando Python es una buena práctica.

Podemos cargar el conjunto de datos usando la función read_csv() Pandas y especificar el «na_valores«para cargar valores de ‘?’ como faltantes, marcados con un valor NaN.

El siguiente ejemplo descarga el conjunto de datos, marca los valores de «?» como NaN (desaparecido) y resume la forma del conjunto de datos.

Ejecutando el ejemplo se descarga el conjunto de datos y se informa el número de filas y columnas, que coinciden con nuestras expectativas.

A continuación, podemos evaluar un modelo en este conjunto de datos.

Podemos utilizar la clase SimpleImputer para realizar la imputación estadística y sustituir los valores que faltan por la media de cada columna. Podemos entonces ajustar un modelo forestal aleatorio en el conjunto de datos.

Para más información sobre cómo usar la clase de SimpleImputador, ver el tutorial:

Para lograrlo, definiremos una tubería que primero realiza la imputación, luego se ajusta al modelo y evalúa esta tubería de modelado utilizando la validación cruzada estratificada k-pliegue repetido con tres repeticiones y 10 pliegues.

El ejemplo completo figura a continuación.

Al ejecutar el ejemplo se evalúa el bosque aleatorio con la imputación estadística media en el conjunto de datos del cólico del caballo.

Sus resultados específicos pueden variar dada la naturaleza estocástica del algoritmo de aprendizaje, la naturaleza estocástica del procedimiento de evaluación y las diferencias de precisión entre las máquinas. Intenta ejecutar el ejemplo unas cuantas veces.

En este caso, el oleoducto alcanzó una precisión de clasificación estimada de alrededor del 86,2%.

A continuación, veamos si podemos mejorar el rendimiento del modelo proporcionando más información sobre los valores perdidos.

Modelo con una bandera binaria para los valores perdidos

En la sección anterior, sustituimos los valores que faltaban por una estadística calculada.

El modelo no sabe que los valores que faltan fueron reemplazados.

Es posible que el conocimiento de si una fila contiene un valor faltante o no sea útil para el modelo al hacer una predicción.

Un enfoque para exponer el modelo a este conocimiento es proporcionar una columna adicional que es una bandera binaria que indica si a la fila le faltaba un valor o no.

  • 0: La fila no contiene un valor que falte.
  • 1: La fila contiene un valor faltante (que fue/ será imputado).

Esto se puede lograr directamente en el conjunto de datos cargados. Primero, podemos sumar los valores de cada fila para crear una nueva columna donde si la fila contiene al menos un NaN, entonces la suma será un NaN.

Podemos marcar todos los valores de la nueva columna como 1 si contienen un NaN, o 0 en caso contrario.

Por último, podemos añadir esta columna al conjunto de datos cargados.

A continuación se presenta el ejemplo completo de la adición de una bandera binaria para indicar uno o más valores que faltan en cada fila.

Recomendado:  La inteligencia artificial tiene una gran ventaja, pero es necesario gestionar los daños potenciales

Ejecutando el ejemplo primero descarga el conjunto de datos e informa el número de filas y columnas, como se esperaba.

Luego se crea la nueva variable binaria que indica si una fila contiene un valor faltante y se agrega al final de las variables de entrada. A continuación se informa de la forma de los datos de entrada, confirmando la adición de la característica, de 27 a 28 columnas.

Podemos entonces evaluar el modelo como lo hicimos en la sección anterior con la bandera binaria adicional y ver si impacta en el rendimiento del modelo.

El ejemplo completo figura a continuación.

La ejecución del ejemplo informa de la precisión de la clasificación de la media y la desviación estándar en el conjunto de datos del cólico de caballo con la característica adicional y la imputación.

Sus resultados específicos pueden variar dada la naturaleza estocástica del algoritmo de aprendizaje, la naturaleza estocástica del procedimiento de evaluación y las diferencias de precisión entre las máquinas. Intenta ejecutar el ejemplo unas cuantas veces.

En este caso, vemos un modesto aumento en el rendimiento de 86,2 por ciento a 86,3 por ciento. La diferencia es pequeña y puede no ser estadísticamente significativa.

La mayoría de las filas de este conjunto de datos tienen un valor faltante, y este enfoque podría ser más beneficioso en los conjuntos de datos con menos valores faltantes.

A continuación, veamos si podemos proporcionar más información sobre los valores que faltan al modelo.

Modelo con indicadores de todos los valores perdidos

En la sección anterior, añadimos una columna adicional para indicar si una fila contiene un valor que falta o no.

Un paso más allá es indicar si cada valor de entrada faltaba y se imputó o no. Esto añade efectivamente una columna adicional para cada variable de entrada que contiene valores faltantes y puede ofrecer un beneficio al modelo.

Recomendado:  6 tecnologías clave utilizadas en el desarrollo de videojuegos RPG

Esto puede lograrse estableciendo el «add_indicator» argumento para Verdadero cuando se define la instancia de SimpleImputador.

Podemos demostrarlo con un ejemplo práctico.

El siguiente ejemplo carga el conjunto de datos del cólico de caballo como antes, luego imputa los valores faltantes en todo el conjunto de datos y agrega variables indicadoras para cada variable de entrada que tiene valores faltantes

Al ejecutar el ejemplo primero se descarga y resume la forma del conjunto de datos como se esperaba, luego aplica la imputación y añade las columnas binarias (valores 1 y 0) indicando si cada fila contiene un valor que falta para una determinada variable de entrada.

Podemos ver que el número de variables de entrada ha aumentado de 27 a 48, lo que indica la adición de 21 variables de entrada binarias y, a su vez, que 21 de las 27 variables de entrada deben contener al menos un valor que falta.

A continuación, podemos evaluar el modelo con esta información adicional.

El ejemplo completo que se presenta a continuación lo demuestra.

El ejemplo informa de la precisión de la clasificación de la media y la desviación estándar en el conjunto de datos del cólico de caballo con las características de los indicadores adicionales y la imputación.

Sus resultados específicos pueden variar dada la naturaleza estocástica del algoritmo de aprendizaje, la naturaleza estocástica del procedimiento de evaluación y las diferencias de precisión entre las máquinas. Intenta ejecutar el ejemplo unas cuantas veces.

En este caso, vemos un buen aumento en el rendimiento desde el 86,3 por ciento en la sección anterior hasta el 86,7 por ciento.

Esto puede proporcionar una fuerte evidencia de que añadir una bandera por cada columna que fue introducida es una mejor estrategia en este conjunto de datos y modelo elegido.