KNN untuk deteksi outlier

Deteksi Anomali dengan Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Aplikasi KNN

  • Terawasi:
    • Regresi
    • Klasifikasi
  • Tak terawasi:
    • Klastering
    • Deteksi outlier
Deteksi Anomali dengan Python

Kesederhanaan KNN

Skor anomali dihitung pada
  • Isolation Forest:
    • Kedalaman pohon
    • Ukuran sub-sampel
    • Banyak komponen lain
  • KNN:
    • Hanya jarak antar instance
Deteksi Anomali dengan Python

Dataset 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
  ...
Deteksi Anomali dengan Python

KNN dalam praktik

from pyod.models.knn import KNN

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

knn.fit(males)
Deteksi Anomali dengan Python

KNN dengan probabilitas outlier

probs = knn.predict_proba(males)


# Gunakan ambang 55% untuk pemfilteran is_outlier = probs[:, 1] > 0.55 # Pisahkan outlier outliers = males[is_outlier] len(outliers)
13
Deteksi Anomali dengan Python

Jumlah tetangga

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

Plot dataset contoh dengan 8 instance, A sebagai outlier dan panah ke 4 tetangga terdekatnya.

Deteksi Anomali dengan Python

Fitur KNN

Plot dataset contoh dengan 8 instance, A sebagai outlier dan panah ke 4 tetangga terdekatnya.

Deteksi Anomali dengan Python

Kekurangan KNN

  • Menghafal dataset — boros memori
  • Prediksi lambat
  • Sensitif terhadap skala fitur
Deteksi Anomali dengan Python

Ayo berlatih!

Deteksi Anomali dengan Python

Preparing Video For Download...