Tratamento de anomalias de dados |

Conteúdo

O que são anomalias e como detectá-las? Que impacto isso tem sobre os dados?

Introdução

As anomalias são os diferentes pontos do estado normal de existência. Isso é algo que pode surgir devido a diferentes circunstâncias com base nos vários fatores que afetam você.. Por exemplo, tumores que se desenvolvem devido a algumas doenças, como quando uma pessoa é diagnosticada com câncer, mais células se desenvolvem sem qualquer limite.

Da mesma forma, Ao obtermos esses dados, devemos analisar e detectar essas anomalias para que o tratamento seja mais fácil e saibamos quais ações tomar. Quando tais anomalias ocorrem na indústria automotiva, como quando as vendas de um determinado carro ou outros veículos de transporte são altas ou baixas. Portanto, é uma anomalia de todos os dados. As anomalias nada mais são do que outliers nos dados.

Como você detecta outliers ou quais são os métodos usados ​​para detectar anomalias?

1. Use a visualização de dados (Como fazer uso de plotagens de caixa, diagramas de violino, etc.)

2. Use métodos estatísticos, como métodos de quantis (IQR, T1, 3º T), encontre o mínimo, o máximo e o mediana dos dados, a pontuação Z, etc.

3. Algoritmos ML como IsolationForest, LocalOutlierFactor, OneClassSVM, Envelope elíptico ... etc.

1. Visualização de dados: Quando um recurso é plotado usando ferramentas de visualização como o mar, matplotlib, plotly ou outro software como Tableau, PowerBI, Qlik Sense, Excel, Palavra, … etc., temos uma ideia dos dados e sua contagem nos dados e também conhecemos as anomalias principalmente usando gráficos de caixa, diagramas de violino, diagramas de dispersão.

35593outliers-9494000
74799outlier-7345866

2. Métodos estatísticos: Quando você encontra a média dos dados, pode não fornecer o valor médio correto quando há anomalias nos dados. Quando há anomalias nos dados, a mediana dá um valor correto do que a média porque a mediana ordena os valores e encontra a posição do meio nos dados, enquanto a média apenas calcula a média dos valores nos dados. Para descobrir outliers no lado esquerdo e direito dos dados, use Q3 + 1.5 (IQR), T1-1.5 (IQR). O que mais, ao encontrar o máximo, o mínimo e a mediana dos dados, pode dizer se anomalias estão presentes nos dados ou não.

86934boxplot-6656451

3. Algoritmos ML: O benefício de usar algoritmos não supervisionados para detecção de anomalias é que podemos encontrar anomalias para várias variáveis ​​ou características ou preditores nos dados ao mesmo tempo, em vez de separadamente para variáveis ​​individuais.. Também pode ser feito de ambas as maneiras, chamado detecção de anormalidade univariada e detecção de anormalidade multivariada.

uma. Floresta de isolamento: Esta é uma técnica não supervisionada para detectar anomalias quando não há rótulos ou valores verdadeiros. Seria uma tarefa complexa verificar cada linha dos dados para detectar aquelas linhas que podem ser consideradas anomalias.

Isolation Forest é um modelo baseado em árvore. As árvores formadas para isso não são as mesmas feitas nas árvores de decisão. Árvores de decisão e florestas de isolamento são diferentes formas de construção. O que mais, Mais uma diferença principal é que a árvore de decisão é um algoritmo de aprendizagem supervisionada e a floresta de isolamento é um algoritmo de Aprendizado não supervisionado.

Nessas árvores de isolamento, As partições são criadas selecionando primeiro aleatoriamente um recurso ou variável e, em seguida, selecionando um valor de divisão aleatória entre o valor mínimo e máximo do recurso selecionado. Novamente, a root é selecionado aleatoriamente sem quaisquer condições para ser um nó raiz como acontece na árvore de decisão. O nó raiz é selecionado aleatoriamente a partir das variáveis ​​nos dados, então algum valor aleatório é tomado que está entre o máximo e o mínimo daquela característica particular.

A pontuação de anomalia de uma amostra de entrada é calculada como a pontuação de anomalia média das árvores na floresta de isolamento. Mais tarde, a pontuação de anomalia é calculada para cada variável após ajustar todos os dados ao modelo. Quando a pontuação da anomalia aumenta, há uma grande probabilidade de que seja uma anomalia do que a linha com a pontuação de anomalia mais baixa. Existem três funções neste algoritmo que facilitam a exibição e o armazenamento de pontuações usando as poucas linhas de código fornecidas abaixo.:

from sklearn.ensemble import IsolationForest
isolation_forest = IsolationForest(n_estimators=1000, contaminação=0,08)
isolation_forest.fit(df['Taxa'].values.reshape(-1, 1))
df['anomaly_score_rate'] = isolation_forest.decision_function(df['taxa'].values.reshape(-1, 1))
df['outlier_univariate_rate'] = isolation_forest.predict(df['taxa'].values.reshape(-1, 1))

Aqui, o parâmetro de contaminação desempenha um papel importante na detecção de mais anomalias. Contaminação é a porcentagem de valores que você está dando ao algoritmo que há tanta porcentagem de anomalias nos dados. Por exemplo: quando ele deu 0,10 como um valor de poluição, os algoritmos consideram que existe um 10% de anomalias de dados. Encontrando a contaminação ideal, você será capaz de detectar anomalias com um bom número.

