KNN สำหรับการตรวจจับค่าผิดปกติ

การตรวจจับความผิดปกติใน Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

การประยุกต์ใช้ KNN

  • แบบมีผู้สอน (Supervised):
    • การถดถอย
    • การจำแนกประเภท
  • แบบไม่มีผู้สอน (Unsupervised):
    • การจัดกลุ่ม
    • การตรวจจับค่าผิดปกติ
การตรวจจับความผิดปกติใน Python

ความเรียบง่ายของ KNN

คะแนนความผิดปกติถูกคำนวณจาก
  • Isolation Forest:
    • ความลึกของต้นไม้
    • ขนาดของชุดตัวอย่างย่อย
    • องค์ประกอบอื่น ๆ อีกมาก
  • KNN:
    • เพียงระยะห่างระหว่างอินสแตนซ์เท่านั้น
การตรวจจับความผิดปกติใน Python

ชุดข้อมูล 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
  ...
การตรวจจับความผิดปกติใน Python

KNN ในทางปฏิบัติ

from pyod.models.knn import KNN

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

knn.fit(males)
การตรวจจับความผิดปกติใน Python

KNN กับความน่าจะเป็นของค่าผิดปกติ

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
การตรวจจับความผิดปกติใน Python

จำนวนเพื่อนบ้าน

# 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

กราฟของชุดข้อมูลตัวอย่างที่มี 8 อินสแตนซ์ โดย A เป็นค่าผิดปกติ พร้อมลูกศรชี้ระหว่าง A กับเพื่อนบ้านที่ใกล้ที่สุด 4 จุด

การตรวจจับความผิดปกติใน Python

คุณสมบัติของ KNN

กราฟของชุดข้อมูลตัวอย่างที่มี 8 อินสแตนซ์ โดย A เป็นค่าผิดปกติ พร้อมลูกศรชี้ระหว่าง A กับเพื่อนบ้านที่ใกล้ที่สุด 4 จุด

การตรวจจับความผิดปกติใน Python

ข้อเสียของ KNN

  • จดจำชุดข้อมูลทั้งหมด — ใช้หน่วยความจำสูง
  • ขั้นตอนการพยากรณ์ช้า
  • ไวต่อสเกลของฟีเจอร์
การตรวจจับความผิดปกติใน Python

มาฝึกกันเถอะ!

การตรวจจับความผิดปกติใน Python

Preparing Video For Download...