Anomalidetektion

Att designa maskininlärningsflöden i Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Anomalier och avvikare

Övervakad

Två kluster i svart med några isolerade röda punkter.

Oövervakad

Två kluster i svart med några isolerade svarta punkter.

Att designa maskininlärningsflöden i Python

Anomalier och avvikare

Två kluster i svart med några isolerade svarta punkter.

  • En av de två klasserna är mycket sällsynt
  • Extremfall av datamängdsförskjutning
  • Exempel:
    • cybersäkerhet
    • bedrägeridetektering
    • penningtvättsbekämpning
    • feldetektering
Att designa maskininlärningsflöden i Python

Oövervakade arbetsflöden

Två kluster i svart med några isolerade svarta punkter inringade i rött.

  • Hur tränar man en algoritm utan etiketter?
  • Hur skattar man dess prestanda?

Varsam användning av ett fåtal etiketter:

  • för få för träning utan överanpassning
  • precis tillräckligt för modellval
  • ger en opartisk skattning av noggrannheten

En datamängd uppdelad i en träningsdel, en valideringsdel och en testdel, där etiketter endast finns för valideringsdelen.

Att designa maskininlärningsflöden i Python
  • Avvikare: en datapunkt som ligger utanför intervallet för merparten av data

Två kluster i svart med några isolerade svarta punkter. Den punkt som ligger längst bort är inringad i rött.

  • Lokal avvikare: en datapunkt som befinner sig i ett isolerat område utan andra datapunkter

Två kluster i svart med några isolerade svarta punkter. De isolerade punkterna mellan de två klustren är inringade i rött.

Att designa maskininlärningsflöden i Python

Lokal avvikarfaktor (LoF)

Två kluster i svart med några isolerade svarta punkter. En punkt mellan de två klasserna är inringad i rött, och dess närmaste granne nära ett av klustren är inringad i blått.

Att designa maskininlärningsflöden i Python

Lokal avvikarfaktor (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]])

Samma kluster med några isolerade punkter. Ett stort antal punkter är inringade i rött, både inom klustren och bland de isolerade.

Att designa maskininlärningsflöden i Python

Lokal avvikarfaktor (LoF)

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

Samma kluster med några isolerade punkter. Endast de isolerade punkterna är inringade i rött.

Att designa maskininlärningsflöden i Python

Vem behöver etiketter ändå!

Att designa maskininlärningsflöden i Python

Preparing Video For Download...