聚類有效性——最佳聚類數

聚類有效性的評價標準有兩種:一是外部標準,通過測量聚類結果和參考標準的一致性來評價聚類結果的優良;另一種是內部指標,用於評價同一聚類算法在不同聚類數條件下聚類結果的優良程度,通常用來確定數據集的最佳聚類數。
一 最佳聚類數判定的方法
對於內部指標,通常分爲三種類型:基於數據集模糊劃分的指標;基於數據集樣本幾何結構的指標;基於數據集統計信息的指標。基於數據集樣本幾何結構的指標根據數據集本身和聚類結果的統計特徵對聚類結果進行評估,並根據聚類結果的優劣選取最佳聚類數,這些指標有Calinski-Harabasz(CH)指標,Davies-Bouldin(DB)指標Weighted inter-intra(Wint)指標,Krzanowski-Lai(KL)指標,Hartigan(Hart)指標,In-Group Proportion(IGP)指標等。本文主要介紹Calinski-Harabasz(CH)指標和Davies-Bouldin(DB)指標。
(1) CH指標
CH指標通過類內離差矩陣描述緊密度,類間離差矩陣描述分離度,指標定義爲
這裏寫圖片描述

其中,n表示聚類的數目 ,k 表示當前的類, trB(k)表示類間離差矩陣的跡, trW(k) 表示類內離差矩陣的跡。有關公式更詳細的解釋可參考論文“ A dendrite method for cluster analysis ”。
可以得出 CH越大代表着類自身越緊密,類與類之間越分散,即更優的聚類結果。

(2) DB指標
DB指標通過描述樣本的類內散度與各聚類中心的間距,定義爲
這裏寫圖片描述
其中,K是聚類數目,Wi表示類Ci中的所有樣本到其聚類中心的平均距離,Wj表示類Ci中的所有樣本到類Cj中心的平均距離,Cij表示類Ci和Cj中心之間的距離。可以看出,DB越小表示類與類之間的相似度越低,從而對應越佳的聚類結果。

最佳聚類數的確定過程一般是這樣的:給定K 的範圍[Kmin,Kmax],對數據集使用不同的聚類數K運行同一聚類算法,得到一系列聚類結果,對每個結果計算其有效性指標的值,最後比較各個指標值,對應最佳指標值的聚類數即爲最佳聚類數。

二 實驗結果
在Matlab中,函數evalclusters提供了四種方法進行聚類效果的評估,包括’CalinskiHarabasz’ 、 ‘DaviesBouldin’ 、’gap’ 、 ‘silhouette’。選取一組數據,進行聚類效果評估。這裏分別選用’CalinskiHarabasz’ 、 ‘DaviesBouldin’指標,聚類算法選擇k-means.

(1) CH指標
給定K值範圍1~3,計算每個聚類結果的CH 指標,最大指標值對應的K 值爲最優值。
這裏寫圖片描述
這裏寫圖片描述

(2) DB指標
給定K值範圍1~3,計算每個聚類結果的DB 指標,最大指標值對應的K 值爲最優值。
這裏寫圖片描述
這裏寫圖片描述

備註:出現NAN是因爲這兩種方法均不適用與聚類數爲1的情況。

Matlab代碼

cluster = zeros(size(data,1),3);
for i=1:3
cluster(:,i) = kmeans(data,i,'replicate',5); %%%保存每次聚類結果
end
eva = evalclusters(data,cluster,'DaviesBouldin'); 


subplot(1,3,1);
plot(data(cluster(:,1)==1,1),data(cluster(:,1)==1,2),'r*');
hold on

subplot(1,3,2);
plot(data(cluster(:,2)==1,1),data(cluster(:,2)==1,2),'r*');
hold on
plot(data(cluster(:,2)==2,1),data(cluster(:,2)==2,2),'b*');
hold on

subplot(1,3,3);
data=[c1 r1];
 [idx,ctrs] = kmeans(data,3);
plot(data(cluster(:,3)==1,1),data(cluster(:,3)==1,2),'r*');
hold on
plot(data(cluster(:,3)==2,1),data(cluster(:,3)==2,2),'b*');
hold on
plot(data(cluster(:,3)==3,1),data(cluster(:,3)==3,2),'k*');
hold on


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章