KNN do wykrywania wartości odstających

Wykrywanie anomalii w Pythonie

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Zastosowania KNN

  • Nadzorowane:
    • Regresja
    • Klasyfikacja
  • Nienadzorowane:
    • Grupowanie
    • Wykrywanie wartości odstających
Wykrywanie anomalii w Pythonie

Prostota KNN

Wyniki anomalii są obliczane na podstawie
  • Isolation Forest:
    • Głębokości drzewa
    • Rozmiaru podpróbki
    • Wielu innych składników
  • KNN:
    • Wyłącznie odległości między instancjami
Wykrywanie anomalii w Pythonie

Zbiór danych 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
  ...
Wykrywanie anomalii w Pythonie

KNN w działaniu

from pyod.models.knn import KNN

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

knn.fit(males)
Wykrywanie anomalii w Pythonie

KNN z prawdopodobieństwami wartości odstających

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
Wykrywanie anomalii w Pythonie

Liczba sąsiadów

# 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

Wykres przykładowego zbioru danych z 8 instancjami, gdzie A jest wartością odstającą, a strzałki wskazują 4 najbliższych sąsiadów.

Wykrywanie anomalii w Pythonie

Cechy KNN

Wykres przykładowego zbioru danych z 8 instancjami, gdzie A jest wartością odstającą, a strzałki wskazują 4 najbliższych sąsiadów.

Wykrywanie anomalii w Pythonie

Wady KNN

  • Zapamiętuje zbiór danych – nieefektywny pamięciowo
  • Wolna faza predykcji
  • Wrażliwy na skale cech
Wykrywanie anomalii w Pythonie

Czas na ćwiczenia!

Wykrywanie anomalii w Pythonie

Preparing Video For Download...