Local Outlier Factor

Anomaly Detection in Python

Bekhruz (Bex) Tuychiev

Data Science Writer

Wat is Local Outlier Factor (LOF)?

Kenmerken

  • Dichtheidsgebaseerd algoritme
  • Voorgesteld in 2000
  • Werkt goed bij matig hoge dimensionaliteit
  • Kan sneller zijn dan KNN en Isolation Forest
Anomaly Detection in Python

Hoe werkt LOF?

  • Punten worden geclassificeerd met de local outlier factor (LOF)
  • LOF is gebaseerd op lokale dichtheid
  • Localiteit stel je in met n_neighbors
  • Punten met lagere dichtheid zijn outliers

LOF-algoritme gevisualiseerd

Anomaly Detection in Python

Het belang van localiteit

  • Het woord local is cruciaal
  • LOF-scores worden alleen vergeleken met nabije punten
Anomaly Detection in Python

LOF gevisualiseerd

LOF-algoritme gevisualiseerd

Anomaly Detection in Python

LOF gevisualiseerd

LOF-algoritme gevisualiseerd

Anomaly Detection in Python

LOF gevisualiseerd

LOF-algoritme gevisualiseerd

Anomaly Detection in Python

Getransformeerde dataset

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
Anomaly Detection in Python

LOF in actie

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])
Anomaly Detection in Python

Filteren met LOF

# Isoleer de outliers
probs = lof.predict_proba(males_transformed)

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

len(outliers)
2
Anomaly Detection in Python

LOF-details

  • n_neighbors is het belangrijkst
  • Vuistregel voor het tunen van n_neigbors:
    • 20 buren bij <10% contaminatie
  • Geen aggregatie toegestaan:
    • method is altijd largest
Anomaly Detection in Python

Nadelen van LOF

  • Moeilijk te interpreteren
  • LOF-score combineert:
    • afstand tussen punten
    • bereikbaarheidsafstand
    • veel andere componenten
  • Geen vaste score-range voor outliers
Anomaly Detection in Python

Laten we oefenen!

Anomaly Detection in Python

Preparing Video For Download...