前言:以前只是调用过谱聚类算法,我也不懂为什么各家公司都问我一做文字检测的这个算法具体咋整的,没整明白还给我挂了哇擦嘞?讯飞还以这个理由刷本宝,今天一怒把它给整吧清楚了,下次谁再问来!说不晕你算我输!
一、解释:
谱聚类是一种基于图论的算法,主要思想是把所有的数据看做空间中的点,这些点之间用带权边连接,距离越近权重越大,通过对这些点组成的图进行切割,让切图后的子图间的权重和尽可能小,子图内的权重尽可能大,从而达到聚类的目的。
切图的过程是:定义一个子图与其他子图间的权重和,同时要求每个子图的个数不能太少,这样图切问题就转换为了最小化这个权重和/子图个数的过程。优化这个过程我们定义一个指示矩阵h,要分为的类别是(A1,A2...Ak),i属于Aj类则hij≠0,否则等于0,这样优化式子得到h之后我们就能知道各个节点的类别。根据分析得知,这个h的解与拉普拉斯矩阵L和权重矩阵D有关,具体来说是D-1/2LD-1/2的k个最小的特征值对应的特征向量,这样我们就得到了h,也将维度从n降到了k。一般来说需要对h进行按行进行标准化,然后再对这个n*k的矩阵按行进行kmeans聚类,就得到了最终的聚类结果。
二、推导:
三、步骤:
输入:样本集D=(x1,x2,...,xn),相似矩阵的生成方式, 降维后的维度k1, 聚类方法,聚类后的维度k2
输出: 簇划分C(c1,c2,...ck2).
1) 根据输入的相似矩阵的生成方式构建样本的相似矩阵S。
2)根据相似矩阵S构建邻接矩阵W,构建度矩阵D。
3)计算出拉普拉斯矩阵L。
4)构建标准化后的拉普拉斯矩阵D−1/2LD−1/2
5)计算D−1/2LD−1/2最小的k1个特征值所各自对应的特征向量f。
6) 将各自对应的特征向量f组成的矩阵按行标准化,最终组成n×k1维的特征矩阵F。
7)对F中的每一行作为一个k1维的样本,共n个样本,用输入的聚类方法进行聚类,聚类维数为k2。
8)得到簇划分C(c1,c2,...ck2)。
四、优缺点:
优点:只需要相似度矩阵,方便处理稀疏数据的聚类;使用了降维,处理高维数据效果比传统聚类方法好。
缺点:如果降维的幅度不够,效果和效率均不够好;依赖于相似度矩阵。
五、链接: