Manejo de outliers

  • Artículos
  • Data Science & IA

Introducción

En un artículo anterior hablamos de la importancia de la limpieza de datos antes de iniciar cualquier proyecto de ciencia de datos. Describimos algunos pasos que son transversales a cualquier proyecto, como la eliminación de duplicados, la corrección de errores estructurales, qué hacer con los datos que faltan y el tratamiento de los valores atípicos. En este artículo profundizaremos en las diferentes técnicas que existen para tratar los valores atípicos.

Como ya sabemos, un valor atípico es aquel que «escapa» del rango normal de valores de la variable en estudio. Generalmente se producen por errores en las medidas o describen fenómenos que no representan el funcionamiento común de lo estudiado. Es importante realizar primero un análisis de los datos antes de eliminar o sustituir los valores atípicos que se puedan encontrar.

Existen 2 técnicas muy sencillas que nos permiten detectar valores atípicos para casos univariantes: utilizar el rango intercuartílico (IQR) y la puntuación z. Explicaremos brevemente en qué consiste cada una.

Método IQR

El primer método es un método no paramétrico que tiene como base el rango intercuartílico. El IQR es simplemente la diferencia entre el tercer y el primer cuartil de la distribución de los datos estudiados. Recordemos que, para calcular un cuartil, los datos se ordenan de menor a mayor y se definen del siguiente modo:

  • Primer cuartil (Q1): es la mediana de la primera mitad del conjunto de datos (percentil 25).
  • Segundo cuartil (Q2): es la mediana de todo el conjunto de datos (percentil 50).
  • Tercer cuartil (Q3): es la mediana de la segunda mitad del conjunto de datos (percentil 75).

Entonces, el valor atípico vendrá dado por aquel valor que esté fuera del rango Q1-1,5*IQR, por debajo; y Q3+1,5*IQR, por encima. El IQR viene dado por IQR = Q3-Q1. El valor de 1,5 se debe a que es el que más acerca el valor atípico a un valor de 3σ (suponiendo que nuestros datos siguen una distribución gaussiana). En realidad, un valor de 1,5 equivale a 2,7σ. Una muy buena explicación de estos valores se puede encontrar aquí.

Ejemplo:

Tenemos una lista de números

n=(5, 7, 10, 15, 19, 21, 21, 22, 22, 23, 23, 23, 23, 23, 24, 24, 24 24, 25).

Los números ya están ordenados de menor a mayor. Necesitamos hallar la primera y la segunda mitad del conjunto de datos. Para ello, calculamos la mediana. Hay 19 puntos, por lo que la mediana vendría dada por 23. Esto separa el conjunto de puntos en grupos de 9 números.

El primer cuartil viene dado por Q1 = 19 (la mitad del segundo conjunto de puntos). Por otro lado, Q3 = 24. Por tanto, IQR = Q3 – Q1 = 5.

El límite inferior es entonces Q1 – 1,5*IQR = 11,5, mientras que el límite superior viene dado por Q3 + 1,5*IQR = 31,5.

Observando la lista de n números descrita anteriormente, sólo hay 3 valores atípicos en esta lista: 5, 7 y 10. Visualmente, tiene sentido. Puedes ver que la mayoría de los números están en el intervalo de 20 a 25, por lo que 5, 7 y 10 estarían un poco «fuera» de este intervalo:

n=(5, 7, 10, 15, 19, 21, 21, 22, 22, 23, 23, 23, 23, 23, 24, 24, 24 24, 25).

Método Z-Score

El segundo método, la puntuación z, es un método paramétrico para detectar valores atípicos. Se supone que los datos siguen una distribución gaussiana. Los valores atípicos serán los puntos que se encuentran en la cola de la distribución y, por tanto, alejados de la media. Este umbral viene dado por:

zi = (xi – µ)/σ

Donde xi es un punto i, µ y σ son la media y la desviación típica de todos los puntos, respectivamente. El outlier será, entonces, aquel punto que satisfaga |zi| > z_umbral. Los valores típicos de z_umbral son 2,5, 3 y 3,5. La definición exacta dependerá del problema en cuestión y de lo estricto que se quiera ser con los datos.

Métodos para casos multivariados

Uno de ellos se basa en el algoritmo DBSCAN (Density-Based Spatial Clustering of Applications with Noise). DBSCAN es un método muy robusto para segmentaciones, pero también puede utilizarse para valores atípicos. A diferencia de K-means, en DBSCAN no todos los puntos pueden pertenecer a cualquier clúster. Por lo tanto, al establecer una distancia, los puntos fuera de esa distancia (y de los clusters) se consideran valores atípicos. Aquí puede verse un ejemplo.

