Local Outlier Factor

Avvikelsedetektering i Python

Bekhruz (Bex) Tuychiev

Data Science Writer

Vad är Local Outlier Factor (LOF)?

Egenskaper

  • Densitetsbaserad algoritm
  • Publicerad år 2000
  • Fungerar bra med måttligt högdimensionell data
  • Kan vara snabbare än KNN och Isolation Forest
Avvikelsedetektering i Python

Hur fungerar LOF?

  • Punkter klassificeras med ett mått kallat local outlier factor (LOF)
  • LOF bygger på konceptet lokal densitet
  • Lokaliteten bestäms av värdet på parametern n_neighbors
  • Punkter med lägre densitet klassificeras som avvikare

LOF-algoritmen visualiserad

Avvikelsedetektering i Python

Lokalitetens betydelse

  • Ordet lokal är centralt
  • LOF-poängen jämförs bara med poängen hos närliggande punkter
Avvikelsedetektering i Python

LOF visualiserad

LOF-algoritmen visualiserad

Avvikelsedetektering i Python

LOF visualiserad

LOF-algoritmen visualiserad

Avvikelsedetektering i Python

LOF visualiserad

LOF-algoritmen visualiserad

Avvikelsedetektering i Python

Transformerad datamängd

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
Avvikelsedetektering i Python

LOF i praktiken

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])
Avvikelsedetektering i Python

Filtrering i LOF

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

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

len(outliers)
2
Avvikelsedetektering i Python

LOF – detaljer

  • n_neighbors är den viktigaste
  • Tumregel för att justera n_neigbors:
    • 20 grannar vid <10 % kontaminering
  • Ingen aggregering tillåten:
    • method är alltid largest
Avvikelsedetektering i Python

LOF:s nackdelar

  • Svår att tolka
  • LOF-poängen kombinerar:
    • avstånd mellan punkter
    • räckbarhetsavstånd
    • flera andra komponenter
  • Inget specifikt intervall för LOF-poängen vid avvikare
Avvikelsedetektering i Python

Nu kör vi en övning!

Avvikelsedetektering i Python

Preparing Video For Download...