El aprendizaje automático: la elección de la estrategia de sustitución adecuado para los datos que faltaban

Usted tiene un par de posibles estrategias para manejar los datos que faltan de manera efectiva para el aprendizaje de la máquina. Su estrategia puede cambiar si usted tiene que manejar los valores que faltan en cuantitativo (valores expresados ​​como números) o características cualitativas. Cualitativo características, aunque también se expresa por números, son, en realidad, se refiere a los conceptos, por lo que sus valores son algo arbitrario y no se puede tomar un promedio significativamente u otros cálculos sobre ellos.

Cuando se trabaja con las características cualitativas, el valor de adivinar siempre debe producir números enteros, en base a los números que se utilizan como códigos. Las estrategias comunes para el manejo de datos que faltan son los siguientes:

  • Reemplazar los valores perdidos con una constante calculada como la media o la mediana. Si su función es una categoría, debe proporcionar un valor específico porque la numeración es arbitraria, y el uso de media o la mediana no tiene sentido. Utilice esta estrategia cuando los valores que faltan son aleatorios.
  • Reemplazar los valores perdidos con un valor fuera del rango de valores normales de la función. Por ejemplo, si la función es positiva, reemplazar los valores perdidos con valores negativos. Este enfoque funciona bien con algoritmos basados ​​en árboles de decisión y las variables cualitativas.
  • Reemplazar los valores perdidos por 0, lo que funciona bien con los modelos de regresión y las variables estandarizadas. Este enfoque es aplicable a las variables cualitativas cuando contienen valores binarios también.
  • Interpolar los valores perdidos cuando son parte de una serie de valores ligados a tiempo. Este enfoque funciona sólo para los valores cuantitativos. Por ejemplo, si su función es ventas diarias, se puede utilizar un promedio móvil de los últimos siete días o recoger el valor a la vez a la semana anterior.
  • Imputar su valor utilizando la información de otras características de predicción (pero nunca utilizar la variable de respuesta). Particularmente en investigación, hay bibliotecas especializadas como missForest, RATONES, y Amelia II que puede hacer todo por ti.

Otra buena práctica es crear una nueva característica binaria para cada variable cuyos valores reparado. La variable binaria hará un seguimiento de las variaciones debidas a la sustitución o imputar con un valor positivo, y el algoritmo de aprendizaje automático puede averiguar cuando debe hacer ajustes adicionales a los valores que se utiliza realmente.

En Python, los valores no son posibles sólo con la estructura de datos del paquete ndarray NumPy. marcas Python valores con un valor especial que aparece impreso en la pantalla como NaN (Not a Number) que faltan. La estructura de datos trama de datos desde el paquete de pandas ofrece métodos tanto para reemplazar los valores perdidos y soltar variables.

El siguiente ejemplo de Python muestra cómo realizar tareas de reemplazo. Se inicia mediante la creación de un conjunto de datos de 5 observaciones y 3 características, llamado “A”, “B”, “C”:

pandas de importación como Pd

importar numpy como NP

datos = pd.DataFrame ([[1,2, np.nan], [np.nan, 2, np.nan],

[3, np.nan, np.nan], [np.nan, 3,8],

[5,3, np.nan]], las columnas = [ `A`, `B`, `C`])

de impresión (datos, ` n`) # imprime los datos

# Cuenta valores NaN para cada función

impresión (data.isnull (). sum (eje = 0))

A B C

0 1 2 NaN

1 NaN 2 NaN

2 3 NaN NaN

3 NaN 3 8

4 5 3 NaN

A 2

B 1

C 4

Int64 de tipo D:

Debido función C tiene sólo un valor, puede caer a partir del conjunto de datos. El código a continuación, sustituye los valores perdidos en función de B con un valor medio e interpola el valor en función de A, ya que muestra un orden progresivo.

# Gotas definitivamente C del conjunto de datos

data.drop ( `C`, el eje = 1, inplace = True)

# Crea un marcador de posición para valores perdidos de B

datos [ `missing_B`] = datos [ `B`]. IsNull (). astype (int)

# Rellena los elementos que faltan en B utilizando el promedio de B

de datos [ `B`]. fillna (datos [ `B`]. significar (), inplace = True)

# Un Interpola

datos [ `A`]. interpolar (método = `lineal`, inplace = True)

de impresión (datos)

A B missing_B

0 1 2,0 0

1 2 2,0 0

2 3 2,5 1

Video: El docente y la selección de estrategias educativas

3 4 3,0 0

4 5 3,0 0

La copia es el conjunto de datos final. Asegúrese de tener en cuenta que la media de B no es un valor entero, por lo que el código convertido todos los valores de B a los números flotantes. Este enfoque tiene sentido si B es numérico. Si se tratara de una categoría, y la numeración se marcan la clase, el código debería haber llenado la función usando los datos del comando [ `B`]. Fillna (datos en modo [ `B`]. (). ILoc [0], in-situ = True), que utiliza el modo, es decir, el primer valor más frecuente en la serie.

En R, los valores no aparecen marcadas como NA cuando se imprimen o resumida. Ambos lenguajes proporcionan una manera especial para localizar y hacer frente a los valores vacíos. Después de que los haya localizado, usted tiene que decidir si desea reemplazar o eliminarlos. Para replicar la ejemplo Python en R, es necesario instalar el paquete zoológico para su plataforma para crear interpolaciones:

install.packages (Paqs =&apos-zoo&apos-, dependencias = TRUE)

Después de instalar el paquete de zoológico, puede crear una trama de datos y reemplazar los valores perdidos utilizando la misma estrategia que antes:

biblioteca (zoo)

df lt; - data.frame (A = c (1, NA, 3, NA, 5),

B = C (2,2, Na, 3,3),

C = C (NA, NA, NA, 8, NA))

impresión (df)

A B C

1 1 2 NA

2 NA 2 NA

3 3 NA NA

Video: Estrategia educativa

4 NA 3 8

5 5 3 NA

df lt; - subconjunto (df, seleccione = c ( `A`, `B`))

df [ `m_B`] lt; - as.numeric (is.na (df $ B))

df $ B [is.na (df $ B)] lt; - media (df $ B, na.rm = TRUE)

df $ A lt; - na.approx (df $ A)

impresión (df)

A B m_B

1 1 2,0 0

2 2 2,0 0

3 3 2,5 1

4 4 3,0 0

5 5 3,0 0

Como se muestra en el ejemplo, a veces no se puede hacer mucho con ejemplos que tienen una gran cantidad de valores que faltan en sus características. En tales casos, si el ejemplo es para la formación (ejemplos de ensayo no deben ser eliminados, en su lugar), y eliminar del conjunto (un procedimiento llamado según lista supresión) de modo que los casos incompletos no afectarán de aprendizaje. Si por el contrario, el ejemplo es parte de la prueba, no se debe quitar y lo utiliza para obtener una evaluación de qué tan bien su algoritmo de aprendizaje automático se encarga de este tipo de situaciones.

Artículos Relacionados