刚看完一篇集成聚类的文章:
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算法可以识别复杂的结构。