Local Outlier Factor (LOF) : un nouvel algorithme pour Scikit-learn

Publié le

Nicolas Goix, doctorant en troisième année de thèse à Télécom ParisTech, vient d’achever une mission de 3 mois financée par la Chaire Machine Learning for Big Data, au New York University Center for Data Science. Cette mission, réalisée sous la supervision du Dr. Andreas Müller, avait pour objectif l'implémentation d'un algorithme sur la librairie open source Scikit-learn, dans le domaine de la détection de nouveautés ou d’anomalies.

Nicolas Goix avait déjà précédemment travaillé sur Scikit-learn avec Alexandre Gramfort, enseignant-chercheur à Télécom ParisTech (l’un des fondateurs et principaux contributeurs de Scikit-learn). Cette précédente collaboration financée par le Paris-Saclay Center for Data Science, consistait à implémenter l’algorithme Isolation Forest. La mission à New York s'inscrit dans la continuité de ce travail, par l'implémentation d'un nouvel algorithme de détection d'anomalie.

L’algorithme, baptisé LOF (Local Outlier Factor), est d’approche classique. Il compare la densité locale des observations. S’il existe une différence entre le point observé et ses voisins, le point est considéré comme une anomalie. Cette méthode est basée sur les K plus proches voisins : la densité locale d’une observation est évaluée en considérant les K plus proche observations de son voisinage.

LOF peut être utilisé dès lors que l’on dispose de données dans un espace vectoriel (sans dimension temporelle). Comme tous les algorithmes de détection d’anomalie, LOF produit un indice, appelé fonction de score, qui représente le degré d’anomalie supposé des observations. Il suffit alors de définir un seuil pour qualifier les résultats « normaux » et « anormaux ». LOF peut avoir des applications pratiques dans de nombreux cas de figure : dans l’industrie pour repérer un incident (maintenance prédictive), dans les services pour détecter l’attrition (churn…).

Cette méthode est très puissante en dimension modérée. L’algorithme demeure efficace jusqu’à l’observation d’une cinquantaine de paramètres pour un point donné. Au-delà, étant basé sur une distance, LOF devient moins efficace. En revanche il fonctionne parfaitement sur un grand nombre d’observations, ce qui en fait une approche complémentaire à celle des forêts aléatoires (random forests). LOF peut en effet donner de bons résultats là où les random forests deviennent moins performantes.

Scikit-learn est une librairie Python collaborative, dont les développements sont assurés par la communauté des contributeurs. Quand un nouveau code est proposé, il doit être vérifié par au moins deux contributeurs avant d’être intégré. LOF est donc actuellement en cours de révision avant d’être proposé prochainement aux utilisateurs.

En savoir plus sur LOF sur le site de Scikit-learn