Introduction
L'algorithme Local Outlier Factor (LOF) est une méthode d'apprentissage automatique non supervisé qui est utilisée pour détecter les anomalies dans les données. Il calcule l'écart de densité locale d'un point de données donné par rapport à ses voisins et considère comme des anomalies les échantillons qui ont une densité considérablement plus faible que leurs voisins.
Dans ce laboratoire, nous allons utiliser LOF pour détecter les anomalies dans un ensemble de données.
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 pour la pratique.
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 des commentaires après la session, et nous résoudrons rapidement le problème pour vous.
Importation des bibliothèques
Nous allons importer numpy et matplotlib pour la manipulation et la visualisation des données respectivement. Nous allons également importer LocalOutlierFactor de sklearn.neighbors pour la détection d'anomalies.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import LocalOutlierFactor
Générer des données avec des anomalies
Nous allons générer un ensemble de données composé de 120 points de données, avec 100 données normales et 20 anomalies. Nous allons ensuite tracer les données pour visualiser les anomalies.
np.random.seed(42)
X_inliers = 0.3 * np.random.randn(100, 2)
X_inliers = np.r_[X_inliers + 2, X_inliers - 2]
X_outliers = np.random.uniform(low=-4, high=4, size=(20, 2))
X = np.r_[X_inliers, X_outliers]
plt.scatter(X[:, 0], X[:, 1], color="k", s=3.0)
plt.axis("tight")
plt.xlim((-5, 5))
plt.ylim((-5, 5))
plt.xlabel("Data points")
plt.title("Data with Outliers")
plt.show()
Ajuster le modèle pour la détection d'anomalies
Nous allons utiliser LocalOutlierFactor pour ajuster le modèle pour la détection d'anomalies et calculer les étiquettes prédites des échantillons d'entraînement.
clf = LocalOutlierFactor(n_neighbors=20, contamination=0.1)
y_pred = clf.fit_predict(X)
X_scores = clf.negative_outlier_factor_
Tracer les résultats
Nous allons tracer les points de données avec des cercles dont le rayon est proportionnel aux scores d'anomalie.
plt.scatter(X[:, 0], X[:, 1], color="k", s=3.0, label="Data points")
## plot circles with radius proportional to the outlier scores
radius = (X_scores.max() - X_scores) / (X_scores.max() - X_scores.min())
scatter = plt.scatter(
X[:, 0],
X[:, 1],
s=1000 * radius,
edgecolors="r",
facecolors="none",
label="Outlier scores",
)
plt.axis("tight")
plt.xlim((-5, 5))
plt.ylim((-5, 5))
plt.xlabel("Outlier Detection")
plt.legend(
handler_map={scatter: HandlerPathCollection(update_func=update_legend_marker_size)}
)
plt.title("Local Outlier Factor (LOF)")
plt.show()
Sommaire
Dans ce laboratoire, nous avons appris à utiliser le Local Outlier Factor (LOF) pour la détection d'anomalies. Nous avons généré un ensemble de données avec des anomalies, ajusté le modèle pour la détection d'anomalies et tracé les résultats. LOF est une méthode d'apprentissage automatique non supervisée puissante qui peut être utilisée pour détecter des anomalies dans une large gamme d'applications.