剛看完一篇內建聚類的文章:
Combining Multiple Clusterings Using Evidence Accumulation(EAC)
做個簡單的筆記,友善複習。
和一般的內建聚類不同,EAC并不直接組合不同的劃分,而是由這些不同的劃分得到一個鄰近度矩陣(proximity matrix),之後便可在這個鄰近度矩陣上運用層次聚類中的單連接配接(single link)或平均連接配接(average link)算法得到最終的劃分。
(單連接配接算法:http://blog.csdn.net/tyh70537/article/details/76768802)
首先要想的到不同的劃分(partition)有以下方法:
1,使用不同的聚類算法
2,使用相同的算法,但進行不同的初始化或使用不同的參數
3,使用不同的特征空間
假設資料集 X 包含n個樣本,X={x1,x2,⋯,xn}。現有m種不同的劃分,劃分集合 P={P1,P2,⋯,Pm} ,注意EAC并不限制每種劃分中的簇的個數。EAC算法建構一個n*n的鄰近度矩陣D, Nij=Nji 表示樣本i和樣本j在m種劃分中屬于同一個簇的次數。則矩陣D的元素 Dij=Nij/m ,在D的基礎上營運單連接配接算法,得到最終的劃分。
相比一般層次聚類中使用的鄰近度矩陣,
EAC方法內建不同的劃分建構新的鄰近度矩陣,新的鄰近度矩陣相比直接使用原始資料建構的鄰近度矩陣,更能反應樣本之間的關系。
下面幾張圖說明用EAC內建k-means和單一的k-means算法的不同效果:
原始資料的分布情況如下:

使用單個k-means算法(k=25):
使用單個k-means算法(k=11):
EAC法(內建了30個k-means劃分,每種劃分的簇的數量k随機從區間 [10,30] 裡選擇):
可以看出,內建後的k-means算法可以識别複雜的結構。