Trong thế giới của khoa học dữ liệu và học máy, việc tìm kiếm các mẫu và cấu trúc ẩn trong dữ liệu là một nhiệm vụ quan trọng. Thuật toán K-means là một trong những phương pháp phân cụm phổ biến nhất, giúp chúng ta nhóm các điểm dữ liệu tương tự lại với nhau một cách tự động.
K-means là một thuật toán học máy không giám sát (unsupervised learning), có nghĩa là nó hoạt động trên dữ liệu không có nhãn. Mục tiêu của thuật toán là phân chia tập dữ liệu thành cụm khác nhau, trong đó là một số được xác định trước. Các điểm dữ liệu trong cùng một cụm có xu hướng tương đồng với nhau hơn so với các điểm dữ liệu ở các cụm khác.
Thuật toán
Giả định rằng bộ dữ liệu là một tập hợp vector :
Thuật toán được mô tả như sau:
Khởi tạo: Chọn ngẫu nhiên điểm trong không gian dữ liệu làm tâm (centroid) của cụm ban đầu. Ta ký hiệu các cụm lần lượt là với các centroid tương ứng .
Gán nhãn: Tính toán khoảng cách từ mỗi điểm dữ liệu đến từng tâm cụm :
Khoảng cách Euclide từ điểm đến điểm được cho bởi công thức .
Một điểm sẽ được gán vào cụm nếu khoảng cách là nhỏ nhất .
Cập nhật tâm: Tính toán lại tâm của mỗi cụm bằng cách lấy trung bình của tất cả các điểm dữ liệu thuộc cụm đó. , với là số lượng các điểm trong cụm .
Lặp lại: Lặp lại bước 2 và 3 cho đến khi các tâm cụm không thay đổi đáng kể hoặc đạt đến số lần lặp tối đa.
Demo & Code
Ứng dụng
Thuật toán K-means có nhiều ứng dụng trong thực tế, bao gồm:
Phân khúc khách hàng: Phân chia khách hàng thành các nhóm khác nhau dựa trên hành vi mua sắm, nhân khẩu học, v.v., để giúp doanh nghiệp đưa ra chiến lược tiếp thị phù hợp.
Phân loại tài liệu: Nhóm các tài liệu tương tự nhau lại để giúp tổ chức và tìm kiếm thông tin dễ dàng hơn.
Nén ảnh: Giảm số lượng màu sắc trong một bức ảnh bằng cách nhóm các pixel có màu tương tự lại với nhau.
Phát hiện bất thường: Xác định các điểm dữ liệu khác biệt so với phần còn lại của tập dữ liệu, có thể là dấu hiệu của sự bất thường hoặc gian lận.