Algorithmes, Applications

Machine learning pour la détection d’anomalies

La détection d’anomalies est un outil très utilisé en analyse de données. De façon simple, il s’agit de trouver en étudiant toutes...

Écrit par Ilyes Talbi · 5 min lecture >
Machine learning pour la détection d'anomalies

La détection d’anomalies est un outil très utilisé en analyse de données. De façon simple, il s’agit de trouver en étudiant toutes nos données celles qui semblent suspectes. Le machine learning a permit de faire de gros progrès dans ce domaine.

Ces techniques sont utilisées dans l’industrie pour détecter des pannes, en finance pour prévenir d’éventuelles chutes d’actions ou en médecine pour détecter des problèmes de santé chez un patient.

Pour la petite anecdote, lors de mon dernier voyage aux USA, je me suis trompé de destination sur le site de la compagnie. J’ai confondu San José la capitale du Costa Rica et San José la ville de Silicon Valley… Heureusement pour moi, malgré plusieurs tentatives, ma banque a bloqué le paiement. Et au moment ou je me suis rendu compte de mon erreur j’ai pu acheter mon billet !

C’est typiquement le cas de figure ou les systèmes de détections d’anomalies peuvent être utiles. Qui prend un billet pour le Costa Rica la veille du vol ? Je suis tellement reconnaissant en vers eux (ils m’ont quand même permis d’économiser quelques centaines d’euros) que je vous en parle aujourd’hui 😉

Qu’est-ce qu’une anomalie au sens mathématique ?


Il n’y a pas de définition mathématique fixe de ce qu’est une anomalie. Les cas d’usages sont très divers et il ne serait pas très pertinent de définir une métrique globale. On peut, d’abord, définir une anomalie comme étant une observation éloignée du reste des observations.

Anomalie ponctuelle

Détection d'anomalies : anomalies ponctuelles
Figure 1 : Exemple d’anomalies ponctuelles


Dans la classification ci-dessus, on voit clairement que le points bleu ciel et le point vert constituent des anomalies. Lorsqu’il est possible d’avoir une représentation en 2D ou en 3D, la détection d’anomalies peut se faire de manière géométrique. L’opérateur décide de fixer une distance seuil, à partir de laquelle une observation est considérée comme une anomalie.

Cette approche peut être généralisée à des problèmes divers, quelques soient les dimensions des données impliquées. La seule condition est de pouvoir définir une distance. Ce qui n’est pas toujours facile : par exemple si on a des enregistrements sonores ou des vidéos. Sur ce dernier point vous pouvez lire notre article sur la classification de sons.

Les données bleu ciel et verte sont ce que l’on appelle des anomalies ponctuelles. En plus de ce type d’anomalies, Chandola, Banerjee et Kumar, décrivent dans un article de 2009 intitulé ‘’Anomaly Detection’’, deux autres types d’anomalies : les anomalies contextuelles et les anomalies collectives.

Anomalie contextuelle


On dit qu’une donnée est une anomalie contextuelle, lorsqu’elle est anormale dans un contexte donné. Une température de 15°C à Paris en milieu d’après-midi n’est pas une anomalie ponctuelle. Il est courant d’avoir ce genre de température. En revanche, cette même température au mois de juillet est clairement une anomalie (cf. exemple ci-dessous).

Détection d'anomalies : anomalies contextuelles
Figure 2 : Exemple d’anomalie contextuelle

Anomalie collective

Si un ensemble de données est anormale par rapport au reste des données, on parle d’anomalie collective. Dans l’exemple ci-dessous, l’électrocardiogramme d’un patient présente clairement une anomalie collective.
 

Détection d'anomalies : anomalies collectives
Figure 3 : Exemple d’anomalie collective


La détection de ces 3 types d’anomalies n’est pas toujours facile. C’est même souvent difficile et traité au cas par cas. Il existe un certain nombre de facteurs qui rendent la tache compliquée. La première difficulté réside dans la définition de ce qu’est une anomalie dans un contexte précis. La définition que je vous donne plus haut est qualitative. Or pour une application concrète il nous faut des critères quantitatifs.

Il faut donc définir un seuil à partir duquel on considère une donnée comme anormale. Ce seuil dépend complètement du cas d’usage. Pour la température corporelle par exemple, on peut fixer un seuil de 0.3°C autour de 37°C (je ne suis pas médecin donc à vérifier 😊), une température de 38°C sera alors considérée comme une anomalie. Alors que pour la température extérieure, le seuil sera plus grand.

Quoiqu’il en soit, on voit bien que définir ce qu’est une anomalie pour une application donnée n’est pas facile. C’est pourtant primordial si on veut les détecter. Une seconde contrainte, liée à la qualité des données disponibles, est le fait que les données peuvent parfois être bruitées. Même si nous avons des outils pour modéliser le bruit dans certains cas, faire la différence entre une anomalie et un simple bruit constitue un autre défi.

