Capstone: clustering pipeline và báo cáo metric

Capstone 3: pipeline clustering production trên dữ liệu khách hàng thật mô phỏng, MapReduce scale, báo cáo metric và diễn giải kinh doanh.
Chuyên giaThuật toán ~120 phút

Giới thiệu

Bạn gom khách hàng thành nhóm giống nhau. Mỗi nhóm cần một cách bán riêng.

Kiến thức cần nhớ

Phân cụm là gì

  • Phân cụm gom điểm gần nhau vào một nhóm.
  • Định nghĩa: không có nhãn trước, máy tự tìm nhóm.
  • Ví dụ đời thường: giống xếp khách vào bàn theo sở thích.
  • Số nhóm k thường phải chọn trước.

K-means cơ bản

  • K-means lặp hai bước: gán nhóm rồi dời tâm.
  • Ví dụ đời thường: giống chia lớp rồi chọn lớp trưởng mới.
  • Dễ làm nhưng nhạy với tâm ban đầu.
  • Chạy nhiều lần rồi chọn lần tốt nhất.

Đo chất lượng và scale

  • Silhouette đo điểm có hợp với nhóm mình không.
  • Điểm càng gần 1 càng tốt.
  • Ví dụ đời thường: giống chấm khách có ngồi đúng bàn không.
  • Dữ liệu lớn thì chia nhỏ với MapReduce.
# gán điểm vào tâm gần nhất
def gan_nhom(diem, tams):
    xa = [abs(diem - t) for t in tams]  # khoảng cách tới mỗi tâm
    return xa.index(min(xa))  # chọn tâm gần nhất

Ví dụ

  • Input điểm [1, 2, 10, 11] với k = 2 -> hai nhóm quanh 1 và 10.
  • Silhouette cao nghĩa là nhóm tách rõ.

💻 Bài tập

Ngôn ngữ: Python 3. Gom code ngày 47-49, 83, 84, 87, 88, 132. Nộp vào day-153-capstone/.

Bài 1: Gói clusterkit

clusterkit/
  preprocess.py   scale, log_transform, remove_outliers, pca
  models.py       KMeans, DBSCAN, OPTICS, Agglomerative (tự cài, cùng API fit/predict/labels_)
  metrics.py      silhouette, davies_bouldin, adjusted_rand
  distributed.py  kmeans_mapreduce, dbscan_partitioned
  report.py       tạo báo cáo HTML/Markdown có hình
tests/

Cài được bằng pip install -e .. Có test cho từng module. Kết quả khớp sklearn trên 3 bộ dữ liệu chuẩn (sai số hoặc ARI ghi trong test).

Bài 2: Chạy trên 3 bộ dữ liệu

  1. Iris (có nhãn thật).
  2. RFM khách hàng ngày 132.
  3. 10^6 điểm tổng hợp 2D có 8 cụm mật độ khác nhau cộng 5% nhiễu.

Với mỗi bộ, report.py sinh báo cáo: bảng metric mọi thuật toán, hình scatter, thời gian. Bộ 3 dùng bản phân tán cho K-means và DBSCAN.

Bài 3: Kết luận (nâng cao)

REPORT.md tổng hợp:

  1. Bảng "thuật toán nào thắng trên dữ liệu nào" với lý do.
  2. Ảnh hưởng của tiền xử lý: chạy lại Iris và RFM không chuẩn hóa, không loại ngoại lệ. So metric.
  3. Tốc độ bản phân tán theo số worker.
  4. Giới hạn: khi nào silhouette đánh giá sai (ví dụ từ ngày 49).

✅ Tiêu chí hoàn thành

  • Gói cài được, test pass, khớp sklearn.
  • 3 báo cáo tự sinh cho 3 bộ dữ liệu.
  • Bảng ảnh hưởng tiền xử lý.
  • Bản phân tán chạy được 10^6 điểm.

❓ Câu hỏi ôn tập

  1. Phân cụm khác phân loại ở đâu?
  2. Hai bước lặp của K-means là gì?
  3. Silhouette cao nghĩa là gì?
  4. Vì sao chạy K-means nhiều lần?

🌕 Bạn đã hoàn thành ngày 153. Làm hết bài tập phía trên rồi sang ngày tiếp theo.

Bớt paste mù, hiểu sâu từng dòng mình viết.

180 Days Challenge. 180 ngày cai nghiện vibe code.