谱聚类算法
谱聚类算法:谱指的是某个矩阵的特征值。
谱聚类的思想来源于图论,它把待聚类的数据集中的每一个样本看做是图中一个顶点,这些顶点连接在一起,连接的这些边上有权重,权重的大小表示这些样本之间的相似程度。同一类的顶点它们的相似程度很高,在图论中体现为同一类的顶点中连接它们的边的权重很大;不在同一类的顶点连接它们的边的权重很小。于是谱聚类的最终目标就是找到一种切割图的方法,使得切割之后的各个子图内的权重很大,子图之间的权重很小。
一、预备知识
-
假设给定一个数据集,我们将这个n个数据向量当做m维空间中某一幅无向图上的一个个点,目的是衡量这些点的相似性。
-
把图叫做相似图,记为,其中表示顶点,表示边的集合。两个顶点的边的权重记为
-
相似性用表示,越大表示越相似
-
n个权重点构成一个矩阵
1.1邻接矩阵、度和度矩阵、连通子图
(1)邻接矩阵
所有顶点之间的权重构成一个矩阵,叫邻接矩阵,也叫权重矩阵。两个顶点互相之间的权重是一样的,因此是对称矩阵。
(2)度矩阵
对于某个顶点的度,定义为
度其实就是邻接矩阵的第行的和。(因为邻接矩阵是对称矩阵,所以第列的和也可以)
度矩阵定义为个度构成的对角矩阵:
对于给定顶点的一个子集,定义它的补为。对于某个顶点,定义对应的指示向量为,若,则指示向量第i个位置为1,即,否则为0;对于两个子集A和B,我们定义:
公式(4)表示两个子集中顶点之间的权重之和,注意这里不包含子集内顶点之间的权重。
子集大小有两种定义
(3)连通子图
如果中的任意两个顶点都至少存在一条路径将他们连接起来,并且中其他顶点也在这条路径上,则是连接的。如果子集是连接的,并且与他的补不存在任何的连接,则称为连通子图。非空子集构成的一个分割,即
1.2 相似图的衡量方法
如果度量空间具有距离越远越不相似,越近越相似的特性,通常作为相似度的衡量标准。
(1)$ \epsilon - 近邻法 $
采用欧式距离计算两个顶点的距离,然后设定一个阈值
(2)k-邻近法
利用KNN算法遍历所有的样本点,取每个样本最近的k个点作为近邻,取与顶点最近的个顶点,该顶点与个顶点的权重都大于0。但是这种方法不能保证相似矩阵是对称的,因为两个顶点可能不是在互相的近邻中。一般使用两种方法保证相似矩阵的对称。
- 两个顶点只要其中一个点在另一个顶点的近邻中,则令
- 两个顶点同时在双方的近邻中,则令,否则
(3)全连接法
该方法将所有的顶点都连接起来。然后通过度量空间中某种对称度量算子来计算顶点之间的相似度。常用的有多项式核函数,高斯核函数和Sigmoid核函数。最常用的是高斯核函数RBF,此时相似矩阵和邻接矩阵相同,比如使用高斯核函数计算两个顶点之间的相似度:
实际应用中,使用全连接法是最普遍的,而在全连接法中使用高斯径向核RBF是最普遍的。
1.3 图拉普拉斯矩阵
1.3.1 非规范化的图拉普拉斯矩阵
图拉普拉斯矩阵的定义如下:
其中为度矩阵,W为权重(近似)矩阵,所以L也是对称矩阵
性质:
- 对于任意向量$f \in R^n $
-
是一个对称半正定矩阵。
-
的最小特征值为0,对应的特征向量是全为1的向量。
-
对于一个对角分块矩阵
他的特征值等于各个分块矩阵的特征值。
-
若是一个具有非负权重的无向图,则它对应的图拉普拉斯矩阵L的0特征值的代数重数k等于G中连通子图的个数,假设k个连通子图记为,并且0特征值对应的特征值空间由各个连通子图的指示向量。
1.3.2规范化的图拉普拉斯矩阵
有两种规范化的图拉普拉斯矩阵,他们互相联系。这两种规划化的图拉普拉斯矩阵定义为:
公式(19)中的是一个对称矩阵,下标sym是单词symmetric的简写,不是对称矩阵,该矩阵和随机游走(random walk)相关,下标rw就是random walk 的首字母组合。
的性质:
- 对于任意向量
-
和具有相同的特征值,对应的特征值向量关系为
二、切割方法
优化的目标函数为:
2.1 RatioCut切图
引入指示向量对于任意一个向量, 它是一个n维向量(n为样本数),我们定义
对应的RatioCut函数表达式为:
松弛化的目标函数:
将图切割为k个分组的问题转换成了求图拉普拉斯矩阵L的**前k个最小特征值对应的特征向量**和L二次型之和。
求出来的并不能准确指示顶点所属类别,将矩阵当作一个新的具有k个维度特征n个样本的数据集进行聚类。是对每一个样本聚类,聚类的类别数是k,也就是对H的每一行进行聚类。
2.2 Ncut切图
优化目标任然是
松弛化的目标函数:
令:
上式的解也就是矩阵的前k个最小特征值对应的特征向量按列排列成。反带入可得前k个最小特征值对应的特征向量
或者矩阵的前个最小的广义特征值对应的特征向量。
三、算法实现步骤
最常用的相似矩阵的生成方式是基于高斯核距离的全连接方式,最常用的切图方式是Ncut。而到最后常用的聚类方法为K-Means。
假设聚成个分组
(1)计算相似度矩阵
(2)计算度矩阵
(3)计算图拉普拉斯矩阵,构建标准化后的图拉普拉斯矩阵
(4)直接对进行特征值分解,获取其前个特征值对应的特征向量按照列排成矩阵
(5)对矩阵的 所有行标准化,组成进行聚类,如使用方法或者别的方法进行聚类得到
(6)输出原始数据的分组,其中
注意:在第(4)步也可以再计算规范化的矩阵,在对这个矩阵做特征分解或者做广义特征值分解,后面步骤相同。