Application de la détection d’anomalies : analyse du bruit d’un moteur pour détecter et prévoir les pannes

Une de mes motivations pour écrire cet article est que j’avais un projet en lien avec la détection d’anomalies. J’avais pour ambition de créer un capteur, à placer près d’un moteur (de voiture par exemple), qui jugera si le bruit fait par le moteur est naturel ou s’il faut prévoir des réparations.

L’idée était de récolter des enregistrements sonores du moteur en état de marche, pour entraîner un algorithme qui analysera en temps réel le bruit fait par le moteur, et le comparera aux bruits des données d’entrainement. Faute de temps et d’argent le projet n’a pas eu lieu, mais peut être qu’en partageant l’idée quelqu’un le fera 😉


Application de la détection d’anomalies : vol de coordonnées bancaires dans le e-commerce


Dans le e-commerce, les tentatives de fraudes avec des coordonnées bancaire piratées sont courantes. Lorsqu’un incident de ce genre arrive, l’entreprise perd de l’argent et doit traiter des réclamations supplémentaires. La perte est évidente. Pour remédier à ce problème, il existe des techniques de machine learning pour la détection de fraudes.

Le commerçant a en sa possession énormément de données relatives à ses commandes. Les informations de l’acheteur, son identité, ses coordonnées, son adresse, l’adresse de livraison, le contenu de sa commande et son montant, et plusieurs autres informations.

Avec ces données, l’entreprise peut évaluer le degré de confiance d’un contrat. Si elle pense qu’un contrat est suspicieux elle peut exiger des renseignements supplémentaires à l’acheteur. Comme par exemple un justificatif de domicile ou des documents complémentaires. Pour ce type d’applications, on utilise souvent des algorithmes comme random forest ou XGBoost.


Panorama des méthodes de détection d’anomalies


Il existe un certain nombre de méthodes différentes pour la détection d’anomalies. Evidemment, le choix de l’algorithme dépend du cas d’usage, du contexte, du type de données disponibles et beaucoup d’autres paramètres. Il faut aussi savoir, que chaque type d’anomalies à ses propres contraintes et donc des solutions qui lui sont propres.

Pour la détection des anomalies ponctuelles, tous les algorithmes de classification peuvent être utilisés. Il est alors possible de repérer une anomalie puisqu’elle sera seule dans une classe. En réalité c’est plus complexe que ça, les anomalies peuvent avoir un réel impact sur la classification. Mais il existe un certain nombre d’approches appelées, ‘’One Class Classification’’ (ou encore ‘’Novelty Detection’’).

Elles permettent de résoudre ce problème. Souvent, en amont du travail de classification, l’opérateur doit s’assurer qu’il n’y a pas d’outliers. Les outliers sont des points extrêmes et bien souvent ce sont des anomalies. Ces outliers peuvent impacter négativement la robustesse du modèle.

Plus précisément, comme toujours en machine learning, les méthodes de détections d’anomalies sont de deux types. On parle de détection supervisée et détection non-supervisée.

Détection d’anomalies supervisée

Les méthodes les plus efficaces sont celles que l’on utilise lorsque l’on a des données labellisées. C’est à dire que l’on a des exemples de ce qui est une anomalie et de ce qui n’en est pas une.

Par exemple pour la détection de spams, on part de larges bases de données d’e-mails qui sont classés en tant que spam ou en tant que mail normal. Le modèle apprend alors ce qui est un spam et pourra le détecter si vous en recevez un.

Pour ce genre de problèmes on utilise essentiellement des approches de Gradient Boosting si les variables dont on dispose sont catégorielles. Sinon, lorsque l’on a des textes ou des images les réseaux de neurones donnent d’assez bons résultats.

Détection d’anomalies non-supervisée

Malheureusement ces méthodes ne sont utiles que dans le cas ou on aurait des données labellisées. Sauf que souvent on a pas vraiment d’à priori sur ce qu’est une anomalie.

Dans ce cas il y a beaucoup moins de certitudes sur les performances des algorithmes. Vous devrez travailler avec k-means ou des auto-encodeurs, mais votre modèle devra s’adapter au types de données dont vous disposez…


La détection d’anomalies est une tache assez difficile, qui nécessite une bonne connaissance du domaine dans lequel on veut l’appliquer. Il est difficile d’envisager qu’un jour il y aura un algorithme adapté à tous les cas. Cette approche, comme souvent en machine learning, se prête peu à la généralisation.

3 Replies to “Machine learning pour la détection d’anomalies”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *