K-mean không phải là thuật toán phân cụm dựa trên khoảng cách .
K-means tìm kiếm cho tối thiểu tổng bình phương phân công , tức là nó giảm thiểu sai unnormalized (= total_SS
) bằng cách gán điểm đến các trung tâm cụm.
Để phương tiện k hội tụ, bạn cần hai điều kiện:
- điểm gán lại làm giảm tổng bình phương
- tính toán lại giá trị trung bình làm giảm tổng bình phương
Vì chỉ có số lượng kết hợp hữu hạn, bạn không thể giảm giá trị này một cách vô hạn và thuật toán phải hội tụ tại một số điểm đến mức tối ưu cục bộ .
ΣTôi( xTôi- μj i)2j. Về mặt toán học, việc chỉ định bằng tổng bình phương tối thiểu bằng với việc gán bằng cách đóng khoảng cách Euclide bình phương, điều này (nếu bạn lãng phí chu kỳ CPU để tính toán sqrt
) bằng với việc gán khoảng cách Euclide tối thiểu. Vì vậy, trực giác của việc gán từng điểm cho giá trị trung bình gần nhất là chính xác, nhưng không phải là vấn đề tối ưu hóa.
between_SS
có lẽ là tổng bình phương có trọng số giữa hai phương tiện, để đo xem các trung tâm cụm được phân tách tốt như thế nào (lưu ý: trung tâm cụm, nó không so sánh các cụm thực tế - về mặt kỹ thuật, tế bào cụm Voronoi chạm vào cụm lân cận Voronoi).
Lưu ý rằng với k-có nghĩa là bạn có thể cải thiện chất lượng phân cụm ngây thơ bằng cách tăng k. Chất lượng đo ở đây là một giá trị toán học, có thể không phù hợp với yêu cầu của người dùng. Iris thực sự là một ví dụ khá hay, trong đó k-mean thường hội tụ với kết quả không thỏa đáng, thậm chí còn đưa ra thông tin bên ngoài rằng phải có chính xác 3 cụm.
Nếu bạn muốn một biến thể dựa trên khoảng cách của phương tiện k , hãy xem k-medoid . Ở đây sự hội tụ được đảm bảo bằng cách thay thế giá trị trung bình bằng medoid:
- Mỗi đối tượng được gán cho cụm gần nhất (bằng thước đo khoảng cách tùy ý)
- Trung tâm cụm được cập nhật vào đối tượng trung tâm nhất của cụm, tức là với khoảng cách trung bình nhỏ nhất cho tất cả các đối tượng khác.
Trong mỗi bước, tổng khoảng cách giảm; có một số lượng kết hợp hữu hạn, do đó thuật toán phải chấm dứt ở một số mức tối thiểu cục bộ.