谱聚类

谱聚类(spectral clustering)原理总结:

谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也不复杂。在处理实际的聚类问题时,个人认为谱聚类是应该首先考虑的几种算法之一。下面我们就对谱聚类的算法原理做一个总结。

1. 谱聚类概述

谱聚类是从图论中演化出来的算法,后来在聚类问题中得到了广泛的应用。它的主要思想是把所有的数据看作空间中的点,这些点之间可以用边连接起来。距离较远的两个点之间的边权重较低,距离越近权重越高,通过对所有数据点组成的图进行切图,让切图后不同的子图间边权重和尽可能的低,而子图内的边权重和尽可能的高,从而达到聚类的目的。

乍一看,这个算法的原理的确简单,但是要完全理解这个算法的话,需要对图论中的无向图,线性代数和矩阵分析都有一定的了解。下面我们就从这些基础知识开始,一步步学习谱聚类。

2. 谱聚类基础之一:无向权重图

对于一个图,我们一般用点的集合V和边的集合E来描述,即为G(V,E)。

对于有边连接的两个点 v i , v j v_i,v_j vi,vj w i , j > 0 w_{i,j}>0 wi,j>0;对于没有边相连的两个点, w i , j = 0 w_{i,j}=0 wi,j=0;由于我们是无向图,所以, w i , j = w j , i w_{i,j}=w_{j,i} wi,j=wj,i

对于图中的任意一个点 v i v_i vi,它的度 d i d_i di定义为和它相连的所有边的权重之和,即:
d i = ∑ j = 1 n w i j d_i=\sum_{j=1}^{n}w_{ij} di=j=1nwij
利用每个点度的定义,我们可以得到一个nxn的度矩阵D,它是一个对角矩阵,只有主对角线有值,对应第i行的第i个点的度数,定义如下:

D = [ d 1 . . . . . . . . . d 2 . . . . . . . . . d n ] D=\begin{bmatrix} d_1 & ...&... \\ ... &d_2 &... \\ ... &... & d_n \end{bmatrix} D=d1.........d2.........dn

利用点和点之间的权重值,我们可以得到图的邻接矩阵W,除此之外,我们定义:
∣ A ∣ : 子 集 A 中 点 的 个 数 |A|:子集A中点的个数 AA

v o l ( A ) = ∑ i ∈ A d i vol(A)=\sum_{i\in A}d_i vol(A)=iAdi

3. 谱聚类基础之二:相似矩阵

如何得到邻接矩阵呢?方法有三类: ∈ \in -邻近法、K近邻法、全连接法。

  • ∈ \in -邻近法:它设置了一个阈值 ∈ \in ,然后用欧式距离 s i , j s_{i,j} si,j度量任意两点 x i , x j x_i,x_j xixj的距离。定义邻接矩阵W如下:

w i , j = { 0 , s i j > ∈ ∈ , s i j < = ∈ w_{i,j}= \begin{cases} 0, & s_{ij}>\in \\ \in, & s_{ij}<=\in \end{cases} wi,j={ 0,,sij>sij<=

从上式可见,两点间的权重要不就是 ∈ \in ,要不就是0,没有其他的信息了。距离远近的度量很不精确,因此在实际生活中,很少用该方法。

  • K近邻法:利用KNN算法遍历所有的样本点,取每个样本最近的K个点作为近邻,只有和样本距离最近的K个点之间的 w i j > 0 w_{ij}>0 wij>0,但是这种方法会造成邻接矩阵是非对称的,我们后面的算法需要堆成邻接矩阵。为了解决这个问题,一般采取下面两种方法。

**第一种方法是:**只要一个点在另一个点的K近邻中,则保留 x i j x_{ij} xij
w i j = w j i = { 0 x i ∉ K N N ( x j ) a n d x j ∉ K N N ( x i ) e x p ( − ∣ ∣ x i − x j ∣ ∣ 2 2 θ 2 ) x i ∉ K N N ( x j ) o r x j ∉ K N N ( x i ) w_{ij}=w_{ji}= \begin{cases} 0 &x_i\notin KNN(x_j) and x_j\notin KNN(x_i)\\ exp(-\frac{||x_i-x_j||^2}{2\theta^2}) &x_i\notin KNN(x_j) or x_j\notin KNN(x_i) \end{cases} wij=wji={ 0exp(2θ2xixj2)xi/KNN(xj)andxj/KNN(xi)xi/KNN(xj)orxj/KNN(xi)
**第二种方法是:**必须两个点互为K近邻,则保留 x i j x_{ij} xij
w i j = w j i = { 0 x i ∉ K N N ( x j ) o r x j ∉ K N N ( x i ) e x p ( − ∣ ∣ x i − x j ∣ ∣ 2 2 θ 2 ) x i ∉ K N N ( x j ) a n d x j ∉ K N N ( x i ) w_{ij}=w_{ji}=\begin{cases}0 &x_i\notin KNN(x_j) or x_j\notin KNN(x_i)\\exp(-\frac{||x_i-x_j||^2}{2\theta^2}) &x_i\notin KNN(x_j) and x_j\notin KNN(x_i)\end{cases} wij=wji={ 0exp(2θ2xixj2)xi/KNN(xj)orxj/KNN(xi)xi/KNN(xj)andxj/KNN(xi)

  • 全连接法:第三种方法所有点之间的权重值都大于0,因此称为全连接法。可以选择不同的核函数来定义边权重,常用的多项式核函数有高斯核函数和sigmoid核函数,高斯核RBF定义如下:

w i j = s i j = e x p ( − ∣ ∣ x i − x j ∣ ∣ 2 2 θ 2 ) w_{ij}=s_{ij}=exp(-\frac{||x_i-x_j||^2}{2\theta^2}) wij=sij=exp(2θ2xixj2)

在实际的应用中,使用第三种全连接法来简历邻接矩阵是最普遍的,而在全连接法中使用高斯径向核RBF是最普遍的。

4. 谱聚类基础之三:拉普拉斯矩阵

拉普拉斯矩阵(Graph Laplacians)和后面要介绍的算法息息相关,它的定义很简单:
L = D − W L=D-W L=DW
其中,D是度矩阵,W是邻接矩阵。

拉普拉斯矩阵的性质:

  1. 它由D和W矩阵构成,所以L是对称矩阵。
  2. 由于是对称矩阵,则它的所有的特征值都是实数。
  3. 对于任意的向量f,我们有

f T

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值