20150916谱聚类
1.谱聚类概念
1.1基本概念
- 实对称阵的特征值是实数
- 实对称阵不同特征值对应的特征向量正交
- 谱:方阵作为线性算子,它的所有特征值的全体统称方阵的谱。
- 谱半径:方阵的谱半径为最大的特征值,矩阵A的谱半径为\(\left( A^T A \right)\)的最大特征值
- 谱聚类:一般来说,是一种基于图论的聚类方法,通过对样本数据的拉普拉斯矩阵的特征向量进行聚类,从而达到对样本数据聚类的目的。
1.2相似度图G
1.2.1相似度图G的概念
- 给定一组数据\(x_1,x_2,\cdots,x_n\),记任意两个点之间的相似度为\(s_{ij}=< x_i,x_j>\),形成相似度图:G=(V,E)。如果\(x_i\)和\(x_j\)之间的相似度\(s_{ij}\)大于一定的阈值,那么,两个点是连接的,权值记做\(s_{ij}\)。 利用相似度图来聚类的时候,要使得每一簇边的权值极小,簇内部的权值极大。
- 邻接矩阵:如果\(v_i\)和\(v_j\)之间的相似度\(s_{ij}\)大于一定的阈值,则认为这两个点是连接的,满足条件的\(s_{ij}\)则为\(w_{ij} = 0\)即表示这两个点未发生连接。这样\(w_{ij}\)构成邻接矩阵W。
- 度矩阵:图G中某一点\(v_i \in V\)的度可以定义为:\(d_i = \sum_{j=1}^{n}{w_{ij}}\),其中度矩阵\(D= diag \lbrace d_1,\cdots ,d_n \rbrace\)
- 子图: 图G的子图相当于全集的子集,也就是图G中的部分点构成的一个新的图。 >①子图的指示向量:设置子图A的指示向量\(\mathbb{1}_A = (f_1,...,f_n)' \in \mathbb{R}^n\),当\(v_i \in A\)时候,\(f_i = 1\),否则\(f_i = 0\)。 ②如果A和B是图G的不相交子图,则子图的连接权为:\(W\left( A, B \right) :=\sum_{i \in A, j \in B}{w_{ij}}\) ③子图A的size测量指标有两个:(1)\(\left | A \right |:\)子图中的顶点个数;(2)\(vol\left( A \right):\sum_{i \in A}{d_i}\)
1.2.2相似图的建立
- 将给定数据集\(x_1,x_2,\cdots,x_n\)以及对称相似度\(s_{ij}\)带入到相似度图的方法。构建相似度图G时,主要是明确数据点相邻点之间的关系。
- 全连接图:在全连接图中,将所有点都相互连接起来,同时所有边的权重设为\(s_{ij}\)。常用的相似度函数为:\(s\left( x_i, x_j \right) = e^{-\left \| x_i - x_j \right \|^2 / \left( 2 \sigma^2 \right)}\),其中\(\sigma\)的作用与\(\epsilon\)近邻图中的\(\epsilon\)相似。
- \(\epsilon\)近邻图:将小于\(\epsilon\)的点连接起来。两点间权值可以取为距离的倒数。\(\epsilon\)可以选为图G的权值的均值或者tuG的最小生成树的最大边。
- k近邻图:在相似度图中,若\(v_i\)是\(v_j\)的k近邻,但\(v_j\)有可能不是\(v_i\)的k近邻。为了最后转换为无向图,因此可以(1)忽略边的方向性,只要满足k近邻就连接起来,称为k近邻图(2)满足两者互为k近邻才连接,称为互k近邻图。 这里有个例子: 由上述例子,可以看出: >①全连接图:使用高斯相似度函数建立权值矩阵,但是建立的矩阵不是稀疏的。 ②\(\epsilon\)近邻图:\(\epsilon = 0.3\),月牙部分联系非常紧密,但是高斯部分很多都没连接。当数据有不同密度时,容易发生这种问题。 ③k近邻图:可以解决数据存在不同密度时有些无法连接的问题,低密度的高斯部分和高密度的月牙部分也能够连接。同时,虽然两个月牙部分的距离比较近,但k近邻还可以把它们分开。 ④互k近邻图:它趋向于连接相同密度部分,而不是连接不同密度部分。性质介于k近邻图和\(\epsilon\)图之间。如果需要聚类有不同的密度。这种性质非常有效。 常常首先尝试k近邻图。
1.3非正则化拉普拉斯矩阵
拉普拉斯矩阵定义:\(L = D - W\),D是度矩阵(对称阵),W是权重矩阵(对称阵)。
关于非正则化拉普拉斯矩阵一些性质如下:
对于任意向量\(f \in \mathbb{R}^n\),满足:\(f'Lf = \frac{1}{2} \sum_{i,j=1}^n w_{ij}(f_i - f_j)^2\)
\({f}'Lf={f}'Df-{f}'Wf\)
\(~~~~~~~=\sum_{i=1}^n{d_i f_i^2}-\sum_{i,j=1}^n{f_i f_j w_{ij}}\)
\(~~~~~~~=\frac{1}{2} \left( \sum_{i=1}^n {d_i f_i^2}- 2\sum_{i,j=1}^n{f_i f_j w_{ij} + \sum_{j=1}^n {d_j f_j^2}}\right)\)
\(~~~~~~~=\frac{1}{2} \sum_{i,j=1}^n {w_{ij}\left( f_i - f_j \right)^2}\)矩阵L是对称半正定矩阵
矩阵L的最小特征值是0,与之相对应的特征向量是\( \mathbb{1}\)
观察\(\frac{1}{2} \sum_{i,j=1}^n {w_{ij}\left( f_i - f_j \right)^2}\)式子,当\(f_i = f_j\)时,\({f}'Lf=0\)因此假设f为常数向量\(\mathbb{1}\)时,我们有可以推出L的有特征值是0,且与之相对应的特征向量是\( \mathbb{1}\)。结合半正定矩阵性质,可知0为L的最小特征值。
矩阵L有n个非负实特征值\(0 = \lambda_1 \leqslant \lambda_2 \leqslant \cdots \leqslant \lambda_n\)
定理:令G是权值非负的无向图,拉普拉斯矩阵L的特征值0的重数k等于图G的连通分量数。记G的连通分量为\(A_1,A_2,\cdots,A_k\),则特征值0的特征向量由\(\mathbb{1}_{A_{1}},\cdots,\mathbb{1}_{A_{k}}\)指示向量确定。
当k=1时,特征值为0的个数只有一个。由定理的结论可知,此时的图是全连接的。假设此时特征值0所对应的特征向量表示为f,则有:
\(0 = f'Lf = \frac{1}{2} \sum_{i,j=1}^n w_{ij}(f_i - f_j)^2\)
由于全连接图的所有w都大于0,则由f_i=f_j,所以特征向量为常数向量1。
当有k个连通分量的情况时,则权值矩阵W应当是以下形式:
\[
L = (
\begin{matrix}
L_1 & & & \\
& L_2 & & \\
& & \ddots & \\
& & & L_k
\end{matrix})
\]
L_i的内部w_ij不为0,L_i和L_j之间是为0的。针对每个L_i,特征值为0的个数是只有1个。可知此时的特征向量为常数向量1。而针对拉普拉斯矩阵L,L的特征向量就是L_i的特征向量+其他方块位置补0得到的。所以定理得证。
1.4正则化拉普拉斯矩阵
正则化拉普拉斯矩阵常见有以下两种形式:
sysmmetric:\(L_{sym}:=D^{-1/2}LD^{-1/2}=I-D^{-1/2}WD^{-1/2}\)
Random walk:\(L_rw:=D^{-1}L=I-D^{-1}W\)
关于正则化拉普拉斯矩阵性质如下:
- \(\left( \lambda, \mu \right)\)是\(L_{rw}\)的特征值和特征向量,当且仅当\(\left( \lambda, D^{1/2}\mu\right)\)是\(L_{sym}\)的特征值和特征向量。
- \(\left(0,\mathbb{1} \right)\)是\(L_{rw}\)的特征值和特征向量,\(\left( 0, D^{1/2}I\right)\)是\(L_{sym}\)的特征值和特征向量。
- \(L_{sym}\)和\(L_{rw}\)是半正定的,有n个非负实特征值。\(f'L_{sym}f = \frac{1}{2} \sum_{i,j=1}^n w_{ij}(\frac{f_i}{\sqrt{d_i}} - \frac{f_j}{\sqrt{d_j}})^2,f \in \mathbb{R}^n\)
- 定理:令G是权值非负的无向图,正则拉普拉斯矩阵\(L_{sym}\)和\(L_{rw}\)的特征值0的重数k等于图G的连通分量数。记G得连通分量为\(A_1,A_2,\cdots,A_k\),则特征值0的特征向量由下列指示向量确定。 \(L_{rw}\) \(\mathbb{1}_{A_1},\cdots,\mathbb{1}_{A_k}\) \(L_{sym}\) \(D^{-1/2}\mathbb{1}_{A_1},\cdots,D^{1/2}\mathbb{1}_{A_k}\)
2.谱聚类算法
2.1非正则化谱聚类算法流程
输入:相似度矩阵\(S \in \mathbb{R}^{n*n}\),有k个簇。
构建相似度图G,W为权重矩阵。
计算非正则化拉普拉斯矩阵L
计算矩阵L的按照特征值从小到大顺序排列所对应的k个特征向量
将这k个特征列向量构成矩阵\(U \in \mathbb{R}^{n*k}\)
令矩阵U的第i列为\(y_i \in \mathbb{R}^k\),一共有n个。
对这个n个点进行k-means聚类,形成簇\(C_i\)
2.2正则化谱聚类算法流程(随机游走拉普拉斯矩阵)
输入:相似度矩阵\(S \in \mathbb{R}^{n*n}\),有k个簇。
构建相似度图G,W为权重矩阵。
计算非正则化拉普拉斯矩阵L
计算矩阵L的特征值(\(L\mu = \lambda D \mu\)),按照特征值从小到大顺序排列,得到特征值所对应的k个特征向量
将这k个特征列向量构成矩阵\(U \in \mathbb{R}^{n*k}\)
令矩阵U的第i列为\(y_i \in \mathbb{R}^k\),一共有n个。
对这个n个点进行k-means聚类,形成簇\(C_i\)
2.3正则化谱聚类算法流程(对称拉普拉斯矩阵)
输入:相似度矩阵\(S \in \mathbb{R}^{n*n}\),有k个簇。
构建相似度图G,W为权重矩阵。
计算非正则化拉普拉斯矩阵L
计算矩阵L的按照特征值从小到大顺序排列所对应的k个特征向量
将这k个特征列向量构成矩阵\(U \in \mathbb{R}^{n*k}\)
归一化矩阵U的每一行,得到矩阵\(T \in \mathbb{R}^{n*k}\),其中\(t_{ij} = \mu_{ij} / \left( \sum_k{\mu_{ik}^2} \right)^{1/2}\)
令矩阵U的第i列为\(y_i \in \mathbb{R}^k\),一共有n个。
对这个n个点进行k-means聚类,形成簇\(C_i\)
3种算法,首选随机游走的拉普拉斯矩阵对应的算法。同时,我们可以看出谱聚类算法往往是一个升为的过程,将数据从之前的维度,一直升到k维(k就是簇的个数)。
3. 简单解释谱聚类
3.1目标函数的确立:
聚类是根据数据点的相似度不同来划分的,有两点需要保证:①组间的边的权重最小化,组间的数据相似度要低②组内的边的权重最大化,组内的数据相似度要高。
当我们给定一个权重矩阵W的时候,针对图的划分,我们需要定义一个最小化切割问题,写成表达式的形式即为:
\[cut \left( A_1,A_2,\cdots,A_k\right):= \frac{1}{2} \sum_{i=1}^{k}{W\left( A_i,\bar{A}_i\right)}\]
在实际操作时,仅有上述的目标函数是不够的,因为min(cut),往往会将图分成1个点,和其余n-1个点。所以目标函数应该要求\(A_i,\cdots,A_k\)足够大才行。针对这个问题,修正后的目标函数为:RatioCut以及Ncut。
\[RatioCut(A_1,...,A_k) := \frac{1}{2} \sum_{i=1}^{k}\frac{W(A_i,\bar A_i)}{\left |A_i \right |}=\sum_{i=1}^{k}\frac{cut(A_i,\bar A_i)}{\left | A_i \right |} \]
\[Ncut(A_1,...,A_k) := \frac{1}{2} \sum_{i=1}^{k}\frac{W(A_i,\bar A_i)}{vol(A_i)}=\sum_{i=1}^{k}\frac{cut(A_i,\bar A_i)}{vol(A_i)}\]
其中\(\left | A_i \right |\)表示\(A_i\)的顶点个数,\(vol \left( A_i \right)\)表示\(A_i\)的所有边的权值和。可以看到上述式子中的\(\sum_{i=1}^{k}{\frac{1}{ \left | A_i\right |}}\)以及\(\sum_{i=1}^{k}{\frac{1}{ vol \left( A_i \right) }}\)指出在所有顶点被平均分到每个图时以及所有\(vol \left( A_i \right)\)相等时达到最小值。这样才能使得整个簇比较平均,不会出现1个点和n-1个点这种极端的划分。
3.2RatioCut的推导:
RatioCut推导就是非正则化谱聚类算法,Ncut是正则化谱聚类算法。下面谈谈RatioCut的推导过程。
首先我们看看k=2的情况,目标函数为\(\operatorname*{min}_{A \subset V} RatioCut(A,\bar A)\)。
此时,定义向量\(f = (f_1,...,f_n)^T \in \mathbb{R}^n\),
\[
f_i = \begin{cases}
{\sqrt{|\bar A|/|A|},if~v_i \in A}\\
{-\sqrt{|A|/|\bar A|},if~v_i \in \bar A}
\end{cases}
\]
则此时RatioCut和拉普拉斯矩阵的关系为:
\[\begin{eqnarray}
f'Lf &= &\frac{1}{2} \sum_{i,j=1}^n w_{ij}(f_i - f_j)^2 \nonumber\\
&=&\frac{1}{2}\sum_{i\in A,j\in \bar A}w_{ij}(\sqrt{\frac{\left| \bar A \right| }{\left |A \right |}}+\sqrt{\frac{\left| A \right |}{\left | \bar A \right |}})^2+\frac{1}{2}\sum_{i\in \bar A,j\in A}w_{ij}(-\sqrt{\frac{\left| \bar A \right |}{\left| A \right |}}-\sqrt{\frac{\left| A \right |}{\left| \bar A \right |}})^2 \nonumber\\
&=&cut(A,\bar A)(\frac{\left| \bar A \right |}{\left| A \right |}+\frac{\left| A \right |}{\left| \bar A \right |}+2) \nonumber\\
&=&cut(A,\bar A)(\frac{\left| \bar A \right |+\left| A \right |}{\left| A \right |}+\frac{\left| A \right |+\left| \bar A \right |}{\left| \bar A \right |}) \nonumber\\
&=&\left| V \right |\cdot RatioCut(A,\bar A).
\end{eqnarray}\]
同时f的约束条件为:
\(\sum_{i=1}^nf_i = \sum_{i \in A}\sqrt{\frac{|\bar A|}{| A|}} - \sum_{i \in \bar A}\sqrt{\frac{|A|}{|\bar A|}} = | A|\sqrt{\frac{|\bar A|}{| A|}}-|\bar A|\sqrt{\frac{|A|}{|\bar A|}} =0.\)
\(||f||^2 = \sum_{i =1}^n f_i^2 = |A|\frac{|\bar A|}{|A|} +|\bar A|\frac{| A|}{|\bar A|} = |\bar A| + |A| =n.\)
因此现在的问题转变为:
\[
\operatorname*{min}_{A \in V} f'Lf \\
s.t. f_i,且f\bot \mathbb{1},\left \| f \right \|=\sqrt{n}
\]
由于f是离散的,只能取2个值,因此该划分选择是指数级选择,为了解决这个问题,我们可以将f的取值从离散化拓展到整个实数集。那么此时,这个问题则是一个线性代数问题,找到一个和1向量正交的f,f的模为n0.5,使得f‘Lf最小。
由Rayleigh-Ritz定理,该目标函数的解为矩阵L的次小特征向量。
当分为k个子图时的RatioCut:
同样的,这里我们定义k个指示向量\(h_j=(h_{1,j},...,h_{n,j})'\)
\[
h_{i,j} = \begin{cases}
1/\sqrt{\left | A_j \right |}, if ~~\nu_i \in A_j \\
0,~~otherwise
\end{cases}
\]
利用k个特征向量构成矩阵\(H \in \mathbb{R}^{n*k}\),发现H每一列向量相互正交,有\(H'H=I\),则可以得到\(h_i'Lh_i = \frac{cut(A_i,\bar A_i)}{\left | A_i \right |}.\),同时有\(h_i'Lh_i = (H'LH)_{ii}\),最终可得:\(RatioCut(A_1,...,A_k) = \sum_{i =1}^n h_i'Lh_i = \sum_{i =1}^n (H'LH)_{ii} = Tr(H'LH).\)
最后relaxation之后,原问题为:
\[
\operatorname*{min}_{H \in \mathbb{R}^{n \times k}} Tr(H'LH) \\
s.t. ~H'H =I
\]
根据Rayleigh-Ritz定理,该目标函数的解矩阵H即为矩阵L的从小到大排序的前k个特征向量。次时的矩阵H即为非正则化谱聚类算法流程中的矩阵U。
4.谱聚类python实现
code here
参考文献:
1. A tutorial on spectral clustering,Ulrike von Luxburg, 2007
2. 3月机器学习班ppt,第7章聚类。
3. https://www.zybuluo.com/frank-shaw/note/117235