Local Outlier Factor

Wykrywanie anomalii w Pythonie

Bekhruz (Bex) Tuychiev

Data Science Writer

Czym jest Local Outlier Factor (LOF)?

Cechy

  • Algorytm oparty na gęstości
  • Zaproponowany w 2000 roku
  • Dobrze radzi sobie z umiarkowanie wielowymiarowymi danymi
  • Może być szybszy niż KNN i Isolation Forest
Wykrywanie anomalii w Pythonie

Jak działa LOF?

  • Punkty są klasyfikowane przy użyciu wskaźnika local outlier factor (LOF)
  • LOF opiera się na koncepcji lokalnej gęstości
  • Lokalność jest określana przez wartość parametru n_neighbors
  • Punkty o niższej gęstości są klasyfikowane jako wartości odstające

Wizualizacja algorytmu LOF

Wykrywanie anomalii w Pythonie

Znaczenie lokalności

  • Słowo lokalny jest kluczowe
  • Wynik LOF jest porównywany wyłącznie z wynikami pobliskich punktów
Wykrywanie anomalii w Pythonie

Wizualizacja LOF

Wizualizacja algorytmu LOF

Wykrywanie anomalii w Pythonie

Wizualizacja LOF

Wizualizacja algorytmu LOF

Wykrywanie anomalii w Pythonie

Wizualizacja LOF

Wizualizacja algorytmu LOF

Wykrywanie anomalii w Pythonie

Przekształcony zbiór danych

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
Wykrywanie anomalii w Pythonie

LOF w działaniu

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])
Wykrywanie anomalii w Pythonie

Filtrowanie w LOF

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

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

len(outliers)
2
Wykrywanie anomalii w Pythonie

Szczegóły LOF

  • n_neighbors jest najważniejszym parametrem
  • Zasada kciuka dla n_neigbors:
    • 20 sąsiadów przy zanieczyszczeniu <10%
  • Agregacja niedozwolona:
    • method zawsze przyjmuje wartość largest
Wykrywanie anomalii w Pythonie

Wady LOF

  • Trudny do interpretacji
  • Wynik LOF łączy:
    • odległość między punktami
    • odległość osiągalności
    • wiele innych składników
  • Brak określonego zakresu wartości LOF dla wartości odstających
Wykrywanie anomalii w Pythonie

Czas na ćwiczenia!

Wykrywanie anomalii w Pythonie

Preparing Video For Download...