聚类
在了解谱聚类之前,首先需要知道聚类,聚类通俗的讲就是将一大堆没有标签的数据根据相似度分为很多簇(就是一坨坨的),将相似的聚成一坨,不相似的再聚成其他很多坨。一般的聚类算法存在的问题是k值的选择(就是簇的数量事先不知道),相似性的度量(如何判断两个样本点是否相似),如何不陷入局部最优等问题,流行的算法有k-means等一系列算法。
谱聚类
顾名思义就是一种聚类算法,这个谱字应该指的就是谱图的意思,简单的来讲就是将聚类问题转化为图的分割问题,将图中相似的点聚在一起,但是这个图是从哪里来的呢???这就涉及到谱聚类的步骤了,以下是各种谱聚类算法的通俗框架。
输入:相似性矩阵S,簇的数量k
k值只能靠猜测了。
这个相似性矩阵怎么得到呢?
假设有一堆数据x1,x2,,,xn,sij = s(xi,xj),至于这个相似性度量函数s就有很多种选取方法了,最简单的就是欧氏距离了,然后就构造出了一个相似性矩阵S = (sij)i,j = 1....n
- 根据邻接矩阵S构造出一个有权无向图
- 有了图就可以计算图的Laplacian L(拉普拉斯矩阵)
- 再算出L的前k个特征向量 v1,.....vk
- 将特征向量作为列向量构造出特征空间V
- 再对V的行用k-means聚类出簇C1,.....Cn
输出:簇
算法可修改之处:
- 比如相似图的构造就有knn图,全连接图,ε-neighborhood图
- Laplacian矩阵也分为规范Laplacian和非规范Laplacian,其中非规范Laplacian也有两种。
规范Laplacian L = D - W,D为节点的度矩阵,W为节点的权重矩阵
非规范Laplacian
Lsym = D-1/2LD-1/2 = I - D-1/2WD-1/2
Lrw = D-1L = I - D-1W - 特征向量的选择,v不一定是L的特征向量,选择出的向量也不一定为前k个
谱聚类的引出
看到这里是不是觉得一切都那么的自然,但是这个东东为啥能被人想出来呢???
最根本的原因在于图的最优分割问题是一个NP难的问题,在得到一个基于样本相似度的无向加权图G=(V,E)之后,可以有很多种基于图论的方法来切割G,使得子图的内部相似度最大,子图间的相似度最小,切割的方法也有很多种,比如Ncut,Rcut,Avcut等多种切割方法,一般用来切割k=2的问题效果还不错,但涉及到多路规范切割(k>2)的时候,优化问题就难以解决了。
各种切割方法的解释详见下述论文。
谱聚类的优势
只要保证相似性图的稀疏,谱聚类对于大数据量的样本效率就会很高。
而且谱聚类的求解不涉及到凸优化问题。
谱聚类的缺点
缺点很明显k值只能靠猜测
由于博主是刚开始看论文的小白,所以有什么不足之处,欢迎大家指正。