Local Outlier Factor

Виявлення аномалій у Python

Bekhruz (Bex) Tuychiev

Data Science Writer

Що таке Local Outlier Factor (LOF)?

Характеристики

  • Алгоритм на основі щільності
  • Запропонований у 2000 році
  • Добре працює з помірно багатовимірними даними
  • Може бути швидшим за KNN та Isolation Forest
Виявлення аномалій у Python

Як працює LOF?

  • Точки класифікують за показником local outlier factor (LOF)
  • LOF базується на понятті локальної щільності
  • Локальність задають параметром n_neighbors
  • Точки з нижчою щільністю вважаються викидами

Візуалізація алгоритму LOF

Виявлення аномалій у Python

Важливість локальності

  • Ключове слово — «локальний»
  • Оцінку LOF порівнюють лише з оцінками сусідніх точок
Виявлення аномалій у Python

Візуалізація LOF

Візуалізація алгоритму LOF

Виявлення аномалій у Python

Візуалізація LOF

Візуалізація алгоритму LOF

Виявлення аномалій у Python

Візуалізація LOF

Візуалізація алгоритму LOF

Виявлення аномалій у Python

Трансформований набір даних

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
Виявлення аномалій у Python

LOF у дії

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])
Виявлення аномалій у Python

Фільтрування у LOF

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

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

len(outliers)
2
Виявлення аномалій у Python

Деталі LOF

  • n_neighbors — найважливіший
  • Правило великого пальця для налаштування n_neigbors:
    • 20 сусідів для <10% контамінації
  • Агрегація не дозволена:
    • method завжди largest
Виявлення аномалій у Python

Недоліки LOF

  • Складно інтерпретувати
  • Оцінка LOF поєднує:
    • відстань між точками
    • відстань досяжності
    • багато інших компонентів
  • Немає фіксованого діапазону оцінки LOF для викидів
Виявлення аномалій у Python

Давайте потренуємось!

Виявлення аномалій у Python

Preparing Video For Download...