PyOD est une bibliothèque en Python qui regroupe de nombreux algorithmes de machine learning pour la détection d’anomalies dans des jeux de données multivariées.
Chaque algorithme peut être exploité en utilisant une approche similaire à celle suivie par scikit-learn: si le modèle est représenté par un objet clf,
- Il est entraîné en invoquant clf.
fit(X, y), oùXest l’ensemble du jeu de données, etyest une étiquette indiquant, pour chaque entrée, s’il s’agit d’une anomalie ou non. Pour les modèles reposant sur un apprentissage non supervisé (ils sont nombreux, dans le cadre de la détection d’anomalies),yest ignoré puisque sa valeur est inconnue. - La prédiction de l’anormalité est obtenue en invoquant
clf.predict(X), oùXest le jeu de données sur lequel la prédiction doit être appliquée. Le résultat est un vecteur d’étiquettes spécifiant, pour chaque entrée, s’il s’agit d’une anomalie ou non, d’après le modèle.
L’uniformisation de l’exploitation des algorithmes facilite leur comparaison. PyOD réalise d’ailleurs des benchmarks qui étudient les performances de nombreux algorithmes lorsqu’ils sont appliqués sur plusieurs jeux de données de référence.
En plus des approches considérées comme classiques, la bibliothèque propose des algorithmes plus expérimentaux. Elle fournit en effet un environnement facilitant l’exposition de travaux de recherche. Sa documentation mentionne souvent les papiers scientifiques dont sont issus (ou dont s’inspirent) les algorithmes disponibles.
Approches proposées
PyOD classifie les algorithmes (et leurs modèles) proposés en trois familles d’apprentissage:
- L’apprentissage supervisé est sans doute le plus évident. Les données d’apprentissage comprennent une étiquette spécifiant si chaque entrée est effectivement une anomalie ou non, et le modèle est entraîné afin d’être capable de prédire la valeur de cette étiquette pour de nouvelles entrées. Comme les entrées anormales sont typiquement beaucoup moins nombreuses que les entrées normales, le jeu d’apprentissage est souvent fortement déséquilibré, si bien qu’un traitement des données est nécessaire afin de rétablir leur équilibre.
- L’apprentissage semi-supervisé repose sur des données d’apprentissage pour lesquelles on considère qu’il n’y a pas d’anomalie. Par exemple, on peut récupérer l’historique des données produites par des capteurs industriels et demander à un expert métier d’indiquer les moments où le processus à surveiller présentait un comportement normal (en excluant les arrêts de production, les mises en routes, les problèmes ponctuels, etc.). Le modèle considère alors une entrée comme anormale lorsqu’elle présente un caractère nouveau, non observé dans les données d’apprentissage, même si cette entrée figure au centre qu’un groupe dense d’entrées.
- Enfin, on a recours à l’apprentissage non-supervisé lorsque les données d’apprentissage contiennent à la fois des entrées normales et des entrées anormales, sans qu’on puisse identifier à quelle catégorie appartient chacune des entrées. Les algorithmes appartenant à cette famille doivent prendre en compte l’existence d’un « bruit » parmi les données saines. Comme pour l’apprentissage supervisé, on suppose que les entrées anormales sont peu nombreuses. On suppose également qu’elles sont relativement isolées des autres entrées, alors que les entrées normales ont tendance à former des amas denses. C’est en considérant la densité du voisinage d’une nouvelle entrée que le modèle détermine son degré d’anormalité.
Quantification du degré d’anormalité
Lorsqu’un algorithme d’apprentissage non-supervisé est utilisé, le modèle permet de calculer un score représentant le degré d’anormalité d’une entrée. Toutes les approches proposées par PyOD ont en commun que, plus le score d’une entrée est élevé, plus cette entrée est considérée comme anormale par un modèle entraîné. Un seuil, établi à partir des données d’entraînement, peut alors être utilisé afin de convertir le score en une valeur binaire (une étiquette indiquant si l’entrée est considérée comme normale ou non). Il peut cependant être intéressant de considérer le score lui-même, par exemple pour observer les effets d’une variation du seuil. La méthode clf.decision_function(X) permet d’obtenir ce score.
Plutôt que d’utiliser un score brut, qui fournit un ordre sur les entrées mais dont la valeur n’a pas beaucoup de sens en soi, le modèle peut estimer la probabilité qu’une entrée donnée soit anormale en invoquant clf.predict_proba(X). Cependant, cette méthode applique typiquement une simple transformation linéaire à partir des valeurs minimale et maximale des scores obtenus avec le jeu d’entraînement. Il ne s’agit donc pas d’une approche très sophistiquée.
Que le score brut ou sa forme normalisée soit utilisée, le résultat est une valeur continue, qu’il peut être intéressant de produire sous la forme d’une série chronologique pouvant être affichée sur un tableau de bord. Son utilisateur a ainsi un indicateur visuel de l’évolution au cours du temps du risque de se trouver dans une situation anormale.
Exemple de mise en œuvre
Dans le cadre d’un projet de recherche, j’ai eu l’occasion d’intégrer PyOD au sein d’une plateforme de gestion de données IoT. L’approche adoptée peut se diviser en trois temps.
Premièrement, des données issues de capteurs sont collectées et stockées par la plateforme. Divers services de traitement et de visualisation sont disponibles pour une analyse par un expert métier.
Ponctuellement, cet expert peut sélectionner un sous-ensemble des capteurs qui sont liés à une même partie d’un processus. Il pourrait s’agir, par exemple, de capteurs mesurant la température, l’humidité, la vibration et l’intensité sonore d’une machine de production. La plateforme assiste l’expert dans sa tâche en mettant en exploitant les propriétés associées à chaque capteur: cela permet d’identifier plus rapidement ceux concernés par l’observation de la machine considérée. La plateforme réalise également des analyses de corrélation afin de mettre en évidence les capteurs dont les valeurs semblent généralement corrélées. L’expert choisit une plage de temps représentative du fonctionnement de la machine, ce qui permet à la plateforme d’entraîner un modèle de détection d’anomalies grâce à un algorithme non supervisé ou semi-supervisé. Ce modèle est enregistré au sein de la plateforme.
Par la suite, la plateforme déclenche périodiquement (par exemple, toutes les minutes) l’évaluation des modèles enregistrés sur base des données courantes de l’ensemble des capteurs qui leur sont associés. Le résultat de cette évaluation est un score d’anormalité, qui est rapporté par la plateforme sous la forme d’un capteur virtuel, observable et analysable au même titre que tous les capteurs pris en charge par la plateforme. L’expert métier peut ainsi intégrer ce score dans un tableau de bord et déclencher une alerte lorsque le modèle rapporte un degré d’anormalité particulièrement élevé.
Les valeurs brutes de quelques (dizaines de) capteurs sont ainsi synthétisées en une unique valeur mettant en évidence des aberrations parfois subtiles d’un procédé, ce qui facilite son contrôle et permet de réagir plus rapidement en cas de déviation du comportement attendu.
Conclusion
PyOD propose une collection très riche d’algorithmes de détection d’anomalies. Les approches non supervisées et semi-supervisées se prêtent assez bien à une exploitation industrielle, dans la mesure où il est souvent difficile, dans ce contexte, de déterminer a priori les situations qui doivent être considérées comme normales ou anormales.
Bien que PyOD ne propose pas d’approches spécifiques pour les séries chronologiques, un réseau de capteurs associés à un procédé industriel peut être exploité afin d’entraîner puis d’exploiter un modèle de détection d’anomalies, sans qu’un expert métier n’ait besoin d’une connaissance pointue des algorithmes sous-jacents. Une plateforme de gestion des données IoT peut systématiser une telle exploitation en fournissant en temps réel des indicateurs simples, clairs et pertinents du degré d’anormalité que présentent les procédés pour lesquels des modèles ont été entraînés.
C’est, à n’en pas douter, une plus-value pour une entreprise désireuse de générer davantage de valeur en assistant plus efficacement le personnel en charge de l’opération de ses installations.