Anomaliedetectie

Machine Learning-workflows ontwerpen in Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Anomalieën en outliers

Supervised

Twee clusters in zwart, met enkele geïsoleerde rode punten.

Unsupervised

Twee clusters in zwart met enkele geïsoleerde zwarte punten.

Machine Learning-workflows ontwerpen in Python

Anomalieën en outliers

Twee clusters in zwart met enkele geïsoleerde zwarte punten.

  • Een van de twee klassen is heel zeldzaam
  • Extreem geval van dataset shift
  • Voorbeelden:
    • cybersecurity
    • fraudedetectie
    • anti-witwassen
    • foutdetectie
Machine Learning-workflows ontwerpen in Python

Ongecontroleerde workflows

Twee clusters in zwart met enkele geïsoleerde zwarte punten die rood zijn omcirkeld.

  • Hoe train je een algoritme zonder labels?
  • Hoe schat je de performance?

Voorzichtig een paar labels gebruiken:

  • te weinig voor training zonder overfitting
  • net genoeg voor modelselectie
  • laat onbevooroordeelde schatting van nauwkeurigheid vallen

Een dataset gesplitst in een deel voor training, een voor selectie en een voor validatie, met labels alleen voor selectie.

Machine Learning-workflows ontwerpen in Python
  • Outlier: een datapunt buiten het bereik van de meeste data

Twee clusters in zwart met enkele geïsoleerde zwarte punten. Het punt dat het verst weg ligt is rood omcirkeld.

  • Lokale outlier: een datapunt in een geïsoleerd gebied zonder andere data

Twee clusters in zwart met enkele geïsoleerde zwarte punten. De geïsoleerde punten tussen de twee clusters zijn rood omcirkeld.

Machine Learning-workflows ontwerpen in Python

Local outlier factor (LoF)

Twee clusters in zwart met enkele geïsoleerde zwarte punten. Eén punt tussen de twee klassen is rood omcirkeld, en zijn dichtstbijzijnde buur bij een van de clusters is blauw omcirkeld.

Machine Learning-workflows ontwerpen in 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]])

Dezelfde clusters met enkele geïsoleerde punten. Veel punten zijn rood omcirkeld, zowel binnen de clusters als bij de geïsoleerde.

Machine Learning-workflows ontwerpen in 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]])

Dezelfde clusters met enkele geïsoleerde punten. Alleen geïsoleerde punten zijn rood omcirkeld.

Machine Learning-workflows ontwerpen in Python

Wie heeft er labels nodig!

Machine Learning-workflows ontwerpen in Python

Preparing Video For Download...