聚类算法(谱聚类)

Posted 数学 算法 生活

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聚类算法(谱聚类)相关的知识,希望对你有一定的参考价值。


1.聚类问题可分为Compactness和Connectivity

2.Compactness只能处理凸集,典型是K-means

3.Connectivity典型代表是谱聚类,它是带权重的无向图

4.谱聚类利用切图原理寻找优化函数

5.引入指示向量Y、度矩阵D、邻接矩阵W来化简目标函数




上一篇我们介绍了K-means聚类算法,实际上,聚类问题可以分为两种思路:第一种是Compactness,这类算法只能处理凸集,GMM就属于这种;第二种是Connectivity,能很好处理非凸集,这类的代表就是谱聚类(Spectral Clustering),这一篇我们就介绍这个聚类算法。






模型介绍





谱聚类是一种基于带权重的无向图方法,它也是一种概率图模型。这个图用G=(V,E)表示,V是所有顶点的集合,E是边的集合。比如下面的无向图:


聚类算法(谱聚类)


V是所有样本的集合,E代表两两样本的权重:


聚类算法(谱聚类)


由于是无向图,所以


聚类算法(谱聚类)


权重w用相似度度量,引入矩阵W:


聚类算法(谱聚类)


该矩阵称为相似度矩阵或邻接矩阵。表达了两两样本之间的权重。


相似度,通过用核函数度量,我们在文章介绍了几种核函数,这里由于是无向图,边代表了权重,如果没有边连接,则权重为0,于是:


聚类算法(谱聚类)



那么对于无向图是如何聚类的呢?假设我们已经完成了聚类,聚类的结果是这样的:


聚类算法(谱聚类)


即:样本1,2作为一类,样本3~6作为另一类。


引入Cut:


聚类算法(谱聚类)



针对上面无向图,Cut的意思是说,样本1和样本2作为一类,它的每一个样本与第二类所有样本(样本3~6)的权重之和等于多少,这个实际上就是相对于尚未分割之前,整体的权重减少了多少,也就是代价(Cost).


由此,我们对V聚类可得:


聚类算法(谱聚类)


我们聚类的目标函数就是最小化Cut(V):


聚类算法(谱聚类)


但直接采用上面式子不太合理,因为每个Ai的元素不一样会影响其权重之和,我们要归一化操作,引入单个节点的度:


聚类算法(谱聚类)


进而定义每个类别(集合)的度:


聚类算法(谱聚类)


所以我们改进了目标函数,称为NCut:


聚类算法(谱聚类)


最终的优化问题就是最小化NCut




聚类算法(谱聚类)


模型矩阵






上一节我们推导了最小化目标函数:


聚类算法(谱聚类)


这一节我们对目标函数做变换,得到一种简洁的矩阵形式。为此,引入指示向量:


聚类算法(谱聚类)


yi是K维的向量,每个维度取值0或1,并且只有一个1;它的意思是指,第i个样本属于第j个类别:


聚类算法(谱聚类)


记Y:

聚类算法(谱聚类)


显然,Y是m*K维矩阵。优化目标转化为:


聚类算法(谱聚类)


对NCut进行变换:



聚类算法(谱聚类)



下面我们就用已知(W、Y)来表示矩阵O和P。先来看P。


因为:


聚类算法(谱聚类)


仔细观察向量yi的取值,可以知道:


聚类算法(谱聚类)


进一步,记属于类别k的样本数为Nk个,那么


聚类算法(谱聚类)


于是得到:


聚类算法(谱聚类)



引进D(所以样本单个节点度构成的矩阵):


聚类算法(谱聚类)


我们得到:



聚类算法(谱聚类)



接下来我们来化简矩阵O:



聚类算法(谱聚类)



因为


聚类算法(谱聚类)



所以


聚类算法(谱聚类)



第一项实际就是矩阵P:


聚类算法(谱聚类)


对于第二项,因为:




聚类算法(谱聚类)



其对角与第二项完全一致,又因为最终目标函数是求矩阵的迹,若记


聚类算法(谱聚类)


则:


聚类算法(谱聚类)


于是




我们得到最终优化的目标函数形式:




其中,L=D-W称为拉普拉斯矩阵。


以上是关于聚类算法(谱聚类)的主要内容,如果未能解决你的问题,请参考以下文章

到底什么是谱聚类算法?

谱聚类算法

聚类算法(谱聚类)

谱聚类(spectral clustering)原理总结

利用谱聚类算法解决非完全图的聚类

谱聚类算法及其代码(Spectral Clustering)