作者:林子
链接:https://blog.youkuaiyun.com/Leoch007/article/details/80206759
欢迎转载,记得注明出处
社区发现
图聚类,也称为社区发现、图划分,其与聚类相似又不同于聚类(旨在将相似的数据点划分为一类),社区发现的目的是通过将数据点划分到不同的簇中,使得簇内的边尽量地多,簇之间的边尽可能地少。
Normalized Cut
算法解析
图聚类也叫图划分,就是试图找到最好的切割方式将图划分成不同的部分(社区),而一种很经典的方式便是最小割,即尝试将图划分为K个子图,这K个子图中之间的割最小。
割的定义则是 cut(A,B)=∑u∈A,v∈Bw(u,v) c u t ( A , B ) = ∑ u ∈ A , v ∈ B w ( u , v ) ,表示A、B子图之间的边权重之和。
该算法思想很朴素也很直观,满足我们希望得到较好图划分的需求;但是,由于其只考虑子图之间的边权重之和,而往往单节点和其补图之间连接的边数是最少的,故其会倾向于分离单个或者少量的簇节点,而这往往不是最佳的图划分方式,如下图所示:
而Normalized Cut的提出正是要解决MinCut最小割的这一问题。Normalized Cut首次提出是在论文《Normalized cuts and image segmentation》中,其目的是解决最小割中极易划分出单节点簇的弱点。Normalized Cut对最小割做了进一步的优化,其数学定义为: Ncut(A,B)=cut(A,B)assoc(A,V)+cut(A,B)assoc(B,V) N c u t ( A , B ) = c u t ( A , B ) a s s o c ( A , V ) + c u t ( A , B ) a s s o c ( B , V ) ,其中 cut(A,B) c u t ( A , B ) 正是A、B子图之间的最小割,而 assoc(A,V)=∑u∈A,t∈Vw(u,t) a s s o c ( A , V ) = ∑ u ∈ A , t ∈ V w ( u , t ) 表示A子图中每个点与图中所有点的边权总和。从Ncut的数学定义中,我们也可以看出,其对割做了标准化的处理,使得单节点的cut虽然小,但其assoc也很小,总体依然较大,最小化Ncut时则不会出现偏向于划分出单节点簇的情况。
此外,最小化Normalized Cut的过程中,可以将其转成矩阵特征值和特征向量的求解问题:W表示相似度矩阵,D为对角的度矩阵,则NCut的最小值问题转化为:
minxNcut(x)=minyyT(D−W)yyTDy m i n x N c u t ( x ) = m i n y y T ( D − W ) y y T D y 其中 y(i)∈{ 1,−1} y ( i ) ∈ { 1 , − 1 } ;这个形式属于Rayleigh商数,如果把y的取值范围放宽到实数,那么最小化Ncut相当于求解广义特征值系统下的方程: (D−W)y=λDy ( D − W ) y = λ D y 即化为了特征值和特征向量的求解问题,故而可以采取和谱聚类思路一致的算法步骤,分为 2-路划分和 k-路划分两种:
2-路划分:
(1)计算相似度矩阵W和度矩阵D
(2)计算标准化拉普拉斯矩阵 D−12(D−W)D−12 D − 1 2 ( D − W ) D − 1 2
(3)取第二小的特征值对应的特征向量,选取一个阈值对其划分,大于该阈值所对应的数据点为一类,小于该阈值所对应的数据点为另一类
2-路划分算法要求对划分得到的两个社区再分别进行上述(1)(2)(3)步骤进行划分,如此层次化地不断迭代直至满足已设定的收敛条件
k-路划分:
(1)计算相似度矩阵W和度矩阵D
(2)计算标准化拉普拉斯矩阵 D−12(D−W)D−12