谱聚类的数学解释

1.什么是拉普拉斯矩阵

L=D-W

其中D是度矩阵,(有的论文称这能代表节点的显著性程度,即节点的度越大,说明该节点在图中的显著性越大),只在主对角线上面有值,在其余位置都是0。W是通过样本点构建的基于全连接的相似度矩阵,那么L是一个什么样的矩阵的?主对角线上是每一行的权重之和,即最大的值,其余位置都是任意两个节点之间的负相似度。

拉普拉斯矩阵的最大价值是把一个抽象的图分隔问题(聚类问题),转化为通过矩阵分解求解的形式。这就要从拉普拉斯矩阵具有的优良性质去解读为什么它能够使实现这种转化。

2.拉普拉斯矩阵具有的优良性质:

(1).对于任意n*1的f向量,都有

                                                             f^{T}Lf=f^{T}Df-f^{T}Wf=\sum_{i=1}^{n}d_{i}f_{i}^{2}-\sum_{i,j=1}^{n}w_{ij}f_{i}f_{j}

                                                                      =\frac{1}{2}(\sum_{i=1}^{n}d_{i}f_{i}^{2}+\sum_{j=1}^{n}d_{j}f_{j}^{2}-2\sum_{i,j=1}^{n}f_{i}f_{j}w_{ij})==\frac{1}{2}\sum_{i,j=1}^{n}w_{ij}(f_{i}-f_{j})^{2}

我想到一种比较好的解释:

谱聚类过程实际是在做一个spectral embedding的过程,那么它首先要做的就是选择embedding空间的坐标系,直观理解,所有的f向量就是spectral embedding的一个坐标系,如果这个问题有k个解(要聚类成k类),那么f1,f2,...,fk就构成了k个坐标系,之前的n维度的点需要在这k个新坐标系下有一个新的坐标表示。

再来说这个f向量是如何选择的,根据上面的公式可以知道,L矩阵实际上就是对这些散点的一个相似度描述,那么对于任意两个节点:节点i和节点j来说,如果它们两个节点属于一个类别,意味着它们之间的距离比较小,那么它们两个节点之间的相似度就会很大(w_{ij}),那我们最小化w_{ij}(f_{i}-f_{j})^{2}这一项的时候,w_{ij}比较大,那么我们就需要使得f_{i}和f_{j}之间的差值平方最小,也就是需要使得这两个数字的大小尽可能的一致:f_{i}\approx f_{j},当然最最最完美的情况当然是f_{i}=f_{j}(当然使用特征向量即可),那么很自然的,我们假设f_{k}代表的是都在k这个类别里面的节点,那么它们都拥有比较大的w_{ij},它们在f_{k}这个坐标系下的值都相等,可以认为都是1.而对于那些不在k这个类别里面的结点对应的值全为0(可以想象对于不在类别k中的节点来说w_{ij}是一个很小很小的值,那么f_{i}与f_{j}之间的值就不必要相等,这个值是随意的,我们可以假设它为0,也可以假设为0.01,因为要和特征向量相匹配,所以这里可以当做0)。

那么假设我们的图6个节点可以划分为3个类别,那就是意味着,我们选取的三个特征向量应该为f_{1}=[1,1,0,0,0,0,],f_{2}=[0,0,1,1,0,0],f_{3}=[0,0,0,0,1,1],那么结点1的表示就是(1,0,0),节点3的表示就是(0,1,0),这样本身就能够对原始数据集有一个聚类角度的embedding,是一个符合聚类任务的embedding方法。

当然很重要的一点是这三个特征向量都使得f^{T}Lf=0,即这三个向量都对应着使得拉普拉斯矩阵特征值为0的特征向量,刚好我们有一个结论:图聚类的聚类数量等于图拉普拉斯矩阵零特征值对应的零特征向量的数量,对于拉普拉斯矩阵,总有一个0特征向量对应着所有的特征向量值为1的特征向量,这个是有L=D-W矩阵的每一行和为0决定的,这也意味着至少有一种划分方法,即把所有节点都划分为同一类的情况下下可以满足。

 

Min-Cut

最早提出的Min-Cut的目标是假设样本被分为k类,使得k类之间样本连边的权重和最小:

                                                                  cut(A_{1},A_{2},..A_{k})=\frac{1}{2}\sum_{i=1}^{k}W(A_{i},\hat{A}_{i})

很明显这样做会产生比例失衡的切割,即很多类里面只有一个节点的情况出现,为了解决这个问题,提出了Ratio-Cut和N-cut

 

Ratio-cut

Ratio-cut考虑的是既要使得各类之间连边的权重最小,也要使得每个类里面节点的数量尽可能的大,目标方程定义为:

                                                         Ratiocut(A_{1},A_{2},...,A_{k})=\frac{1}{2}\sum_{i}^{k}\frac{W(A_{i},\hat{A}_{i})}{|A_{i}|}

这里涉及到定义一个聚类指示向量h_{j}即j类别向量的表示,初始化很有讲究,初始化中就需要加入每个类别的社团的数量,这个数量的确定首先是一个问题!!参照刘建平老师的推导过程:

根据上面的式子可以知道RatioCut问题就可以转变为一个迹优化的问题

                         RationCut(A_{1},A_{2},...,A_{k})=\sum_{i=1}^{k}h_{i}^{T}Lh_{i}=\sum_{i=1}^{k}(H^{T}LH)_{ii}=Tr(H^{T}LH)

                                                                                s.t. H^{T}H=I

h_{i}^{T}Lh_{i} 的最大值为L的最大特征值,最小值时L的最小特征值。所以该问题的求解转化为找到k个最小的特征值,一般来说k远远小于n,也就是说,此时我们进行了维度归约,将维度n降到了维度k,从而近似解决了NP难问题,一般要对找到了H矩阵做标准化:

                                                                        h_{ij}^{*}=\frac{h_{ij}}{(\sum_{t=1}^{k}h_{it}^{2})^{1/2}}

在维度约简过程中使用了特征值对应的特征向量来代替H矩阵,因为特征向量只是我们一种理想的寄托,实际中求出来的

特征向量有正有负,当然不会违背我们最初的意愿,所以最后要经过k-means处理

 

N-cut

N-cut切图和Ration-cut的思路一样,只不过考虑到不一定节点数目越多聚类的效果就约好,而是类别内的权重越大聚类越好,这就很接近现代的社团检测方法,类内边的权重很大,类间权重很小,类内紧密,类间松弛

参考:刘建平老师的博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值