KNN pro detekci odlehlých hodnot

Detekce anomálií v Pythonu

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Využití KNN

  • Supervised:
    • Regrese
    • Klasifikace
  • Unsupervised:
    • Shlukování
    • Detekce odlehlých hodnot
Detekce anomálií v Pythonu

Jednoduchost KNN

Skóre anomálií se počítají v
  • Isolation Forest:
    • Hloubka stromu
    • Velikost podvzorku
    • Mnoho dalších složek
  • KNN:
    • Pouze vzdálenost mezi instancemi
Detekce anomálií v Pythonu

Datová sada Ansur Male

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
  ...
Detekce anomálií v Pythonu

KNN v praxi

from pyod.models.knn import KNN

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

knn.fit(males)
Detekce anomálií v Pythonu

KNN s pravděpodobnostmi odlehlých hodnot

probs = knn.predict_proba(males)


# Use 55% threshold for filtering is_outlier = probs[:, 1] > 0.55 # Isolate the outliers outliers = males[is_outlier] len(outliers)
13
Detekce anomálií v Pythonu

Počet sousedů

# k=20 when contamination is <=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

Graf vzorové datové sady s 8 instancemi, kde A je odlehlá hodnota a šipky ukazují na 4 nejbližší sousedy.

Detekce anomálií v Pythonu

Vlastnosti KNN

Graf vzorové datové sady s 8 instancemi, kde A je odlehlá hodnota a šipky ukazují na 4 nejbližší sousedy.

Detekce anomálií v Pythonu

Nevýhody KNN

  • Ukládá celou datovou sadu – paměťově náročné
  • Pomalá fáze predikce
  • Citlivé na měřítko příznaků
Detekce anomálií v Pythonu

Pojďme si procvičit!

Detekce anomálií v Pythonu

Preparing Video For Download...