Các bƣớc thực hiện cơ bản của thuật toán k-prototypes

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Phân cụm dữ liệu và ứng dụng trong công tác tái bảo hiểm Luận văn ThS. Công nghệ thông tin 1 01 10 (Trang 78 - 80)

Thuật toán bao gồm ba giai đoạn chính sau:

Khởi tạo các prototypes: bằng phép lấy ngẫu nhiên hoặc theo kinh nghiệm.

 Phân phối các đối tƣợng cho các cụm tƣơng ứng với mỗi prototype khởi tạo.

 Cập nhật lại các prototype và phân phối lại các đối tƣợng dữ liệu cho đến khi trạng thái cập nhật không mang lại thay đổi đối với các cụm.

Thuật toán k-prototypes chi tiết đƣợc trình bày bằng 3 thủ tục nhƣ trong hình 29 sau đây:

{---Tiến trình khởi tạo giá trị cho các tham biến toàn cục---}

Procedure initial_k_Prototypes (int k) ; Begin

For i =1 to k do prototype[i] = X[(i + (i-1)*(n div k) ];

End;

{--- ---Thủ tục khởi tạo phân hoạch ban đầu ---}

Procedure allocation (n: double)

Begin

FOR i = 1 TO NumberOfObjects

Input: Tập dữ liệu ban đầu X và số cụm k,

Output: k đối tƣợng mẫu sao cho hàm tiêu chuẩn đạt giá trị tối thiểu

Begin

1. Khởi tạo k đối tƣợng mẫu ban đầu cho X, mỗi đối tƣợng mẫu đóng vai trò là tâm đại diện của mỗi cụm.

2. Phân phối mỗi đối tƣợng trong X cho mỗi cụm sao cho chúng gần nhất với đối tƣợng mẫu trong cụm, đồng thời cập nhật lại đối tƣợng mẫu cho mỗi cụm.

3. Sau khi tất cả các đối tƣợng đã đƣợc phân phối hết cho các cụm, kiểm tra lại độ tƣơng tự của các đối tƣợng trong mỗi cụm với các đối tƣợng mẫu, nếu có một đối mẫu tƣơng tự nhất với nó mà khác với đối tƣợng mẫu của cụm hiện thời thì di chuyển đối tƣợng đang xét này sang cụm tƣơng ứng với đối tƣợng mẫu mà nó gần nhất và đồng thời cập nhật các đối tƣợng mẫu cho hai cụm này.

4. Lặp bƣớc 3 cho đến khi không có đối tƣợng nào thay đối sau khi đã kiểm tra toàn bộ các đối tƣợng.

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

End;

{---Thủ tục phân phối lại các đối tƣợng dữ liệu cho các cụm ---}

Procedure Re_allcation (n: Double )

Begin

REPEAT moves=0;

FOR i = 1 TO NumberOfObjects

Mindistance= Distance(X[i],O_prototypes[1])+ gamma* Sigma(X[i],C_prototypes[1]); FOR j = 1 TO NumberOfClusters

IF (distance < Mindistance) Mindistance=distance; cluster=j; ENDIF ENDFOR IF (Clustership[i]<>cluster) Moves=+1; oldcluster=Clustership[i]; Clustership[i]=cluster; 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(FrequencyInCluster, cluster,j); C_prototypes[oldcluster,j]=HighestFreq(FrequencyInCluster, oldcluster,j); ENDFOR ENDIF ENDFOR UNTIL (moves=0); End; {---The End --- ---}

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Phân cụm dữ liệu và ứng dụng trong công tác tái bảo hiểm Luận văn ThS. Công nghệ thông tin 1 01 10 (Trang 78 - 80)

Tải bản đầy đủ (PDF)

(101 trang)