Détection de nouveauté et d'anomalies à l'aide de Scikit-Learn

Beginner

This tutorial is from open-source community. Access the source code

Introduction

La détection de nouveauté et d'anomalies est un ensemble de techniques permettant d'identifier si une nouvelle observation appartient à la même distribution que les observations existantes ou si elle doit être considérée comme différente. Ces techniques sont couramment utilisées pour nettoyer des jeux de données réels en identifiant les observations anormales ou inhabituelles.

Il existe deux distinctions importantes dans ce contexte :

  1. La détection d'anomalies : Les données d'entraînement contiennent des anomalies, qui sont des observations éloignées des autres. Les estimateurs de détection d'anomalies tentent d'ajuster les régions où les données d'entraînement sont les plus concentrées, en ignorant les observations aberrantes.
  2. La détection de nouveauté : Les données d'entraînement ne sont pas polluées par des anomalies, et l'objectif est de détecter si une nouvelle observation est une anomalie. Dans ce contexte, une anomalie est également appelée nouveauté.

Le projet scikit-learn fournit un ensemble d'outils d'apprentissage automatique qui peuvent être utilisés pour la détection de nouveauté et d'anomalies. Ces outils sont implémentés à l'aide d'algorithmes d'apprentissage non supervisé, ce qui signifie qu'ils apprennent des modèles à partir des données sans avoir besoin d'exemples étiquetés.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder à Jupyter Notebook et pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.

Importez les bibliothèques nécessaires

Tout d'abord, nous devons importer les bibliothèques nécessaires. Dans cet exemple, nous utiliserons le module sklearn de scikit-learn.

from sklearn import neighbors

Chargez le jeu de données

Ensuite, nous devons charger le jeu de données sur lequel nous souhaitons effectuer la détection d'anomalies. Vous pouvez utiliser n'importe quel jeu de données de votre choix ou créer un jeu de données personnalisé. Dans cet exemple, nous utiliserons un jeu de données d'échantillonnage appelé X_train.

X_train = [0.5, 1.5, 2.5, 3.5, 4.5, 10.5, 11.5, 12.5, 13.5, 14.5]

Créez un estimateur de détection d'anomalies

Maintenant, nous pouvons créer un objet estimateur de détection d'anomalies à partir de la classe neighbors.LocalOutlierFactor. Cette classe implémente l'algorithme Local Outlier Factor, qui est une méthode populaire pour la détection d'anomalies.

estimator = neighbors.LocalOutlierFactor()

Ajustez le modèle aux données d'entraînement

Ensuite, nous pouvons ajuster l'estimateur de détection d'anomalies à nos données d'entraînement en utilisant la méthode fit.

estimator.fit(X_train)

Prédire les anomalies

Une fois que le modèle est ajusté, nous pouvons utiliser la méthode predict pour prédire si de nouvelles observations sont des anomalies ou non. La méthode predict renvoie 1 pour les observations normales et -1 pour les anomalies.

X_test = [5.5, 8.5]
predictions = estimator.predict(X_test)
print(predictions)

Accéder aux scores d'anomalie

En plus de prédire les anomalies, nous pouvons également accéder aux scores d'anomalie pour chaque observation en utilisant l'attribut negative_outlier_factor_. Des scores d'anomalie plus bas indiquent une plus grande anomalie.

outlier_scores = estimator.negative_outlier_factor_
print(outlier_scores)

Sommaire

Dans ce laboratoire, nous avons appris à effectuer la détection de nouveauté et d'anomalies à l'aide de la bibliothèque scikit - learn. Nous avons créé un estimateur de détection d'anomalies, l'avons ajusté aux données d'entraînement, prédit les anomalies dans de nouvelles observations et avons accès aux scores d'anomalie. Ces techniques peuvent être utilisées pour identifier des observations anormales ou inhabituelles dans un ensemble de données et sont couramment utilisées pour les tâches de détection d'anomalies.