Python para la ciencia de datos: el desarrollo de un enfoque multivariado para encontrar los valores extremos

Python es amigo de un científico de datos. Trabajando en las variables individuales permite detectar un gran número de observaciones atípicas. Sin embargo, los valores atípicos no necesariamente muestran valores demasiado lejos de la norma. A veces los valores extremos están hechos de combinaciones inusuales de valores en más variables. Son raros, pero influyente, especialmente combinaciones que pueden engañar a algoritmos de aprendizaje automático.

En tales casos, la inspección precisa de todas las variables sola no será suficiente para descartar casos anómalos de su conjunto de datos. Sólo unas pocas técnicas seleccionadas, tomando en consideración las más variables a la vez, se encargará de revelar problemas de los datos.

Las técnicas presentadas abordan el problema desde diferentes puntos
de vista:

  • Reducción de dimensionalidad

  • agrupación densidad

    Video: Ejercicio de Cálculo: Extremos relativos y puntos de silla de una función de varias variables

  • modelación de distribución no lineal

El uso de estas técnicas permite comparar sus resultados, tomando nota de las señales recurrentes en casos particulares - a veces que ya se encuentran por la exploración univariado, a veces aún se desconoce.

Utilizando el análisis de componentes principales

Análisis de componentes principales puede reestructurar completamente los datos, la eliminación de redundancias y ordenar componentes recién obtenidas de acuerdo con la cantidad de la varianza original que expresan. Este tipo de análisis ofrece una vista sintético y completo sobre la distribución de datos, por lo que los valores atípicos multivariantes particularmente evidente.

Video: Calcular los Valores Extremos de la Función en el Plano X,Y Limitado Cálculo Vectorial

Los dos primeros componentes, siendo el más informativo en términos de varianza, pueden representar la distribución general de los datos si se visualiza. La salida proporciona un buen indicio en posibles valores atípicos evidentes.

Los últimos dos componentes, siendo el más residual, representan toda la información que no pudo ser montado de otra manera por la PCA método. También pueden proporcionar una sugerencia sobre posibles pero menos evidentes valores atípicos.

Video: Teorema de los valores extremos

de sklearn.decomposition PCAfrom importación sklearn.preprocessing scatter_matrixdim_reduction importación scalefrom pandas.tools.plotting import = PCA de impresión `varianza explicada por los 2 primeros componentes:% 0.1f %%` () Xc = dim_reduction.fit_transform (escala (X))% (sum (dim_reduction.explained_variance_ratio _ [: 2] * 100)) de impresión `varianza explicada por los últimos 2 componentes:% 0.1f %%` % (sum (dim_reduction.explained_variance_ratio _ [- 2:] * 100)) df = pd. trama de datos (Xc, columnas = [ `comp _` + str (j + 1) para j en el rango de (10)]) first_two = df.plot (tipo = `dispersión`, x = `Comp_1`, y = `comp_2`, c = `gris_oscuro`, s = 50) last_two = df.plot (tipo = `dispersión`, x = `comp_9`, Y = `comp_10`, c = `gris_oscuro`, s = 50)

Mira estos dos diagramas de dispersión de los primeros y últimos componentes. Prestar especial atención a los puntos de datos a lo largo del eje (donde el eje x define la variable independiente y el eje y define la variable dependiente). Se puede ver un posible umbral a utilizar para separar los datos regulares de datos sospechosos.

Los primeros dos y los últimos dos componentes del análisis de componentes principales.
Los primeros dos y los últimos dos componentes del análisis de componentes principales.

El uso de los dos últimos componentes, puede localizar algunos puntos a investigar utilizando el umbral de -0,3 para el décimo de los componentes y de -1,0 por noveno. Todos los casos por debajo de estos valores son posibles valores atípicos.

= Periféricas (Xc [:, - 1] lt; -0.3) | (Xc [:, - 2] lt; -1,0) df de impresión [periférica]

Usando análisis de conglomerados

