Đánh giá clustering - silhouette và diễn giải
Đo chất lượng gom cụm không nhãn: silhouette từng điểm và toàn cục, diễn giải kết quả, chọn k và bẫy diễn giải sai.
Trung bìnhThuật toán ~45 phút
Ôn lại trước khi học
Giới thiệu
Bài này học silhouette chấm điểm gom cụm không nhãn. Điểm này giúp chọn k và so thuật toán công bằng.
Kiến thức cần nhớ
Silhouette một điểm
- a là khoảng cách trung bình tới bạn cùng cụm.
- b là khoảng cách trung bình tới cụm hàng xóm gần nhất.
- Điểm số = (b - a) / max(a, b), từ -1 tới 1.
- Ví dụ đời thường: ở đúng nhà thì điểm cao, ở nhầm nhà thì điểm âm.
Đọc điểm toàn cục
- Trung bình mọi điểm ra điểm toàn cục của phân hoạch.
- Trên 0.7 là rõ đẹp, 0.5 tới 0.7 là hợp lý.
- 0.25 tới 0.5 là yếu, dưới 0.25 là không cấu trúc.
- Ví dụ đời thường: lớp nào cũng ngồi đúng chỗ thì điểm cao.
Chọn k và bẫy
- Chạy k từ 2 tới 10, vẽ đường điểm, chọn đỉnh cao nhất.
- Silhouette thiên vị cụm tròn nên chấm oan cụm vòng tròn.
- Cụm đẹp về số mà vô nghĩa nghiệp vụ thì vẫn bỏ.
- Ví dụ đời thường: chia theo mã bưu điện đẹp mà bán hàng không cần.
# Ý tưởng silhouette một điểm
def silhouette(a, b):
# a: gắn kết trong nhà, b: tách biệt nhà bên
return (b - a) / max(a, b) # gần 1 là đúng nhà
Ví dụ
- Input: 2 cụm tách rất xa -> Output: điểm toàn cục trên 0.9, không điểm âm.
- Câu này cho thấy cụm rõ thì điểm gần tuyệt đối.
- Input: gán nhãn ngẫu nhiên -> Output: điểm quanh 0.
- Câu này cho thấy đoán bừa thì điểm lẹt đẹt.
💻 Bài tập
Ngôn ngữ: Python 3 với NumPy. Dùng K-means ngày 47 và DBSCAN ngày 48. Nộp vào day-049/.
Bài 1: Silhouette tự cài
| Hàm | Yêu cầu |
|---|---|
silhouette_samples(X, labels) | Trả mảng s(i). Điểm ở cụm 1 phần tử có s = 0. Bỏ qua điểm nhiễu -1 |
silhouette_score(X, labels) | Trung bình s(i) |
Công thức: là khoảng cách trung bình tới điểm cùng cụm, là trung bình nhỏ nhất tới các cụm khác, .
2 cụm tách rất xa -> score > 0.9, không điểm âm
Nhãn ngẫu nhiên -> score quanh 0
Chỉ có 1 cụm -> ValueError
Bài 2: Chọn k bằng silhouette
Dữ liệu 4 cụm Gauss. Chạy K-means với k = 2..10.
- Vẽ silhouette score theo
k. Chọnktốt nhất. - Vẽ silhouette plot cho
k = 3, 4, 5: mỗi cụm là một dảis(i)sắp giảm dần. - Chỉ ra cụm có nhiều điểm âm ở
k = 5và giải thích.
Bài 3: Khi metric nói dối (nâng cao)
- Dữ liệu 2 vòng tròn đồng tâm. DBSCAN tách đúng 2 vòng. K-means cắt đôi. Tính silhouette cả hai. Giải thích vì sao silhouette chấm K-means cao hơn.
- Tự cài Davies-Bouldin index và so với silhouette trên cùng dữ liệu.
- Phân khúc khách hàng: dữ liệu (tuổi, chi tiêu/tháng, số lần mua). Chọn
k, rồi viết mỗi cụm một câu mô tả nghiệp vụ. Nếu không đặt tên được, ghi rõ.
✅ Tiêu chí hoàn thành
- Kết quả khớp
sklearn.metrics.silhouette_scorevới sai số1e-6. - Có hình silhouette theo
kvà silhouette plot. - Bài 3 có ví dụ metric chấm sai kèm giải thích.
- Mỗi cụm khách hàng có mô tả nghiệp vụ.
❓ Câu hỏi ôn tập
- a và b trong silhouette là gì?
- Điểm gần 1, gần 0, âm nghĩa là gì?
- Dùng silhouette chọn k thế nào?
- Bẫy cụm đẹp mà vô nghĩa là sao?
🌕 Bạn đã hoàn thành ngày 49. Làm hết bài tập phía trên rồi sang ngày tiếp theo.