聚类集成是什么?把多次聚类的结果合成一个更稳的答案
聚类集成(Clustering Ensemble),也叫共识聚类,是把多个聚类结果组合起来,得到一个更稳定、更准确的最终聚类结果的方法。它把集成学习的思想从有监督的分类推广到了无监督的聚类。
为什么需要聚类集成
聚类算法往往不够稳定:K 均值对初始中心很敏感,换一个随机种子就可能得到不同的结果;不同的聚类算法基于不同的假设,适合不同形状的簇;参数,比如簇的数量、密度阈值,也很难选。而且聚类没有标签,很难判断哪一次的结果最好。聚类集成的思路是:与其纠结选哪一个,不如把许多个结果综合起来,取它们的“共识”。
第一步:生成多样的聚类成员
与分类集成一样,聚类集成的成员也需要“好而不同”。常用的产生方式有:用同一个算法、不同的随机初始化多次运行,比如多次运行 K 均值;使用不同的聚类算法;使用不同的参数,比如不同的簇数;对样本进行随机抽样,或对特征进行随机选择或随机投影;对数据加入扰动。
第二步:用共识函数整合
聚类集成的难点在于:不同聚类结果中的簇编号没有对应关系,这一次的“第 1 簇”可能对应另一次的“第 3 簇”,不能像分类那样直接投票。常用的整合方法有几类。基于共协矩阵:对任意两个样本,统计它们在所有聚类成员中被分到同一个簇的比例,得到一个相似度矩阵,如果两个样本在大多数结果中都在一起,它们很可能确实属于同一簇;然后在这个矩阵上再做一次层次聚类或谱聚类。Ana Fred 和 Anil Jain 在 2005 年提出的证据累积方法就是这一思路。基于超图划分:Alexander Strehl 和 Joydeep Ghosh 在 2002 年把每个聚类成员中的每个簇看作一条连接若干样本的超边,把共识问题转化为超图划分问题,并提出了 CSPA、HGPA、MCLA 等算法,用归一化互信息衡量共识结果与各成员的一致程度。基于标签对齐和投票:先通过匹配把不同结果的簇编号对齐,再进行投票。基于优化:寻找一个与所有成员平均差异最小的聚类结果。
效果与应用
聚类集成通常能够得到比单个聚类更稳定的结果,减少对初始化和参数的依赖;还能组合多个只能发现球状簇的简单聚类,得到形状复杂的簇;在分布式环境或隐私保护的场景中,也可以把在不同数据子集或不同特征上得到的聚类结果合并起来。它被用于基因表达数据分析、文档聚类和图像分割等。代价是需要多次运行聚类,并存储和处理样本两两之间的共协矩阵,大规模数据时开销较大。