Los valores atípicos son puntos aislados en el espacio de las variables, y DBSCAN es un algoritmo de agrupamiento que une partes de datos densos juntos y marca las partes demasiado dispersos. Por lo tanto, DBSCAN es una herramienta ideal para una exploración automatizado de sus datos en busca de posibles valores atípicos para verificar.

de DBSCANDB importación sklearn.cluster = DBSCAN (eps = 2,5, min_samples = 25, random_state = 101) DB.fit (Xc) de colecciones importar Counterprint Contador (DB.labels _), `n`print df [DB.labels _ == - 1] Contador ({0: 414, -1: 28}) 0 1 2 3 4 5 6 7 8 915 -0,05 0,05 -0,02 0,08 0,09 0,11 -0,04 0,11 0,04 -0,0423 0,05 0,05 0,06 0,03 0,03 -0,05 -0,05 0,07 0,13 0,1429 0,07 0,05 -0,01 0,06 -0,04 0,05 -0.10 -0.08 0.06 0.05 ... (resultados parcialmente omitidas) [28 filas x 10 columnas]

Sin embargo, DBSCAN requiere dos parámetros, eps y min_samples. Estos dos parámetros requieren varios intentos para localizar los valores de la derecha, haciendo uso de los parámetros de un poco difícil.

Comience con un valor bajo de min_samples y tratar cada vez mayor de los valores eps de 0,1 hacia arriba. Después de cada ensayo con parámetros modificados, comprobar la situación contando el número de observaciones en la clase -1 dentro del atributo etiquetas, y se detendrá cuando el número de valores atípicos parece razonable para una inspección visual.

Siempre habrá puntos de la periferia de la distribución de las partes densas, por lo que es difícil para ofrecerle un umbral para el número de casos que podrían ser clasificados en las categorías -1. Normalmente, los valores extremos no deben ser más de un 5 por ciento de los casos, a fin de utilizar esta indicación como norma genérica del pulgar.

La automatización de la detección de valores atípicos con SVM

Máquinas de Vectores Soporte (SVM) es una poderosa técnica de aprendizaje automático. OneClassSVM es un algoritmo que se especializa en el aprendizaje de las distribuciones esperadas en un conjunto de datos. OneClassSVM es especialmente útil como un método detector novedad si primero puede proporcionar datos limpiados de outliers- lo contrario, es eficaz como un detector de valores atípicos multivariantes. Para tener OneClassSVM funcione correctamente, tiene dos parámetros clave para solucionar:

Video: 4.12.Valores extremos de funciones de varias variables

  • gama, contando el algoritmo si seguir o aproximación de las distribuciones de conjunto de datos. Para la detección de la novedad, es mejor tener un valor de 0 o superiores (seguir la distribución) - para los valores de detección de las demás, se prefieren más pequeño que los valores 0 (aproximar la distribución).

  • nu, que se puede calcular por la siguiente fórmula: nu_estimate = 0,95 * f + 0,05, donde f es el porcentaje de los valores atípicos esperados (un número de 1 a 0). Si su objetivo es la detección de la novedad, f será 0.

Ejecutar el siguiente script, obtendrá una OneClassSVM que trabaja como un sistema de detección de valores atípicos:

de sklearn svmoutliers_fraction import = 0,01 #nu_estimate = 0,95 * outliers_fraction + 0.05auto_detection = svm.OneClassSVM (kernel = “rbf”, gamma = 0,01, el grado = 3, 
nu = nu_estimate) auto_detection.fit (Xc) Evaluación = auto_detection.predict (Xc) df de impresión [Evaluación == - 1] 0 1 2 3 4 5 6 7 8 910 -0.10 -0.04 -0.08 0.01 -0.10 -0.09 -0.01 -0,08 -0,06 -0,0323 0,05 0,05 0,06 0,03 0,03 -0,05 -0,05 0,07 0,13 0.1432 0.03 0.05 0.13 0.03 -0.05 -0.01 -0.10 0.11 0.00 0.03 ... (resultados parcialmente omitidas) [25 filas x 10 columnas]

OneClassSVM, al igual que toda la familia de la SVM, funciona mejor si reescalar las variables utilizando el sklearn.preprocessing función escala o la clase StandardScaler.

Artículos Relacionados