Thuật toán Coolcat [8] dùng để phân cụm dữ liệu định danh tƣơng tự nhƣ MWKM. Sự khác biệt của nó với MWKM là thay vì lập công thức đo để tính toán sự tƣơng đồng giữa các phần tử trong cụm thì COOLCAT cực tiểu hóa Entropy kỳ vọng của tất cả các cụm. Theo thuật toán MWKM, một phần tử sẽ đƣợc đặt vào cụm nếu sự tƣơng đồng của nó với mode của cụm theo công thức tính tƣơng đồng của MWKM là nhỏ nhất. Còn theo thuật toán COOLCAT, nó sẽ đặt một phần tử vào cụm để cực tiểu hóa Entropy tổng thể. Ở đây, Entropy là thƣớc đo sự ngăn nắp, qui hoạch. Nếu nhƣ sự qui hoạch càng kém, Entropy càng cao. Nếu sự qui hoạch càng tốt, Entropy càng thấp.
Ý tƣởng của thuật toán này là: Đầu vào là mảng vector cần phân cụm và số cụm k cho trƣớc và phải trả ra kết quả đánh giá sau khi phân cụm:
Khởi tạo k cụm: Chọn k vector sao cho cực tiểu entropy từng cặp vector là lớn nhất, từng vector này sẽ là tâm ban đầu của các cụm.
Sắp xếp lại các vector vào cụm: Với mỗi vector còn lại của mảng, đặt từng vector vào cụm phù hợp thỏa mãn điều kiện Entropy của cụm sau khi thêm vector là nhỏ nhất.
Phân cụm lại những vector xa tâm nhất theo tỷ lệ cho trƣớc. Đánh giá kết quả phân cụm và trả về giá trị này
Thuật toán COOLCAT Bƣớc 1: Khởi tạo
Bƣớc khởi tạo thuật toán là tập hợp một số kỹ thuật phân tích dựa vào nguyên lý tái chọn mẫu để ƣớc tính thông số, tìm kiếm một tập hợp phù hợp với một cụm đầu ra s, mẫu lấy từ các bộ dữ liệu (|s|<<N), trong đó N là kích thƣớc của toàn bộ tập dữ liệu. Đầu tiên tìm k điểm không tƣơng tự nhau từ các tập mẫu bằng cách tối đa hóa các cặp entropy tối thiểu của các điểm. Ta bắt đầu tìm hai điểm PS1,
2 S P để E( 1 S P , 2 S P ) max và đặt chúng vào hai cụm riêng biệt (C1, C2), đánh dấu các bản ghi(kích thƣớc này là O(|S|2). Từ đó ta tiến hành tăng dần, chẳng hạn, tìm bản ghi ta sẽ đặt trong cụm thứ j, ta chọn PS2chƣa đƣợc đánh dấu để mini=1,..,j-1(E(
1 S P , 2 S P )) max.
Các mẫu còn lại chƣa đƣợc đánh dấu (|S| - k) điểm, cũng nhƣ các điểm còn lại(ngoài các mẫu), đƣợc đặt trong các cụm bằng cách sử dụng các bƣớc sau.
Bƣớc 2: Xử lý.
Sau bƣớc khởi tạo, ta cần phải xử lý các bản ghi còn lại của bộ dữ liệu (phần còn lại của các mẫu và các điểm bên ngoài mẫu), tìm một nhóm phù hợp cho mỗi bản ghi. Điều này đƣợc thực hiện bằng tính toán cách thực hiện entropy mà các kết quả đƣợc đặt các điểm trong mỗi cụm và lựa chọn các cụm cho kết quả entropy là tối thiểu. Cho tập khởi tạo của các cụm C
= C1, ..., Ck
2. Với mỗi phần tử p của tập hợp còn lại sẽ làm nhƣ sau: 3. For i = 1, ..., k
4. Đặt p trong Ci và tính toán entropy trung bình của cụm i E ( i C ) trong đó i C
là kí hiệu cụm đạt đƣợc bằng cách đƣa p vào cụm Ci 5. Cho j = argmini(E ( i
C
)) 6. Đặt p vào Cj
8. Cho tới khi tất cả các điểm đƣợc đặt hết vào trong các cụm.
Sau khi đặt các phần tử vào các cụm xong ta thấy nó sẽ có sự khác nhau vì kết quả ban đầu không chuẩn từ sai sót tích lũy trong quá trình tính toán entropy. Do vậy với mỗi phần tử pi ta phải tính toán xác suất khớp Pi j(Pi j)
Trong đó: Pij thu đƣợc bằng cách ij ij | l | q P C
, qij là số lần xuất hiện của giá trị vi trong cụm khi i đƣợc đặt vào, Cllà số phần tử ở trong cụm l.
1 ..
i n là số thứ tự của phần tử đó ở trong tập hợp lớn ban đầu.
1 ..
j m là thuộc tính của đối tƣợng.
Nếu Pi càng thấp thì phần tử đó không khớp các phần tử còn lại. Pi cao thì phần tử đó khớp với các phần tử còn lại.