Manejo de anomalías en los datos |

Contenidos

¿Qué son las anomalías y cómo detectarlas? ¿Qué impacto tiene en los datos?

Introducción

Las anomalías son los puntos diferentes del estado normal de existencia. Estos son algo que puede surgir debido a diferentes circunstancias en función de los diversos factores que lo impactan. Por ejemplo, los tumores que se desarrollan debido a algunas enfermedades, como cuando a una persona se le diagnostica cáncer, se desarrolla más cantidad de células sin ningún límite.

De la misma forma, cuando obtenemos dichos datos debemos analizar y detectar estas anomalías para que sea más fácil el tratamiento y saber qué acciones tomar. Cuando ocurren tales anomalías en la industria del automóvil, como cuando las ventas de un automóvil en particular u otros vehículos de transporte son altas o bajas. Entonces es una anomalía de todos los datos. Las anomalías no son más que valores atípicos en los datos.

¿Cómo detecta los valores atípicos o cuáles son los métodos utilizados para detectar anomalías?

1. Usar visualización de datos (como hacer uso de diagramas de caja, diagramas de violín, etc.)

2. Usar métodos estadísticos como los métodos de cuantiles (IQR, Q1, Q3), encontrar el mínimo, el máximo y la mediana de los datos, la puntuación Z, etc.

3. Algoritmos ML como IsolationForest, LocalOutlierFactor, OneClassSVM, Elliptic Envelope… etc.

1. Visualización de datos: Cuando una característica se traza utilizando herramientas de visualización como seaborn, matplotlib, plotly u otro software como tableau, PowerBI, Qlik Sense, Excel, Word, … etc., nos hacemos una idea de los datos y su recuento en los datos y también llegamos a conocer las anomalías principalmente utilizando diagramas de caja, diagramas de violín, diagramas de dispersión.

35593outliers-9494000
74799outlier-7345866

2. Métodos estadísticos: Cuando encuentre la media de los datos, es posible que no proporcione el valor medio correcto cuando hay anomalías en los datos. Cuando existen anomalías en los datos, la mediana da un valor correcto que la media porque la mediana ordena los valores y encuentra la posición intermedia en los datos, mientras que la media solo promedia los valores en los datos. Para encontrar los valores atípicos en el lado derecho e izquierdo de los datos, use Q3 + 1.5 (IQR), Q1-1.5 (IQR). Además, al encontrar el máximo, el mínimo y la mediana de los datos, puede decir si las anomalías están presentes en los datos o no.

86934boxplot-6656451

3. Algoritmos ML: El beneficio de utilizar los algoritmos no supervisados ​​para la detección de anomalías es que podemos encontrar anomalías para múltiples variables o características o predictores en los datos al mismo tiempo en lugar de por separado para las variables individuales. También se puede realizar de ambas formas, denominadas detección de anomalías univariadas y detección de anomalías multivariadas.

una. Bosque de aislamiento: Esta es una técnica no supervisada para detectar anomalías cuando no hay etiquetas o valores verdaderos. Sería una tarea compleja comprobar cada fila de los datos para detectar esas filas que pueden considerarse anomalías.

Isolation Forest es un modelo basado en árboles. Los árboles formados para esto no son los mismos que se hacen en los árboles de decisión. Los árboles de decisión y los bosques de aislamiento son diferentes formas de construcción. Además, una diferencia principal más es que el árbol de decisiones es un algoritmo de aprendizaje supervisado y el bosque de aislamiento es un algoritmo de aprendizaje no supervisado.

En estos árboles de aislamiento, las particiones se crean seleccionando primero aleatoriamente una característica o variable y luego seleccionando un valor de división aleatoria entre el valor mínimo y máximo de la característica seleccionada. Nuevamente, el nodo raíz se selecciona aleatoriamente sin ninguna condición para ser un nodo raíz como ocurre en el árbol de decisiones. El nodo raíz se selecciona aleatoriamente de las variables en los datos, luego se toma algún valor aleatorio que se encuentra entre el máximo y el mínimo de esa característica en particular.

La puntuación de anomalía de una muestra de entrada se calcula como la puntuación media de anomalía de los árboles en el bosque de Aislamiento. Luego, se calcula la puntuación de anomalía para cada variable después de ajustar todos los datos al modelo. Cuando la puntuación de anomalía aumenta, hay una alta probabilidad de que sea una anomalía que la fila que tiene menos puntuación de anomalía. Hay tres funciones en este algoritmo que simplifican la visualización y el almacenamiento de las puntuaciones fácilmente utilizando las pocas líneas de código que se proporcionan a continuación:

from sklearn.ensemble import IsolationForest
isolation_forest = IsolationForest(n_estimators=1000, contamination=0.08)
isolation_forest.fit(df['Rate'].values.reshape(-1, 1))
df['anomaly_score_rate'] = isolation_forest.decision_function(df['rate'].values.reshape(-1, 1))
df['outlier_univariate_rate'] = isolation_forest.predict(df['rate'].values.reshape(-1, 1))

Aquí, el parámetro de contaminación juega un papel importante en la detección de más anomalías. La contaminación es el porcentaje de valores que le está dando al algoritmo que hay tanto porcentaje de anomalías en los datos. Por ejemplo: cuando dio 0,10 como valor de contaminación, los algoritmos consideran que hay un 10% de anomalías en los datos. Al encontrar la contaminación óptima, podrá detectar anomalías con un buen número.

