Representación: Limpieza de datos

En los manzanos, crecen frutas excelentes y otras repletas de gusanos. Aun así, las manzanas que se exhiben en las tiendas refinadas son frutas 100% perfectas. Entre el huerto y la tienda, alguien dedica mucho tiempo a quitar las manzanas en mal estado o acondicionar un poco las más presentables. En su papel de ingeniero de AA, le dedicarás mucho tiempo a desechar ejemplos malos y acondicionar los que sirven. Unas pocas "manzanas en mal estado" pueden arruinar un conjunto de datos grande.

Ajuste de valores de atributos

El ajuste significa convertir los valores de atributos de punto flotante de su rango natural (p. ej., 100 a 900) al rango estándar (p. ej., 0 a 1 o -1 a +1). Si un conjunto de atributos consiste solo en una única función, el ajuste no ofrece ningún beneficio real. Sin embargo, si el conjunto de atributos consiste en varios atributos, el ajuste puede ser útil.

  • Acelera la convergencia del descenso de gradientes.
  • Permite evitar la "trampa de N/A", en la que un número del modelo se convierte en un NaN (p. ej., cuando un valor excede el límite de precisión de punto flotante durante el entrenamiento) y, debido a operaciones matemáticas, el resto de los números en el modelo finalmente se convierte en NaN.
  • Permite que el modelo aprenda las ponderaciones correspondientes para cada atributo. Sin el ajuste de atributos, el modelo les prestará demasiada atención a los atributos con un rango más amplio.

No es necesario indicar el mismo ajuste para cada atributo de punto flotante. No hay problema si el Atributo A se ajusta de -1 a +1 y el Atributo B se ajusta de -3 a +3. Sin embargo, el modelo tendrá problemas si el Atributo B se escala de 5,000 a 100,000.

Manejos de valores atípicos extremos

El siguiente gráfico representa un atributo llamado roomsPerPerson del conjunto de datos Viviendas de California. El valor de roomsPerPerson se obtiene al dividir la cantidad total de habitaciones en un área por la población en esa área. El gráfico muestra que la gran mayoría de áreas en California tiene una o más habitaciones por persona. Pero veamos el eje x.

Un gráfico de la función roomsPerPerson en el que casi todos los valores están agrupados entre el 0 y el 4, pero hay una cola muy larga que se extiende hasta 55 habitaciones por persona

Figura 4. Una cola muy larga.

¿Cómo puedo minimizar la influencia de esos valores atípicos extremos? Una forma sería obtener el logaritmo de cada valor:

Un gráfico de log(roomsPerPerson) en el que el 99% de los valores están agrupados entre 0.4 y 1.8, pero todavía hay una cola larga que se extiende aproximadamente hasta 4.2.

Figura 5. El ajuste logarítmico todavía tiene cola.

El ajuste logarítmico logra un mejor resultado, pero todavía hay una cola importante de los valores atípicos. Apliquemos otra estrategia. ¿Y si aplicamos un "límite" o "tope" al valor máximo de roomsPerPerson en una cifra arbitraria, como 4.0?

Un gráfico de la función roomsPerPerson en el que todos los valores se encuentran entre -0.3 y 4.0. El gráfico tiene forma de campana, pero hay una colina anormal en el valor 4.0

Figura 6. Aplicar un límite a los valores de atributos en 4.0

El límite del valor de atributo en 4.0 no implica que ignoraremos todos los valores mayores a 4.0. Quiere decir que todos los valores mayores a 4.0 ahora son 4.0. Esto explica la elevación extraña en 4.0. A pesar de esa elevación, el conjunto de atributos ajustado ahora es más útil que los datos originales.

Discretización

El siguiente gráfico muestra la prevalencia relativa de las casas en diferentes latitudes de California. Nota el agrupamiento: Los Ángeles está casi en la latitud 34 y San Francisco, en la 38.

Un gráfico de casas por latitud. El gráfico es muy irregular, contiene pozos cerca de la latitud 36 y grandes picos cerca de las latitudes 34 y 38.

Figura 7. Casas por latitud.

En el conjunto de datos, latitude es un valor de punto flotante. Sin embargo, no tiene sentido representar latitude como un atributo de punto flotante en nuestro modelo. Esto se debe a que existe una relación no lineal entre la latitud y los valores de las viviendas. Por ejemplo, las casas en la latitud 35 no son 35/34 más costosas (o menos costosas) que las casas en la latitud 34. Aun así, las latitudes individuales probablemente son un muy buen predictor de los valores de casas.

Para que la latitud sea un predictor útil, debemos dividir las latitudes en discretizaciones, como se sugiere en la siguiente figura:

Un gráfico de casas por latitud. Él gráfico está dividido.

Figura 8. Valores de discretización.

En lugar de tener un atributo de punto flotante, ahora tenemos 11 atributos booleanos diferentes (LatitudeBin1, LatitudeBin2, …, LatitudeBin11). Tener 11 atributos separados no es muy elegante, por lo que debemos unirlos en un único vector de 11 elementos. Esto nos permite representar la latitud 37.4 de la siguiente manera:

[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]

Gracias a la discretización, nuestro modelo ahora puede aprender ponderaciones completamente diferentes para cada latitud.

Arrastre

Hasta ahora, asumimos que todos los datos que se usaron para el entrenamiento y la prueba son confiables. En la práctica, muchos ejemplos de los conjuntos de datos no son confiables debido a una, o varias, de las siguientes razones:

  • Valores omitidos. Por ejemplo, una persona olvidó ingresar un valor para la antigüedad de una casa.
  • Ejemplos duplicados. Por ejemplo, un servidor subió por error los mismos registros dos veces.
  • Etiquetas incorrectas. Por ejemplo, una persona etiquetó incorrectamente una imagen de un roble como un arce.
  • Valores de atributos incorrectos. Por ejemplo, alguien escribió un dígito de más o un termómetro quedó al sol.

Cuando detectes el ejemplo incorrecto, quítalo del conjunto de datos para "corregirlo". Para detectar valores omitidos o ejemplos duplicados, puedes escribir un programa simple. Detectar valores de atributos o etiquetas incorrectos es mucho más difícil.

Además de detectar ejemplos incorrectos individuales, debes detectar los datos incorrectos en el valor total. Los histogramas son muy útiles para visualizar los datos en el valor total. Además, las siguientes estadísticas pueden ser de utilidad:

  • máximo y mínimo
  • media y mediana
  • desviación del estándar

Considera generar listas de los valores más comunes para los atributos discretos. Por ejemplo, la cantidad de ejemplos con country:uk debe coincidir con la cantidad esperada. ¿language:jp debe ser el idioma más común en tu conjunto de datos?

Conoce tus datos

Sigue estas reglas:

  • Ten en cuenta cómo deben verse los datos:
  • Comprueba que los datos cumplan estas expectativas (o, en caso contrario, que puedas explicarlo).
  • Vuelve a comprobar que los datos de entrenamiento concuerden con otras fuentes (p. ej., paneles de control).

Cuida los datos como si fuera código esencial. El AA correcto se basa en datos confiables.