Local Outlier Factor

Rilevamento delle anomalie in Python

Bekhruz (Bex) Tuychiev

Data Science Writer

Cos’è il Local Outlier Factor (LOF)?

Caratteristiche

  • Algoritmo basato sulla densità
  • Proposto nel 2000
  • Va bene con dati moderatamente ad alta dimensionalità
  • Può essere più veloce di KNN e Isolation Forest
Rilevamento delle anomalie in Python

Come funziona LOF?

  • I punti sono classificati con un punteggio chiamato local outlier factor (LOF)
  • LOF si basa sul concetto di densità locale
  • La località si imposta con il parametro n_neighbors
  • I punti con densità più bassa sono outlier

Algoritmo LOF visualizzato

Rilevamento delle anomalie in Python

L’importanza della località

  • La parola chiave è “locale”
  • Il punteggio LOF si confronta solo con i punti vicini
Rilevamento delle anomalie in Python

LOF visualizzato

Algoritmo LOF visualizzato

Rilevamento delle anomalie in Python

LOF visualizzato

Algoritmo LOF visualizzato

Rilevamento delle anomalie in Python

LOF visualizzato

Algoritmo LOF visualizzato

Rilevamento delle anomalie in Python

Dataset trasformato

import pandas as pd

males_transformed = pd.read_csv("males_transformed.csv")

males_transformed.head()
   abdominalextensiondepthsitting  acromialheight  acromionradialelength  ...
0                        0.365531        0.427976               0.113152   
1                       -0.492137       -0.724973              -0.529301   
2                        0.857097       -0.146048               0.357496   
3                       -0.462610       -1.521525              -1.467860   
4                       -0.026349        2.151957               1.985876
Rilevamento delle anomalie in Python

LOF in pratica

from pyod.models.lof import LOF


# Fit lof = LOF(n_neighbors=20, metric="manhattan") lof.fit(males_transformed) print(lof.labels_)
array([0, 0, 0, ..., 0, 0, 1])
Rilevamento delle anomalie in Python

Filtrare con LOF

# Isola gli outlier
probs = lof.predict_proba(males_transformed)

is_outlier = probs[:, 1] > 0.55
outliers = males_transformed[is_outlier]

len(outliers)
2
Rilevamento delle anomalie in Python

Dettagli su LOF

  • n_neighbors è il più importante
  • Regola pratica per n_neigbors:
    • 20 vicini per <10% di contaminazione
  • Nessuna aggregazione consentita:
    • method è sempre largest
Rilevamento delle anomalie in Python

Limiti di LOF

  • Difficile da interpretare
  • Il punteggio LOF combina:
    • distanza tra punti
    • reachability distance
    • molte altre componenti
  • Nessun range specifico di punteggio LOF per gli outlier
Rilevamento delle anomalie in Python

Passons à la pratique !

Rilevamento delle anomalie in Python

Preparing Video For Download...