KNN pour la détection d'anomalies

Détection d’anomalies en Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Applications de KNN

  • Apprentissage supervisé :
    • Régression
    • Classification
  • Non supervisé :
    • Regroupement (clustering)
    • Détection d'anomalies
Détection d’anomalies en Python

Simplicité de KNN

Les scores d'anomalie sont calculés avec
  • Isolation Forest :
    • Profondeur des arbres
    • Taille des sous-échantillons
    • Plusieurs autres composants
  • KNN :
    • Uniquement la distance entre instances
Détection d’anomalies en Python

Jeu de données Ansur (hommes)

import pandas as pd

males = pd.read_csv("ansur_male.csv")
males.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4082 entries, 0 to 4081
Data columns (total 95 columns):
 #   Column                          Non-Null Count  Dtype
 0   abdominalextensiondepthsitting  4082 non-null   int64
 1   acromialheight                  4082 non-null   int64
 2   acromionradialelength           4082 non-null   int64
 3   anklecircumference              4082 non-null   int64
 4   axillaheight                    4082 non-null   int64
  ...
Détection d’anomalies en Python

KNN en pratique

from pyod.models.knn import KNN

knn = KNN(contamination=0.01, n_jobs=-1)

knn.fit(males)
Détection d’anomalies en Python

KNN avec probabilités d'anomalie

probs = knn.predict_proba(males)


# Seuil de 55 % pour filtrer is_outlier = probs[:, 1] > 0.55 # Isolez les anomalies outliers = males[is_outlier] len(outliers)
13
Détection d’anomalies en Python

Le nombre de voisins

# k=20 quand la contamination <=10 %
knn = KNN(n_neighbors=20, n_jobs=-1)
knn.fit(males)

probs = knn.predict_proba(males)

is_outlier = probs[:, 1] > .55
outliers = males[is_outlier]

len(outliers)
15

Un nuage de points d'un petit jeu de données (8 instances) : A est une anomalie, avec des flèches vers ses 4 plus proches voisins.

Détection d’anomalies en Python

Caractéristiques de KNN

Un nuage de points d'un petit jeu de données (8 instances) : A est une anomalie, avec des flèches vers ses 4 plus proches voisins.

Détection d’anomalies en Python

Limites de KNN

  • Mémorise le jeu de données – coûteux en mémoire
  • Étape de prédiction lente
  • Sensible à l'échelle des variables
Détection d’anomalies en Python

Passons à la pratique !

Détection d’anomalies en Python

Preparing Video For Download...