Local Outlier Factor

Detecția anomaliilor în Python

Bekhruz (Bex) Tuychiev

Data Science Writer

Ce este Local Outlier Factor (LOF)?

Caracteristici

  • Algoritm bazat pe densitate
  • Propus în 2000
  • Funcționează bine cu date moderat multidimensionale
  • Poate fi mai rapid decât KNN și Isolation Forest
Detecția anomaliilor în Python

Cum funcționează LOF?

  • Punctele sunt clasificate folosind un scor numit local outlier factor (LOF)
  • LOF se bazează pe conceptul de densitate locală
  • Localitatea este definită prin parametrul n_neighbors
  • Punctele cu densitate mai mică sunt clasificate ca valori aberante

Algoritmul LOF vizualizat

Detecția anomaliilor în Python

Importanța localității

  • Cuvântul local este esențial
  • Scorul LOF este comparat doar cu scorurile punctelor apropiate
Detecția anomaliilor în Python

LOF vizualizat

Algoritmul LOF vizualizat

Detecția anomaliilor în Python

LOF vizualizat

Algoritmul LOF vizualizat

Detecția anomaliilor în Python

LOF vizualizat

Algoritmul LOF vizualizat

Detecția anomaliilor în Python

Setul de date transformat

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
Detecția anomaliilor în Python

LOF în practică

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])
Detecția anomaliilor în Python

Filtrare în LOF

# Isolate the outliers
probs = lof.predict_proba(males_transformed)

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

len(outliers)
2
Detecția anomaliilor în Python

Detalii LOF

  • n_neighbors este cel mai important
  • Regulă empirică pentru ajustarea n_neigbors:
    • 20 vecini pentru contaminare <10%
  • Agregarea nu este permisă:
    • method este întotdeauna largest
Detecția anomaliilor în Python

Dezavantajele LOF

  • Dificil de interpretat
  • Scorul LOF combină:
    • distanța dintre puncte
    • distanța de accesibilitate
    • multe alte componente
  • Niciun interval specific al scorului LOF pentru valori aberante
Detecția anomaliilor în Python

Să exersăm!

Detecția anomaliilor în Python

Preparing Video For Download...