Otro método se basa en el algoritmo Isolation Forest. La idea detrás de este algoritmo es aislar los puntos que son valores atípicos. Este método se basa en la idea de que es más difícil separar un punto «bueno» que un «atípico» de una colección de datos, lo que se define como el número de divisiones. El número de divisiones se calcula del siguiente modo:

  • Se elige aleatoriamente un punto para aislarlo.
  • Para cada característica del conjunto de datos, el intervalo que debe aislarse se elige entre el máximo y el mínimo.
  • Se elige aleatoriamente una característica.
  • Se elige aleatoriamente un valor que se encuentre en el intervalo de la característica en cuestión (y que sea diferente del punto original).
  • Si el valor elegido hace que el punto original esté por encima, entonces el valor mínimo de la característica se cambia a este valor.
  • Si el valor elegido hace que el punto original esté por debajo, entonces el valor máximo de la característica se cambia a este valor.
  • Este proceso se repite tantas veces como sea necesario, hasta que no haya ningún otro punto entre los rangos de la característica.
  • Un outlier se define como un punto que necesita un número de cortes inferior a un determinado límite impuesto (este límite es uno de los parámetros del algoritmo).

La siguiente figura muestra un ejemplo de cómo funcionaría el algoritmo (referencia). A la izquierda, se muestra un punto que requiere muchos cortes para ser aislado, mientras que a la derecha, la figura muestra un punto con muchos menos cortes. Este ejemplo nos diría que el punto de la izquierda es un valor atípico (número muy pequeño de cortes), mientras que el punto de la izquierda no es un valor atípico (muchos cortes por aislar).

Otro método es el conocido como Factor Atípico Local (LOF). Se trata de un algoritmo no supervisado que calcula la densidad local de un punto dado con respecto a sus vecinos más cercanos. Los puntos que tienen menos densidad que sus vecinos se consideran valores atípicos.

La distancia de Mahalanobis también puede utilizarse para detectar valores atípicos. Esta distancia es la distancia entre un punto y una distribución, y no entre dos puntos diferentes, como sería la distancia euclidiana. Se define como

Donde D es la distancia de Mahalanobis, x es el vector de observación (una fila de un conjunto de datos), m es el vector de los valores medios de las variables independientes (la media de cada columna) y C-1 es la inversa de la matriz de covarianza de las variables independientes.

Veamos con un ejemplo cómo se aplicarían estas cuatro técnicas. Para ello, utilizaremos el conjunto de datos sobre el valor de la vivienda en Boston que viene con el paquete sklearn de Python.

Con el conjunto de datos construido, construiremos una función para calcular la distancia de Mahalanobis.

Para obtener la distancia mínima que permita decidir si un punto es atípico o no, se suele suponer que el conjunto de datos sigue una distribución normal multivariante con K variables, y la distancia de Mahalanobis sigue una distribución chi-cuadrado con K grados de libertad. Podemos asumir un nivel de significación razonable (2,5%, 1%, 0,01%). En este caso, elegimos el 0,001%. Ese es nuestro valor de corte.

El resultado de esta impresión es de 17 puntos. Esto significa que del conjunto de datos, 17 puntos pueden considerarse valores atípicos. Veamos el caso con DBSCAN.

Por otro lado DBSCAN acepta como variables min_samples, que es el número mínimo de puntos que pueden pertenecer a un grupo, y eps es la distancia mínima entre dos puntos para ser considerados vecinos. Este es un parámetro muy importante, porque influye en el número de clusters que se pueden encontrar. El resultado, clusters, es un valor entre -1 y n para cada punto, donde n es el número de clusters encontrados, y -1 indica que este punto no pertenece a ningún cluster. Estos son los valores atípicos. En este caso, la impresión da como resultado 82.

Para el bosque de aislamiento, la variable contaminación es el porcentaje de datos que pueden ser valores atípicos. Para este caso, lo dejamos como auto, es decir, lo encuentra automáticamente. Por otro lado, max_características es el número máximo de características sobre las que entrenar el modelo.

El algoritmo da como resultado 1 para los puntos que no se consideran atípicos y -1 para los que sí lo son. En este caso, se encuentran 132 puntos atípicos.

Por último, en LOF, el parámetro de contaminación tiene la misma definición que para el bosque de aislamiento, y n_vecinos es el número máximo de vecinos sobre el que calcular la densidad.

Para este ejemplo, el resultado del código anterior arroja 51 valores atípicos.

Cierre

Como podemos ver, los resultados son diferentes para los 4 algoritmos. Además, cada algoritmo tiene parámetros que pueden cambiar el resultado. En general, los parámetros por defecto son los que mejor funcionan. Independientemente del método utilizado, es importante comprobar los datos después de cada iteración. A veces se necesita una combinación de métodos para encontrar y eliminar los valores atípicos. Siempre es importante entender los datos que se tienen delante, y cualquier decisión que se tome (si eliminar los valores atípicos o sustituirlos por algún otro valor) debe ir acompañada de una definición empresarial, pero sin duda, limpiar los datos es fundamental para conseguir resultados más precisos en las predicciones.