Local Outlier Factor

Detekce anomálií v Pythonu

Bekhruz (Bex) Tuychiev

Data Science Writer

Co je Local Outlier Factor (LOF)?

Vlastnosti

  • Algoritmus založený na hustotě
  • Navržen v roce 2000
  • Dobře funguje s mírně vysokodimenzionálními daty
  • Může být rychlejší než KNN a Isolation Forest
Detekce anomálií v Pythonu

Jak funguje LOF?

  • Body jsou klasifikovány pomocí skóre zvaného local outlier factor (LOF)
  • LOF je založen na konceptu lokální hustoty
  • Lokalita se nastavuje parametrem n_neighbors
  • Body s nižší hustotou jsou klasifikovány jako odlehlé

Vizualizace algoritmu LOF

Detekce anomálií v Pythonu

Důležitost lokality

  • Klíčové je slovo lokální
  • Skóre LOF se porovnává pouze se skóre sousedních bodů
Detekce anomálií v Pythonu

LOF vizualizace

Vizualizace algoritmu LOF

Detekce anomálií v Pythonu

LOF vizualizace

Vizualizace algoritmu LOF

Detekce anomálií v Pythonu

LOF vizualizace

Vizualizace algoritmu LOF

Detekce anomálií v Pythonu

Transformovaný 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
Detekce anomálií v Pythonu

LOF v praxi

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])
Detekce anomálií v Pythonu

Filtrování v LOF

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

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

len(outliers)
2
Detekce anomálií v Pythonu

Podrobnosti LOF

  • Nejdůležitější je n_neighbors
  • Pravidlo pro ladění n_neigbors:
    • 20 sousedů při kontaminaci <10 %
  • Agregace není povolena:
    • method je vždy largest
Detekce anomálií v Pythonu

Nevýhody LOF

  • Obtížná interpretace
  • Skóre LOF kombinuje:
    • vzdálenost mezi body
    • dosažitelnostní vzdálenost
    • mnoho dalších složek
  • Žádný specifický rozsah skóre LOF pro odlehlé hodnoty
Detekce anomálií v Pythonu

Pojďme si procvičit!

Detekce anomálií v Pythonu

Preparing Video For Download...