KNN voor outlierdetectie

Anomaly Detection in Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Toepassingen van KNN

  • Supervised:
    • Regressie
    • Classificatie
  • Unsupervised:
    • Clustering
    • Outlierdetectie
Anomaly Detection in Python

Eenvoud van KNN

Anomaliescores worden berekend in
  • Isolation Forest:
    • Boomdiepte
    • Subsamplegrootte
    • Veel andere componenten
  • KNN:
    • Alleen de afstand tussen instanties
Anomaly Detection in Python

Ansur Male-dataset

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
  ...
Anomaly Detection in Python

KNN in actie

from pyod.models.knn import KNN

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

knn.fit(males)
Anomaly Detection in Python

KNN met outlierkansen

probs = knn.predict_proba(males)


# Gebruik 55% drempel voor filteren is_outlier = probs[:, 1] > 0.55 # Isoleer de outliers outliers = males[is_outlier] len(outliers)
13
Anomaly Detection in Python

Het aantal buren

# k=20 wanneer 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

Een plot van een voorbeeld-dataset met 8 instanties, met A als outlier en pijlen tussen A en de 4 dichtstbijzijnde buren.

Anomaly Detection in Python

Eigenschappen van KNN

Een plot van een voorbeeld-dataset met 8 instanties, met A als outlier en pijlen tussen A en de 4 dichtstbijzijnde buren.

Anomaly Detection in Python

Nadelen van KNN

  • Onthoudt de dataset – geheugeninefficiënt
  • Trage predictiefase
  • Gevoelig voor featureschalen
Anomaly Detection in Python

Laten we oefenen!

Anomaly Detection in Python

Preparing Video For Download...