谱聚类(Spectral Clustering)原理及Python实现

谱聚类原理及Python实现

图模型

  无向带权图模型 G=<V,E> G =< V , E > ,每一条边上的权重 wij w i j 为两个顶点的相似度,从而可以定义相似度矩阵 W W ,此外还可以定义度矩阵 D 和邻接矩阵 A A ,从而有拉普拉斯矩阵 L = D A 。所以本文用到的矩阵总共两个: L L W

图的分割

  一个图 G G 可能有很多个子图 G i (总共 k k 个),现在的任务是将大图分成若干小块,要求分法是最佳的。何为“最佳”呢,遍历每一个子图,计算一个切图惩罚,将他们加起来。式中的 G ^ i 表示子图 Gi G i 的补集,代价函数 C C 计算的是连接两个子图之间的权重之和。

C o s t ( G 1 , , G k ) = i C ( G i , G ^ i ) C ( G 1 , G 2 ) = i G 1 , j G 2 w i j

  根据这个公式,对于下面这个图,假设点7和点8之间的权重值很小,那么很容易有红线所示的划分(假设二分),上面的代价函数计算出来的值很小。但显然绿色线所示才是最佳的分法。


距离度量与邻接矩阵

  邻接矩阵某种程度上反映了图中各结点之间的相似性,普通的邻接矩阵元素非0即1,谱聚类中的邻接矩阵用KNN来计算。具体来说,遍历每一个结点 xi x i ,根据相似度(或距离)矩阵找出它的 k k 个最接近的点,构成 x i 的邻域 Ni N i ,然后按以下规则之一构造邻接矩阵。

Aij=Aji={ 0exp||xixj||22σ2xiNj andxj NixiNj or xjNi 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||xixj||22σ2xiNj or xj NixiNj and xjNi 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
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值