Hệ số ngoại lệ cục bộ (LOF)

Phát hiện bất thường với Python

Bekhruz (Bex) Tuychiev

Data Science Writer

LOF là gì?

Đặc điểm

  • Thuật toán dựa trên mật độ
  • Đề xuất năm 2000
  • Hoạt động tốt với dữ liệu số chiều trung bình cao
  • Có thể nhanh hơn KNN và Isolation Forest
Phát hiện bất thường với Python

LOF hoạt động thế nào?

  • Phân loại điểm bằng điểm số gọi là local outlier factor (LOF)
  • LOF dựa trên khái niệm mật độ cục bộ
  • Chọn tính cục bộ bằng tham số n_neighbors
  • Điểm có mật độ thấp hơn được gán là ngoại lệ

Thuật toán LOF minh họa

Phát hiện bất thường với Python

Tầm quan trọng của tính cục bộ

  • Từ khóa là cục bộ
  • Điểm LOF chỉ so sánh với điểm của các điểm lân cận
Phát hiện bất thường với Python

Minh họa LOF

Thuật toán LOF minh họa

Phát hiện bất thường với Python

Minh họa LOF

Thuật toán LOF minh họa

Phát hiện bất thường với Python

Minh họa LOF

Thuật toán LOF minh họa

Phát hiện bất thường với Python

Tập dữ liệu đã biến đổi

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
Phát hiện bất thường với Python

LOF thực thi

from pyod.models.lof import LOF


# Huấn luyện lof = LOF(n_neighbors=20, metric="manhattan") lof.fit(males_transformed) print(lof.labels_)
array([0, 0, 0, ..., 0, 0, 1])
Phát hiện bất thường với Python

Lọc bằng LOF

# Tách điểm ngoại lệ
probs = lof.predict_proba(males_transformed)

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

len(outliers)
2
Phát hiện bất thường với Python

Chi tiết LOF

  • n_neighbors là quan trọng nhất
  • Kinh nghiệm tinh chỉnh n_neigbors:
    • 20 láng giềng cho tỷ lệ nhiễm <10%
  • Không cho phép gộp:
    • method luôn là largest
Phát hiện bất thường với Python

Hạn chế của LOF

  • Khó diễn giải
  • Điểm LOF kết hợp:
    • khoảng cách giữa các điểm
    • khoảng cách khả đạt (reachability)
    • nhiều thành phần khác
  • Không có ngưỡng điểm LOF cố định cho ngoại lệ
Phát hiện bất thường với Python

Ayo berlatih!

Phát hiện bất thường với Python

Preparing Video For Download...