Thuật toán k-prototypes

Một phần của tài liệu Các kỹ thuật phân cụm trong khai phá dữ liệu (Trang 75)

Thuật toán k-prototypes có thể được mô tả như sau:

Bước 1: Lựa chọn k đối tượng mẫu khởi tạo từ một tập dữ liệu X.

Bước 2: Phân phối từng đối tượng trong X tới một cụm mà nguyên mẫu là tương tự nhất với nó theo công thức (3). Cập nhật nguyên mẫu của cụm sau mỗi lần phân phối.

Bước 3: Sau khi tất cả các đối tượng được phân phối tới các cụm, kiểm tra lại độ tương tự của các đối tượng dựa vào các nguyên mẫu hiện tại. Nếu tìm thấy một đối tượng gần nguyên mẫu nhất thuộc về cụm khác thì thay thế đối tượng tới cụm đó và cập nhật lại các nguyên mẫu cho cả hai cụm này.

Bước 4: Lặp bước 3 cho tới khi không đối tượng nào có thể thay đổi các cụm. Thuật toán được xây dựng dựa trên ba quá trình: Khởi tạo các prototypes, phân phối ban đầu và phân phối lại. Quá trình đầu tiên lựa chọn ngẫu nhiên đơn

giản k đối tượng là các prototypes khởi tạo cho các cụm. Quá trình thứ hai được mô tả trong hình 3.27 dưới đây.

FOR i =1 TO NumberOfObject Mindistance=Distance(X[i],O_prototypes[1])+gamma*Sigma(X[i],C_prototypes[1]); FOR j =1 TO NumberOfClusters distance=Distance(X[i],O_prototypes[j])+gamma*Sigma(X[i],C_prototypes[j]); IF (distance < Mindistance) Mindistance=distance; Cluster=j; ENDIF; ENDFOR Clustership[i]=cluster; ClusterCount[cluster]=+1; FOR j=1 TO NumberOfNumericAttributes SumInCluster[cluster,j] = +X[i,j]; O_prototypes[cluster,j]=SumInCluster[cluster,j]/ClusterCount[cluster];

ENDFOR FOR j=1 TO NumberOfCategoricAttributes FrequencyInCluster[cluster,j,X[i,j]] + 1 C_prototypes[cluster,j]= HighestFreq(FrequencyInCluster,cluster,j) ENDFOR ENDFOR

Hình 3.27. Thủ tục phân phối ban đầu trong thuật toán k-prototypes

X[i] lưu giữ đối tượng i và X[i,j] là giá trị của thuộc tính thứ j đối với đối

tượng i. O_prototypes[] và C_prototypes[] lưu giữ các phần thuộc tính số và thuộc

tính hạng mục của các prototypes cụm tương ứng. O_prototypes[i,j] và C_prototypes[i,j] là hai phần tử hạng mục và số tương ứng của prototype với cụm i. Distance() là hàm khoảng cách Euclidean và Sigma() là một thể hiện của hàm ()

trong công thức (3). Clustership[] và ClusterCount[] ghi lại thành phần cụm của các đối tượng và số các đối tượng trong các cụm. SumInCluster[] tính tổng các giá trị số của các đối tượng trong cụm và được sử dụng để cập nhật lại các thuộc tính số của các prototypes của cụm. FrequencyInCluster[] ghi lại tần xuất của thuộc tính hạng

mục có giá trị khác nhau trong các cụm. Hàm HighestFreq() thi hành bổ đề nhằm

cập nhật các thuộc tính hạng mục của các prototypes.

Quá trình cập nhật lại được mô tả trong hình 3.28 dưới đây:

moves=0 FOR i = 1 TO NumberOfObjects … //Hình 3.27 … IF (Clustership[i]<>cluster) moves+1 oldcluster=Clustership[i] ClusterCount[cluster] + 1 ClusterCount[oldcluster] - 1 FOR j=1 TO NumberOfNumericAttributes SumInCluster[cluster,j] + X[i,j] SumInCluster[oldcluster,j] - X[i,j] O_prototypes[cluster,j]=SumInCluster[cluster,j]/ClusterCount[cluster] O_prototypes[oldcluster,j]= SumInCluster[oldcluster,j]/ClusterCount[oldcluster] ENDFOR

FOR j=1 TO NumberOfCategoricAttributes FrequencyInCluster[cluster,j,X[i,j]] + 1 FrequencyInCluster[oldcluster,j,X[i,j]] - 1 C_prototypes[cluster,j]= HighestFreq(cluster,j) C_prototypes[oldcluster,j]= HighestFreq(oldcluster,j) ENDFOR ENDIF ENDFOR

Hình 3.28. Thủ tục phân phối lại(re-allocation) trong k-prototypes

Hình 3.29 dưới đây là một thực nghiệm chỉ ra đường cong hội tụ của thuật toán, thực hiện trên tập dữ liệu gồm 75808 bản ghi và 20 thuộc tính. Số cụm là 64.

Hình 3.29. Quá trình hội tụ của thuật toán k-prototypes

Chúng ta có thể nhận thấy rằng số các đối tượng thay đổi trong các cụm giảm xuống rất nhanh trong khoảng thời gian đầu. Sau đó tốc độ này bị chậm dần và tiến gần đến trạng thái không thay đổi trong một số giai đoạn. Nó cũng tăng lên một ít sau khi thay đổi về 0. Điều này có nghĩa là, thuật toán có thể kết thúc ở trạng thái mà số các đối tượng thay đổi trong các cụm còn lại là đủ nhỏ nhằm làm giảm thời gian thực hiện của thuật toán.

Độ phức tạp tính toán của thuật toán là O((t+1)kn), trong đó n là số các đối

tượng, k là số các cụm và t là số vòng lặp của quá trình phân phối lại. Đặc biệt, nếu

CHƢƠNG 4.

PHÂN CỤM DỮ LIỆU MỜ

Một phần của tài liệu Các kỹ thuật phân cụm trong khai phá dữ liệu (Trang 75)