Rilevamento anomalie

Progettare workflow di Machine Learning in Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Anomalie e outlier

Supervisionato

Due cluster in nero, con alcuni punti rossi isolati.

Non supervisionato

Due cluster in nero con alcuni punti neri isolati.

Progettare workflow di Machine Learning in Python

Anomalie e outlier

Due cluster in nero con alcuni punti neri isolati.

  • Una delle due classi è molto rara
  • Caso estremo di dataset shift
  • Esempi:
    • cybersecurity
    • rilevamento frodi
    • antiriciclaggio
    • rilevamento guasti
Progettare workflow di Machine Learning in Python

Workflow non supervisionati

Due cluster in nero con alcuni punti neri isolati cerchiati in rosso.

  • Come addestrare senza etichette?
  • Come stimarne le prestazioni?

Uso accorto di poche etichette:

  • troppo poche per addestrare senza overfitting
  • sufficienti per la selezione del modello
  • rinuncia a una stima imparziale dell’accuratezza

Un dataset diviso in blocchi per training, selezione e validazione, con etichette solo per la selezione.

Progettare workflow di Machine Learning in Python
  • Outlier: punto dati fuori dall’intervallo della maggior parte dei dati

Due cluster in nero con alcuni punti neri isolati. Il punto più lontano è cerchiato in rosso.

  • Outlier locale: punto dati in una zona isolata senza altri dati

Due cluster in nero con alcuni punti neri isolati. I punti isolati tra i due cluster sono cerchiati in rosso.

Progettare workflow di Machine Learning in Python

Local Outlier Factor (LoF)

Due cluster in nero con alcuni punti neri isolati. Un punto tra le due classi è cerchiato in rosso e il suo vicino più vicino, vicino a uno dei cluster, è cerchiato in blu.

Progettare workflow di Machine Learning 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]])

Gli stessi cluster con alcuni punti isolati. Molti punti sono cerchiati in rosso, sia dentro i cluster sia tra quelli isolati.

Progettare workflow di Machine Learning 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]])

Gli stessi cluster con alcuni punti isolati. Solo i punti isolati sono cerchiati in rosso.

Progettare workflow di Machine Learning in Python

Chi ha bisogno di etichette?

Progettare workflow di Machine Learning in Python

Preparing Video For Download...