Local Outlier Factor
Thuộc phần Học không giám sát trong hành trình Machine Learning của Coddy. Bài học 36 trên 51.
Một số điểm bất thường ẩn trong phạm vi dữ liệu. Hệ số ngoại lệ cục bộ, LOF, so sánh mức độ dày đặc quanh từng điểm với mức độ dày đặc quanh các điểm lân cận:
Đôi khi, người mua sắm ở lại 6 giờ. Nhưng những hàng xóm của chiếc xe này là người đi làm, chen chúc sát nhau, còn nó nằm xa đám đông đó:
from sklearn.neighbors import LocalOutlierFactor
lof = LocalOutlierFactor(n_neighbors=20, contamination=0.02)
flags = lof.fit_predict(X)Câu trả lời vẫn như trước: -1 là bất thường, 1 là bình thường. n_neighbors xác định phạm vi cục bộ của phép so sánh.
Thử thách
Trung bìnhMột công ty điện thoại tìm những tài khoản khác biệt so với các tài khoản lân cận. Phần code khởi đầu chuẩn hóa dữ liệu và đánh dấu các tài khoản bằng thuật toán rừng cô lập; chương trình đọc k.
- Đánh dấu tài khoản bằng LOF:
n_neighbors=k,contamination=0.03. - In số lượng tài khoản mà mỗi bộ phát hiện đánh dấu và số tài khoản được cả hai bộ đánh dấu.
- Liệt kê các tài khoản chỉ được LOF đánh dấu, theo thứ tự trong bảng, như bên dưới.
Với một công ty nhỏ hơn và 10:
Isolation forest: 5 accounts
LOF: 5 accounts
Both: 4 accounts
Only LOF:
A118: 960 minutes, 6.2 GBTự làm thử
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import IsolationForest
from sklearn.neighbors import LocalOutlierFactor
# Mỗi hàng tương ứng với một tài khoản điện thoại: số phút gọi và dung lượng dữ liệu di động trong một tháng
accounts = pd.read_csv("accounts.csv")
X = StandardScaler().fit_transform(accounts[["call_minutes", "data_gb"]])
k = int(input())
# Từ Isolation Forest: -1 đánh dấu các tài khoản mà mô hình phát hiện bất thường
forest_flags = IsolationForest(contamination=0.03, random_state=0).fit_predict(X)
# Viết code của bạn bên dưới
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Học không giám sát
1Tìm các nhóm
Học không cần nhãnĐo độ tương đồngTự thực hiện K-MeansK-Means trong scikit-learnÔn tập: thành viên phòng gym7PCA trong thực tế
Quan sát 64 chiềuCác thành phần như mẫu hìnhNén và dựng lạiPCA trước khi xây dựng mô hìnhÔn tập: máy quét khuôn mặt10Dự án: Khám phá chữ số
Quan sát các chữ sốThu gọn bằng PCAPhân cụm chữ sốĐặt tên cho các cụmTìm những chữ số khác biệt2Chọn k
Quán tínhPhương pháp khuỷu tayĐiểm số SilhouetteChuẩn hóa thang đo trước khi phân cụmÔn tập: Các vùng giao hàng8Phát hiện bất thường
Tìm những điểm khác biệtIsolation ForestLocal Outlier FactorĐiểm bất thườngÔn tập: Giám sát máy chủTự luyện tập: Trình biên dịch Python online