1. Stack Img 2 Do
2.2.2 Ghép vùng theo phƣơng pháp K-means
K-means là một trong những thuật toán phân cụm cổ điển nhất và cũng là quan trọng nhất trong số những thuật toán phân cụm. Thuật toán được J. MacQueen phát triển từ năm 1967, sau đó vào năm 1975, J. A. Hartigan và M. A. Wong đã phát triển hoàn thiện hơn. Cho đến nay, thuật tốn vẫn cịn được sử dụng rộng rãi và được cải tiến để có chất lượng tốt hơn và phù hợp với nhiều kiểu dữ liệu.
Tư tưởng của thuật toán này như sau: Đầu tiên chọn ngẫu nhiên K mẫu, mỗi mẫu này coi như biểu diễn một cụm, như vậy lúc này trong mỗi cụm thì đối mẫu đó cũng là tâm của cụm (hay còn gọi là nhân). Các mẫu cịn lại được gán vào một cụm nào đó trong K cụm đã có sao cho tổng khoảng cách từ mẫu đó đến tâm của nhóm là nhỏ nhất. Sau đó tính lại tâm cho các nhóm và lặp lại q trình đó cho đến khi hàm tiêu chuẩn hội tụ. Hàm tiêu chuẩn được dùng phổ biến nhất là hàm tiêu chuẩn bình phương sai. Thuật tốn này có thể áp dụng được đối với cơ sở dữ liệu đa chiều, nhưng để dễ minh họa chúng tôi mơ tả thuật tốn trên dữ liệu hai chiều.
Thuật tốn K-Means thực hiện qua các bước chính sau: 1. Khởi tạo số cụm k.
2. Thiết lập hoặc thiết lập ngẫu nhiên các centroids của các cụm 3. Đối với tất cả các pixel :
3.1 Tính khoảng cách với centroids của các cụm dữ liệu 3.2 Di chuyển pixel đến các cụm có khoảng cách ít nhất 4. Tính toán các centroids mới của các cụm dữ liệu.
5. Nếu các centroids mới khác centroids cũ thì sau đó đến bước 3, nếu khơng dừng lại .
Ở bước 2 chúng ta nhận được k màu sắc từ ảnh (k màu xuất hiện nhiều nhất trong ảnh) và sử dụng nó như là trọng tâm của các cụm.
Ở bước 3 đọc từng điểm ảnh trong hình ảnh :
Bước 3.1: Tính khoảng cách của nó với từng trọng tâm của các cụm (Khoảng cách chúng ta sử dụng ở đây là khoảng cách Euclide).
Bước 3.2: Di chuyển điểm ảnh đó đến cụm có khoảng cách nhỏ nhất dựa trên khoảng cách Euclide
Ở bước 4: Tính trọng tâm mới cho các cụm. Các trọng tâm mới được tính bằng giá trị trung bình các điểm ảnh trong cụm
Ở bước 5: Kiểm tra sự hội tụ. Nếu các centroids mới là tương tự như các centroids cũ, thì điều đó có nghĩa là các dữ liệu trong centroids đã khơng di chuyển và các cụm đã ổn định.
Thuật toán K-means Input: Số cụm k, và ảnh A.
Output: Một tập gồm k cụm Begin
Initialize(k);
Do
For mỗi pixel xi A
Allocate(xi);
CalculateClusterCentroids();
Until CheckConvergence() = true End
Ví dụ: Giả sử trong không gian hai chiều, cho 12 điểm (n = 12) cần phân 12
điểm này thành hai cụm (k=2).
Đầu tiên chọn hai điểm ngẫu nhiên vào hai cụm, giả sử chọn điểm (1,3) và điểm (9,4) (điểm có màu đỏ trên hình 2.12(a)).
Coi điểm (1,3) là tâm của cụm 1 và điểm (9,4) là tâm của cụm hai. Tính tốn khoảng cách từ các điểm khác đến hai điểm này và ta gán được các điểm còn lại này vào một trong hai cụm, những điểm có màu xanh lơ vào cụm 1, những điểm có màu xanh đậm vào cụm 2 (hình 2.12(b)). Hiệu chỉnh lại tâm của hai cụm, điểm màu đỏ trên hình 2.12(c) là tâm mới của hai cụm. Tính lại các khoảng cách các điểm đến tâm mới và gán lại các điểm này, hình 2.12(d). Tiếp tục hiệu chỉnh lại tâm của hai cụm. Cứ như thế lặp lại cho đến khi khơng cịn sự thay đổi nữa thì dừng. Khi đó ta thu được kết quả của bài toán.
Độ phức tạp của thuật tốn này là O(tKn). Trong đó n là số mẫu trong cơ sở dữ liệu, K là số cụm, t là số lần lặp. Thông thường t, K << n. Nên thuật tốn này có hiệu quả tương đối với các cơ sở dữ liệu lớn. Thuật tốn này có ưu điểm là rõ ràng, dễ dàng cài đặt. Nhưng nhược điểm của thuật toán này là phải chỉ ra số lượng cụm và yêu cầu cơ sở dữ liệu cần phân nhóm phải xác định được tâm.