Local Outlier Factor

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

Bekhruz (Bex) Tuychiev

Data Science Writer

Local Outlier Factor (LOF) คืออะไร?

คุณสมบัติ

  • อัลกอริทึมแบบ density-based
  • เสนอในปี 2000
  • ทำงานได้ดีกับข้อมูลที่มีมิติสูงปานกลาง
  • เร็วกว่า KNN และ Isolation Forest ได้
การตรวจจับความผิดปกติใน Python

LOF ทำงานอย่างไร?

  • จุดข้อมูลถูกจัดประเภทด้วยคะแนนที่เรียกว่า local outlier factor (LOF)
  • LOF อิงตามแนวคิดของความหนาแน่นเฉพาะที่
  • กำหนดขอบเขตเฉพาะที่โดยตั้งค่าพารามิเตอร์ n_neighbors
  • จุดที่มีความหนาแน่นต่ำกว่าจะถูกจัดเป็น outlier

การแสดงภาพอัลกอริทึม LOF

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

ความสำคัญของความเป็นเฉพาะที่

  • คำว่า local คือหัวใจสำคัญ
  • คะแนน LOF เปรียบเทียบเฉพาะกับจุดข้อมูลที่อยู่ใกล้เคียงเท่านั้น
การตรวจจับความผิดปกติใน Python

LOF ในรูปภาพ

การแสดงภาพอัลกอริทึม LOF

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

LOF ในรูปภาพ

การแสดงภาพอัลกอริทึม LOF

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

LOF ในรูปภาพ

การแสดงภาพอัลกอริทึม LOF

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

ชุดข้อมูลที่แปลงแล้ว

import pandas as pd

males_transformed = pd.read_csv("males_transformed.csv")

males_transformed.head()
   abdominalextensiondepthsitting  acromialheight  acromionradialelength  ...
0                        0.365531        0.427976               0.113152   
1                       -0.492137       -0.724973              -0.529301   
2                        0.857097       -0.146048               0.357496   
3                       -0.462610       -1.521525              -1.467860   
4                       -0.026349        2.151957               1.985876
การตรวจจับความผิดปกติใน Python

LOF ในการปฏิบัติ

from pyod.models.lof import LOF


# Fit lof = LOF(n_neighbors=20, metric="manhattan") lof.fit(males_transformed) print(lof.labels_)
array([0, 0, 0, ..., 0, 0, 1])
การตรวจจับความผิดปกติใน Python

การกรองข้อมูลใน LOF

# Isolate the outliers
probs = lof.predict_proba(males_transformed)

is_outlier = probs[:, 1] > 0.55
outliers = males_transformed[is_outlier]

len(outliers)
2
การตรวจจับความผิดปกติใน Python

รายละเอียดของ LOF

  • n_neighbors สำคัญที่สุด
  • แนวทางการปรับค่า n_neigbors:
    • 20 neighbors สำหรับ contamination น้อยกว่า 10%
  • ไม่รองรับการรวมค่า:
    • method จะเป็น largest เสมอ
การตรวจจับความผิดปกติใน Python

ข้อเสียของ LOF

  • ตีความได้ยาก
  • คะแนน LOF รวมปัจจัยหลายส่วน:
    • ระยะห่างระหว่างจุดข้อมูล
    • reachability distance
    • องค์ประกอบอื่น ๆ อีกมาก
  • ไม่มีช่วงคะแนน LOF ที่แน่นอนสำหรับ outlier
การตรวจจับความผิดปกติใน Python

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

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

Preparing Video For Download...