Local Outlier Factor

Detecção de Anomalias em Python

Bekhruz (Bex) Tuychiev

Data Science Writer

O que é o Local Outlier Factor (LOF)?

Características

  • Algoritmo baseado em densidade
  • Proposto em 2000
  • Funciona bem com dados de média alta dimensionalidade
  • Pode ser mais rápido que KNN e Isolation Forest
Detecção de Anomalias em Python

Como o LOF funciona?

  • Pontos são classificados por um score chamado local outlier factor (LOF)
  • LOF se baseia no conceito de densidade local
  • A localidade é definida pelo parâmetro n_neighbors
  • Pontos com menor densidade são classificados como outliers

Algoritmo LOF visualizado

Detecção de Anomalias em Python

A importância da localidade

  • A palavra-chave é local
  • O score LOF é apenas comparado com o de pontos próximos
Detecção de Anomalias em Python

LOF visualizado

Algoritmo LOF visualizado

Detecção de Anomalias em Python

LOF visualizado

Algoritmo LOF visualizado

Detecção de Anomalias em Python

LOF visualizado

Algoritmo LOF visualizado

Detecção de Anomalias em Python

Conjunto de dados transformado

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ção de Anomalias em Python

LOF em ação

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ção de Anomalias em Python

Filtrando no 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ção de Anomalias em Python

Detalhes do LOF

  • n_neighbors é o mais importante
  • Regra prática para ajustar n_neigbors:
    • 20 vizinhos para <10% de contaminação
  • Sem agregação permitida:
    • method é sempre largest
Detecção de Anomalias em Python

Limitações do LOF

  • Difícil de interpretar
  • O score LOF combina:
    • distância entre pontos
    • distância de alcançabilidade
    • muitos outros componentes
  • Não há faixa específica de score LOF para outliers
Detecção de Anomalias em Python

Vamos praticar!

Detecção de Anomalias em Python

Preparing Video For Download...