谱聚类原理及Python实现
图模型
无向带权图模型 G=<V,E> G =< V , E > ,每一条边上的权重 wij w i j 为两个顶点的相似度,从而可以定义相似度矩阵 W W ,此外还可以定义度矩阵 和邻接矩阵 A A ,从而有拉普拉斯矩阵 。所以本文用到的矩阵总共两个: L L 和 。
图的分割
一个图 G G 可能有很多个子图 (总共 k k 个),现在的任务是将大图分成若干小块,要求分法是最佳的。何为“最佳”呢,遍历每一个子图,计算一个切图惩罚,将他们加起来。式中的 表示子图 Gi G i 的补集,代价函数 C C 计算的是连接两个子图之间的权重之和。
根据这个公式,对于下面这个图,假设点7和点8之间的权重值很小,那么很容易有红线所示的划分(假设二分),上面的代价函数计算出来的值很小。但显然绿色线所示才是最佳的分法。

距离度量与邻接矩阵
邻接矩阵某种程度上反映了图中各结点之间的相似性,普通的邻接矩阵元素非0即1,谱聚类中的邻接矩阵用KNN来计算。具体来说,遍历每一个结点 xi x i ,根据相似度(或距离)矩阵找出它的 k k 个最接近的点,构成 的邻域 Ni N i ,然后按以下规则之一构造邻接矩阵。
Aij=Aji={
0exp−||xi−xj||22σ2xi∉Nj andxj∉ Nixi∈Nj or xj∈Ni A i j = A j i = { 0 x i ∉ N j a n d x j ∉ N i exp − | | x i − x j | | 2 2 σ 2 x i ∈ N j o r x j ∈ N i
Aij=Aji={
0exp−||xi−xj||22σ2xi∉Nj or xj∉ Nixi∈Nj and xj∈Ni A i j = A j i = { 0 x i ∉ N j o r x j ∉ N i exp − | | x i − x j | | 2 2 σ 2 x i ∈ N j a n d x j ∈ N i
切图聚类
RatioCut 切法
为了解决上面这个局部最优问题,一个很自然的做法就是改进目标函数,要求每个划分出来的子图的结点数尽量大。例如上图,最佳划分对应的两个子图节点数都是4,而局部最优划分有一个子图节点数为1。
RatioCut(G1,⋯,Gk