谱聚类

 

    谱聚类是利用相似矩阵的分类方法。涉及到的理论方法有:图论概念,Laplacian矩阵,谱定理,瑞利商以及kmeans聚类。

 

    优点:通过特征分解,可以获得聚类判据在放松了的连续域中的全局最优解。与其他算法相比,它不仅思想简单、易于实现、不易陷入局部最优解,而且具有识别非凸分布的聚类能力,非常适合于许多实际问题。

 

A.相关概念

    1. 从拓扑空间开始,一步步往上加定义,可以形成很多空间。线形空间其实还是比较初级的,如果在里面定义了范数,就成了赋范线性空间。赋范线性空间满足完备性,就成了巴那赫空间;赋范线性空间中定义角度,就有了内积空间,内积空间再满足完备性,就得到希尔伯特空间。

    2. Hermite阵(共轭矩阵)是正规阵,因此Hermite阵可被酉对角化,而且得到的对角阵的元素都是实数。这意味着Hermite阵的特征值都是实的,而且不同的特征值所对应的特征向量相互正交。

    3.

    4. 谱定理给出了算子或者矩阵可以对角化的条件(也就是可以在某个基底中用对角矩阵来表示)。

    5. n阶复方阵U的n个列向量是U空间的一个标准正交基,则U是酉矩阵(Unitary Matrix)

B. 算法流程

    1. 根据相似矩阵W构造加权无向图G=(V,E),V中的顶点表示相似矩阵的样本,E是样本之间的关系,每条边的权值代表相似性度量值;

    2. 求图G的Laplacian矩阵L,L=D-W。D为对角矩阵;

    3. 对矩阵L求特征值与特征向量,取前k个最小的特征值的特征向量

    4. 将上一步算出的k个特征向量组成N*k的矩阵,并以矩阵行为样本进行kmeans聚类,每行被聚成的类别即为原来样本的类别。

 

C. 问题定义

    谱聚类问题即是一个图割问题,设将顶点集V分割为A,B两个集合,cut(A,B)表示分割的代价,需要求cut(A,B)最小化,问题定义如下:

    以上为最小割情况,但容易分割出孤立点,即数据倾斜情况,所以有以下两种比例割和正规割情况:

 

    定义一个向量f,f代表图G的一种分割情况,其中元素定义如下:

    可以把图割问题变换为最优化问题,即求解下式最小值时候的解f:

限制条件:,f为整数解。

    上式都可以变换为三种分割公式,以下用比例割的推演进行说明:

 

D. 问题求解

    利用瑞利商原理进行求解。

 

    以上问题最优化公式可表示为瑞利商,

 

    对于聚类k=2的情况,L的最小特征值即为的最小值,相应的特征向量为连续的最优解f,但是由于L为半正定阵,特征值有可能有0,相应的特征向量也为0,所以一般取第二小特征值作为最小值。再将特征向量进行k-means聚类聚成到2类或者利用阈值划分成2类,即为离散最优解

 

    对于聚类k>2的情况,则取最小的k个特征值,其相应的k个特征向量即为连续的最优解。根据共轭矩阵的特性可知这k个向量是相互正交的,利用k=2中的方法转换之后的k个离散最优解覆盖整个顶点集,且不相交。

 

    图G的Laplacian矩阵L是Hermite阵(共轭矩阵)即正规矩阵,Hermite阵可被酉对角化,而且得到的对角阵的元素都是实数。这意味着Hermite阵的特征值都是实的,而且不同的特征值所对应的特征向量相互正交。

 

E. 代码

matlab代码:

 

function idx = spectral_clustering(W, k)
    D = diag(sum(W));
    L = D-W;
    opt = struct('issym', true, 'isreal', true);
    [V dummy] = eigs(L, D, k, 'SM', opt);
    idx = kmeans(V, k);
end

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值