Quando você deseja realizar a detecção de anomalias multivariadas, você deve primeiro normalizar os valores nos dados para que o algoritmo possa fornecer previsões corretas. o padronização o A padronização é essencial quando se trata de valores contínuos.

minmax = MinMaxScaler(feature_range =(0, 1))
X = minmax.fit_transform(df[['taxa','pontuações']])
clf = IsolationForest(n_estimators = 100, contaminação = 0,01, random_state = 0)
clf.fit(X)
df['multivariate_anomaly_score'] = clf.decision_function(X)
df['multivariate_outlier'] = clf.predict(X)

Para saber mais vá para floresta de isolamento sklearn

61838isolamento 20 floresta-1381317

A imagem acima corresponde a: https://pubs.rsc.org/en/content/articlelanding/2016/ay/c6ay01574c#!divAbstract

B. LocalOutlierFactor: Este também é um algoritmo não supervisionado e não é baseado em árvore, mas algoritmo baseado em densidade como KNN, Kmeans. Quando qualquer ponto de dados é considerado um outlier dependendo da sua vizinhança local, é um outlier local. LOF irá identificar um outlier considerando a densidade do vizinho. LOF funciona bem quando a densidade do ponto de dados não é constante em todo o conjunto de dados.

Existem dois tipos de detecção que são realizados com este algoritmo. Eles são detecção de outlier e detecção de novidade, onde a detecção de outlier não é supervisionada e a detecção de novidade é semi-supervisionada, uma vez que usa os dados do trem para fazer suas previsões sobre os dados de teste, embora os dados do trem não contenham previsões exatas.

Até LocalOutlierFactor usa o mesmo código, portanto, o código é usado apenas para detecção de novidade quando o parâmetro novidade é True neste modelo. Quando seu valor padrão é False, a detecção de outlier seria usada onde o único fit_predict funcionasse. Quando a novidade = Verdadeira, esta função está desabilitada.

Abaixo está o código para encontrar anomalias usando o algoritmo de outlier local

minmax = MinMaxScaler(feature_range =(0, 1))
X = minmax.fit_transform(df[['taxa','pontuações']])
# Novelty detection
clf = LocalOutlierFactor(n_neighbors=100, contaminação=0,01,novidade=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,contaminação=0.20.n_jobs=-1) # when novelty = False
multi_pred=local_outlier_factor_multi.fit_predict(X)
df1['Multivariate_pred']=multi_pred

Para saber mais sobre isso, consulte Fator outlier local de Sklearn

77980lof-1068053

C. SVM de uma classe: Existe um SVM supervisionado que lida com tarefas de regressão e classificação. Aqui está um SVM de classe única não supervisionado, já que os rótulos são desconhecidos. SVMs de uma classe são um tipo especial de máquina de vetores de suporte. Primeiro, os dados são modelados e o algoritmo é treinado. Mais tarde, quando novos dados são encontrados, sua posição em relação aos dados normais (o inliers) o treinamento pode ser usado para determinar se você está fora da classe ou não. Como eles podem ser treinados com dados não rotulados ou sem variáveis ​​de destino, são um exemplo de Sem supervisão aprendizado de máquina.

Ele tem apenas algumas linhas de código como outros algoritmos:

from sklearn.svm import OneClassSVM
pred=clf.predict(X)
anomaly_score=clf.score_samples(X)
clf = OneClassSVM(gama="auto",nu=0,04,gama=0,0004).ajuste(X)

Saiba mais, ver este site de sklearn para SVMs de classe única

D. Algoritmo de envelope elíptico: Este algoritmo é usado quando os dados têm uma distribuição gaussiana. É assim que este modelo converte os dados em forma elíptica e os pontos que estão longe das coordenadas desta forma são considerados outliers e para este determinante de covariância mínimo é encontrado. É como quando a covariância é encontrada no conjunto de dados, então o mínimo é excluído e que é maior, esses pontos são considerados anomalias. A imagem a seguir mostra a explicação dessa detecção de algoritmo.

16153eliptic20envelope-2217554

Ele tem a mesma linha de código que apenas para ajustar os dados e prever nele que identifica anomalias nos dados onde são atribuídos. -1 para anomalias e +1 para dados normais ou in-liers.

from sklearn.covariance import EllipticEnvelope
model1 = EllipticEnvelope(contaminação = 0.1) # fit model
model1.fit(X_train)
model1.predict(X_test)

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

Essas são algumas das técnicas utilizadas na detecção de anomalias que ajudam a conhecer os pontos que estão longe do normal e que trazem muitas mudanças inesperadas nos dados.. Dependendo do local ou tipo de dados, Ele tem vários efeitos e é usado em muitos lugares e indústrias, como a indústria médica, a indústria automotiva, a indústria de construção, a indústria de alimentos (anormalidades que são diferentes dos padrões prescritos), indústria de defesa, etc.

Deixe-me saber se você tiver alguma dúvida.. Obrigado pela leitura. 👩🕵️‍♀️👩‍🎓 Tenha um bom dia.

A mídia mostrada neste artigo não é propriedade da DataPeaker e é usada a critério do autor.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.