Menu
CoddyTech

Giới thiệu về K-Means

Bài học 9 trên 19 trong khóa học Giới thiệu về học máy của Coddy.

K-means là một trong những thuật toán phân cụm đơn giản nhất và được sử dụng rộng rãi nhất. Thuật toán này nhằm chia n quan sát thành k cụm, trong đó mỗi quan sát thuộc về cụm có giá trị trung bình (tâm cụm) gần nhất, đóng vai trò như một mẫu đại diện cho cụm. Giả sử bạn có nhiều loại trái cây khác nhau và muốn phân loại chúng vào các giỏ theo loại, nhưng bạn không có nhãn. K-means giúp bạn làm điều đó, nhưng thay vì trái cây, thuật toán sử dụng các điểm dữ liệu!

Incheol, CC BY-SA 4.0, qua Wikimedia Commons

K-means hoạt động như thế nào?

Thuật toán thực hiện quy trình lặp đơn giản và hiệu quả để chia tập dữ liệu thành k cụm.

  1. Khởi tạo tâm cụm: Đầu tiên, chọn k điểm trong tập dữ liệu làm tâm cụm ban đầu. Bạn có thể chọn ngẫu nhiên các điểm này hoặc dựa trên một chiến lược cụ thể.
  2. Gán cụm: Với mỗi điểm trong tập dữ liệu, tìm tâm cụm gần nhất (bằng các thước đo khoảng cách như khoảng cách Euclid), rồi gán điểm đó vào cụm tương ứng.
  3. Cập nhật tâm cụm: Sau khi gán tất cả các điểm vào các cụm, tính lại tâm cụm bằng cách lấy giá trị trung bình của tất cả các điểm trong mỗi cụm.
  4. Lặp lại bước 2 và 3: Lặp lại các bước trên cho đến khi tâm cụm không còn thay đổi đáng kể. Điều này có nghĩa là thuật toán đã hội tụ và các cụm đã ổn định.
quiz iconTự kiểm tra

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 độ.

quiz iconTự kiểm tra

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 độ.

quiz iconTự kiểm tra

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 độ.

challenge icon

Thử thách

Dễ

Việc xác định số cụm tối ưu, k, là một bước quan trọng. Có nhiều phương pháp để thực hiện việc này, trong đó Phương pháp khuỷu tay là một trong những phương pháp phổ biến nhất.

Kỹ thuật này liên tục chạy K-means cho các giá trị từ k=1 đến k=n. Với mỗi giá trị của k, ta tính giá trị tổng bình phương trong cụm (WCSS).

Mỗi cụm có một tâm, WCSS là tổng bình phương khoảng cách từ tất cả các điểm đến tâm.

Tạo một hàm có tên wcss, nhận một danh sách các điểm dữ liệu (thuộc cùng một cụm) và trả về WCSS của cụm. Hãy làm theo các bước sau:

  • Tìm tâm, tâm là một điểm đại diện cho vị trí trung bình của tất cả các điểm trong một cụm: 

    Ví dụ, đây là danh sách gồm hai điểm 3D: (1, 2 ,3), (4, 5, 6). Tâm là:

    (1 + 4) / 2 = 2.5,
    (2 + 5) / 2 = 3.5,
    (3 + 6) / 2 = 4.5,
    >> (2.5, 3.5, 4.5)
  • Tính khoảng cách Euclid từ mỗi điểm đến tâm
  • Trả về tổng tất cả các khoảng cách chia cho số điểm

Tự làm thử

def euclidian_distance(point_a, point_b):
    return (sum([(point_a[i] - point_b[i])**2 for i in range(len(point_a))]))**0.5

def wcss(points):
    # Viết code ở đây

Tất cả bài học trong Giới thiệu về học máy

Tự luyện tập: Trình biên dịch Python online