Facteur d'isolement local (LOF)

Détection d’anomalies en Python

Bekhruz (Bex) Tuychiev

Data Science Writer

Qu'est-ce que le Local Outlier Factor (LOF) ?

Caractéristiques

  • Algorithme basé sur la densité
  • Proposé en 2000
  • Efficace avec des données modérément dimensionnelles
  • Peut être plus rapide que KNN et Isolation Forest
Détection d’anomalies en Python

Comment fonctionne LOF ?

  • Les points sont classés via un score appelé facteur d'isolement local (LOF)
  • Le LOF repose sur la notion de densité locale
  • La localité se règle avec le paramètre n_neighbors
  • Les points à plus faible densité sont classés comme anomalies

Algorithme LOF visualisé

Détection d’anomalies en Python

L'importance de la localité

  • Le mot « local » est essentiel
  • Le score LOF est comparé uniquement à celui des points voisins
Détection d’anomalies en Python

LOF : visualisation

Algorithme LOF visualisé

Détection d’anomalies en Python

LOF : visualisation

Algorithme LOF visualisé

Détection d’anomalies en Python

LOF : visualisation

Algorithme LOF visualisé

Détection d’anomalies en Python

Jeu de données transformé

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
Détection d’anomalies en Python

LOF en pratique

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])
Détection d’anomalies en Python

Filtrage avec LOF

# Isoler les anomalies
probs = lof.predict_proba(males_transformed)

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

len(outliers)
2
Détection d’anomalies en Python

Détails de LOF

  • n_neighbors est le plus important
  • Règle empirique pour régler n_neigbors :
    • 20 voisins pour <10 % de contamination
  • Pas d'agrégation :
    • method vaut toujours largest
Détection d’anomalies en Python

Limites de LOF

  • Difficile à interpréter
  • Le score LOF combine :
    • distance entre points
    • distance d'atteignabilité
    • de nombreux autres éléments
  • Pas de plage de score LOF spécifique pour les anomalies
Détection d’anomalies en Python

Passons à la pratique !

Détection d’anomalies en Python

Preparing Video For Download...