Series: Machine Learning Fundamentals – Bài 28
Ở các bài trước, chúng ta đã đi qua toàn bộ các thuật toán tiêu biểu của nhánh Học có giám sát (Supervised Learning) – nơi dữ liệu luôn đi kèm nhãn bài toán (Target).
Bước sang Bài 28, chúng ta sẽ bắt đầu khai phá một nhánh hoàn toàn mới của Machine Learning: Học không giám sát (Unsupervised Learning). Và thuật toán phân nhóm dữ liệu (Clustering) phổ biến nhất chính là K-Means Clustering.
K-Means Clustering là gì?
K-Means Clustering là một thuật toán học không giám sát dùng để phân chia một tập dữ liệu thành $K$ cụm (clusters) riêng biệt sao cho:
-
Các điểm dữ liệu trong cùng một cụm có độ tương đồng cao nhất (khoảng cách ngắn nhất).
-
Các điểm dữ liệu ở khác cụm có độ biệt lập tối đa.
Tập dữ liệu thô (Chưa có nhãn)
o o o o o
o o o o o
↓
K-Means Clustering (K = 2)
↓
[ Cụm 1: o o o ] | [ Cụm 2: x x x ]
Vì là thuật toán Unsupervised Learning, K-Means không cần nhãn $y$ mà tự động tìm kiếm các cấu trúc hoặc mẫu hình ẩn (Hidden Patterns) bên trong tập đặc trưng $X$.
Cách K-Means Clustering hoạt động
Thuật toán K-Means lặp đi lặp lại 4 bước chính cho đến khi đạt trạng thái hội tụ:
-
Khởi tạo $K$ tâm cụm (Centroids): Chọn ngẫu nhiên $K$ điểm trong không gian dữ liệu làm tâm cụm ban đầu.
-
Gán điểm vào cụm (Cluster Assignment): Tính khoảng cách (thường là khoảng cách Euclidean) từ mỗi điểm dữ liệu đến $K$ tâm cụm. Mỗi điểm sẽ được gán vào cụm có tâm gần nó nhất.
-
Cập nhật tâm cụm (Update Centroids): Tính lại tọa độ tâm cụm bằng cách lấy trung bình cộng (Mean) tọa độ của tất cả các điểm nằm trong cụm đó.
-
Lặp lại: Lặp lại Bước 2 và Bước 3 cho đến khi vị trí các tâm cụm không còn thay đổi (hoặc đạt số vòng lặp tối đa).
Cách chọn số nhóm K trong K-Means Clustering
Một trong những thách thức lớn nhất của K-Means là bạn phải tự khai báo số lượng cụm $K$ trước khi chạy. Để tìm ra $K$ tối ưu, người ta thường dùng 2 phương pháp chính:
1. Phương pháp khuỷu tay (Elbow Method)
Phương pháp này đo lường tổng bình phương khoảng cách từ các điểm đến tâm cụm của chúng (WCSS – Within-Cluster Sum of Squares).
-
Khi $K$ tăng, WCSS sẽ giảm dần.
-
Vị trí mà tốc độ giảm WCSS đột ngột chậm lại (tạo thành hình “khuỷu tay” trên biểu đồ) chính là số cụm $K$ lý tưởng.
WCSS
| \
| \
| * <--- Điểm khuỷu tay (K tối ưu = 3)
| \_______
+────────────────── K
2. Chỉ số Silhouette (Silhouette Score)
Silhouette Score đánh giá chất lượng phân cụm trên thang đo từ $-1$ đến $+1$:
-
Gần +1: Điểm dữ liệu được phân vào cụm rất phù hợp và tách biệt rõ ràng với cụm khác.
-
Gần 0: Điểm dữ liệu nằm ở ranh giới giữa hai cụm.
-
Âm: Điểm dữ liệu có thể đã bị phân sai cụm.
Hạn chế của K-Means và K-Means++
Khởi tạo ngẫu nhiên tâm cụm ban đầu có thể khiến K-Means rơi vào cực trị địa phương (Local Optima) hoặc tạo ra các cụm kém chất lượng.
Để khắc phục, phiên bản nâng cấp K-Means++ ra đời. K-Means++ chọn tâm cụm đầu tiên ngẫu nhiên, nhưng các tâm cụm tiếp theo sẽ được ưu tiên chọn ở những vị trí cách xa các tâm cụm đã có. Hầu hết các thư viện như Scikit-Learn hiện nay đều mặc định sử dụng K-Means++.
Dữ liệu có cần Feature Scaling không?
CỰC KỲ BẮT BUỘC.
K-Means tính toán hoàn toàn dựa trên khoảng cách khoảng cách Euclidean giữa các điểm dữ liệu. Nếu các đặc trưng có tỷ lệ (Scale) lệch nhau lớn, đặc trưng có giá trị lớn sẽ chiếm toàn bộ trọng số tính toán. Bắt buộc phải áp dụng StandardScaler hoặc MinMaxScaler trước khi đưa dữ liệu vào K-Means.
Ưu điểm và Nhược điểm của K-Means Clustering
Ưu điểm
-
Tốc độ cực nhanh: Chi phí tính toán thấp $O(n \cdot k \cdot t)$, chạy mượt mà trên bộ dữ liệu lớn.
-
Đơn giản, dễ triển khai: Dễ trực quan hóa và dễ giải thích kết quả.
-
Hoạt động tốt: Khi các cụm dữ liệu có dạng hình cầu (Spherical) và kích thước tương đồng.
Nhược điểm
-
Phải chọn trước số lượng cụm $K$.
-
Nhạy cảm với Outliers (vì tâm cụm tính bằng giá trị trung bình Mean).
-
Hoạt động kém nếu các cụm có hình dạng phức tạp, lồng nhau hoặc mật độ không đều (trường hợp này nên dùng DBSCAN).
Ứng dụng thực tế của K-Means Clustering
-
Phân khúc khách hàng (Customer Segmentation): Gom nhóm khách hàng theo hành vi mua sắm, độ tuổi, thu nhập để chạy chiến dịch Marketing cá nhân hóa.
-
Nén ảnh (Image Compression): Giảm số lượng màu sắc trong ảnh bằng cách gom các màu tương tự về cùng một cụm.
-
Phát hiện gian lận (Anomaly Detection): Các điểm dữ liệu nằm quá xa tất cả các tâm cụm có thể là giao dịch bất thường.
Tóm tắt
-
K-Means Clustering là thuật toán học không giám sát phân chia dữ liệu thành $K$ cụm dựa trên khoảng cách.
-
Bắt buộc phải Feature Scaling trước khi thực hiện phân cụm.
-
Sử dụng Elbow Method hoặc Silhouette Score để chọn ra $K$ tối ưu.
-
Thuật toán K-Means++ giúp cải thiện việc khởi tạo tâm cụm ban đầu.
Tài liệu tham khảo
-
Scikit-Learn Documentation: K-Means Clustering in Scikit-Learn
-
MacQueen (1967): Some methods for classification and analysis of multivariate observations – Bài báo gốc về K-Means.
Khóa học tại MCNA Technology School
Nếu bạn muốn thực hành Machine Learning, Python và xây dựng các mô hình trên dữ liệu thực tế, có thể tham khảo:
-
🤖 Combo 5 khóa AI & Power BI: Xem khóa học AI & Power BI
-
🐍 Combo Python: Xem Combo Python
Tác giả: Bùi Đình Tuyển – Data Analyst tại MCNA Technology School
📞 Hotline: 0939.866.825 (Mr. Minh Khang)
🌐 Website: MCNA Technology School
📍 Hà Nội: 30 Trung Liệt, Đống Đa | Liền kề 44B TT2 Văn Quán, Hà Đông
📍 TP.HCM: 50B Phan Tây Hồ, Cầu Kiệu