Cuando desee realizar una detección de anomalías multivariante, primero debe normalizar los valores en los datos para que el algoritmo pueda dar predicciones correctas. La normalización o estandarización es esencial cuando se trata de valores continuos.

minmax = MinMaxScaler(feature_range=(0, 1))
X = minmax.fit_transform(df[['rate','scores']])
clf = IsolationForest(n_estimators=100, contamination=0.01, random_state=0)
clf.fit(X)
df['multivariate_anomaly_score'] = clf.decision_function(X)
df['multivariate_outlier'] = clf.predict(X)

Para saber más ve a bosque de aislamiento sklearn

61838isolation20forest-1381317

La imagen de arriba corresponde a: https://pubs.rsc.org/en/content/articlelanding/2016/ay/c6ay01574c#!divAbstract

B. LocalOutlierFactor: Este también es un algoritmo no supervisado y no está basado en árboles sino en un algoritmo basado en densidad como KNN, Kmeans. Cuando cualquier punto de datos se tiene en cuenta como un valor atípico dependiendo de su vecindario local, es un valor atípico local. LOF identificará un valor atípico considerando la densidad del vecino. LOF funciona bien cuando la densidad del punto de datos no es constante en todo el conjunto de datos.

Hay dos tipos de detección que se realizan con este algoritmo. Son detección de valores atípicos y detección de novedades, donde la detección de valores atípicos no está supervisada y la detección de novedades está semi-supervisada, ya que utiliza los datos del tren para hacer sus predicciones sobre los datos de prueba, aunque los datos del tren no contienen predicciones exactas.

Incluso LocalOutlierFactor usa el mismo código, entonces el código se usa solo para la detección de novedades cuando el parámetro de novedad es True en este modelo. Cuando su valor predeterminado False, la detección de valores atípicos se usaría donde funcionaría el único fit_predict. Cuando novedad = Verdadero, esta función está desactivada.

A continuación se muestra el código para encontrar anomalías utilizando el algoritmo de factor atípico local

minmax = MinMaxScaler(feature_range=(0, 1))
X = minmax.fit_transform(df[['rate','scores']])
# Novelty detection
clf = LocalOutlierFactor(n_neighbors=100, contamination=0.01,novelty=True) #when novelty = True
clf.fit(X_train)
df['multivariate_anomaly_score'] = clf.decision_function(X_test)
df['multivariate_outlier'] = clf.predict(X_test)
# Outlier detection
local_outlier_factor_multi=LocalOutlierFactor(n_neighbors=15,contamination=0.20,n_jobs=-1) # when novelty = False
multi_pred=local_outlier_factor_multi.fit_predict(X)
df1['Multivariate_pred']=multi_pred

Para saber más sobre esto, consulte Factor de valor atípico local de sklearn

77980lof-1068053

C. SVM de una clase: Existe una SVM supervisada que se ocupa de las tareas de regresión y clasificación. Aquí hay una SVM de clase única sin supervisión, ya que se desconocen las etiquetas. Las SVM de una clase son un tipo especial de máquina de vectores de soporte. Primero, se modelan los datos y se entrena el algoritmo. Luego, cuando se encuentran nuevos datos, su posición relativa a los datos normales (o inliers) del entrenamiento se puede usar para determinar si está fuera de clase o no. Como se pueden entrenar con datos sin etiquetar o sin variables de destino, son un ejemplo de sin supervisión aprendizaje automático.

Tiene solo unas pocas líneas de código como otros algoritmos:

from sklearn.svm import OneClassSVM
pred=clf.predict(X)
anomaly_score=clf.score_samples(X)
clf = OneClassSVM(gamma="auto",nu=0.04,gamma=0.0004).fit(X)

Para saber más, consulte este sitio de sklearn para SVM de una clase

D. Algoritmo de envolvente elíptica: Este algoritmo se utiliza cuando los datos tienen una distribución gaussiana. En esto es como este modelo convierte los datos en forma elíptica y los puntos que están lejos de las coordenadas de esta forma se consideran valores atípicos y para este determinante de mínima covarianza se encuentra. Es como cuando se encuentra la covarianza en el conjunto de datos, de modo que se excluye el mínimo y cuál es mayor, esos puntos se consideran anomalías. La siguiente imagen muestra la explicación de esta detección de algoritmo.

16153elliptic20envelope-2217554

Tiene la misma línea de código que solo para ajustar los datos y predecir en el mismo que identifica las anomalías en los datos donde se asigna -1 para anomalías y +1 para datos normales o in-liers.

from sklearn.covariance import EllipticEnvelope
model1 = EllipticEnvelope(contamination = 0.1) # fit model
model1.fit(X_train)
model1.predict(X_test)

Para obtener más información sobre los parámetros y la tabla de comparación, consulte Sobre elíptico sklearn

Estas son algunas de las técnicas utilizadas en la detección de anomalías que ayudan a conocer los puntos que están lejos de lo normal y que traen muchos cambios inesperados en los datos. Según el lugar o el tipo de datos, tiene diversos efectos y se utiliza en muchos lugares e industrias como la industria médica, la industria del automóvil, la industria de la construcción, la industria alimentaria (anomalías que son diferentes de los estándares prescritos), la industria de defensa, etc.

Déjeme saber si usted tiene cualquier pregunta. Gracias por leer. 👩🕵️‍♀️👩‍🎓 Que tengas un buen día.😊

Los medios que se muestran en este artículo no son propiedad de DataPeaker y se utilizan a discreción del autor.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.