Detecção de anomalias

Projetando Workflows de Machine Learning em Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Anomalias e outliers

Supervisionado

Dois clusters em preto, com alguns pontos vermelhos isolados.

Não supervisionado

Dois clusters em preto com alguns pontos pretos isolados.

Projetando Workflows de Machine Learning em Python

Anomalias e outliers

Dois clusters em preto com alguns pontos pretos isolados.

  • Uma das duas classes é muito rara
  • Caso extremo de dataset shift
  • Exemplos:
    • cibersegurança
    • detecção de fraude
    • prevenção à lavagem de dinheiro
    • detecção de falhas
Projetando Workflows de Machine Learning em Python

Fluxos não supervisionados

Dois clusters em preto com alguns pontos pretos isolados circulados em vermelho.

  • Como ajustar um algoritmo sem rótulos?
  • Como estimar seu desempenho?

Uso criterioso de poucos rótulos:

  • poucos demais para treinar sem overfitting
  • suficientes para selecionar modelos
  • abra mão da estimativa não viesada de acurácia

Um conjunto de dados dividido em partes para treino, seleção e validação, com rótulos só na seleção.

Projetando Workflows de Machine Learning em Python
  • Outlier: ponto que fica fora da faixa da maioria dos dados

Dois clusters em preto com alguns pontos pretos isolados. O ponto mais distante está circulado em vermelho.

  • Outlier local: ponto que fica em uma região isolada, sem outros dados

Dois clusters em preto com alguns pontos pretos isolados. Os pontos isolados entre os dois clusters estão circulados em vermelho.

Projetando Workflows de Machine Learning em Python

Local outlier factor (LoF)

Dois clusters em preto com alguns pontos pretos isolados. Um ponto entre as duas classes está circulado em vermelho, e seu vizinho mais próximo, perto de um dos clusters, está circulado em azul.

Projetando Workflows de Machine Learning em Python

Local outlier factor (LoF)

from sklearn.neighbors import 
   LocalOutlierFactor as lof
clf = lof()
y_pred = clf.fit_predict(X)
y_pred[:4]
array([ 1,  1,  1, -1])
clf.negative_outlier_factor_[:4]
array([-0.99, -1.02, -1.08 , -0.97])
confusion_matrix(
   y_pred, ground_truth)
array([[  5,  16],
       [  0, 184]])

Os mesmos clusters com alguns pontos isolados. Muitos pontos estão circulados em vermelho, tanto dentro dos clusters quanto entre os isolados.

Projetando Workflows de Machine Learning em Python

Local outlier factor (LoF)

clf = lof(contamination=0.02)
y_pred = clf.fit_predict(X)
confusion_matrix(
   y_pred, ground_truth)
array([[  5,   0],
       [  0, 200]])

Os mesmos clusters com alguns pontos isolados. Apenas os pontos isolados estão circulados em vermelho.

Projetando Workflows de Machine Learning em Python

Quem precisa de rótulos, afinal!

Projetando Workflows de Machine Learning em Python

Preparing Video For Download...