22 谱聚类 Spectral Clustering

1 Background

本章节主要是描述的一种聚类算法,谱聚类(Spectral Clustering)。对机器学习有点了解的同学对聚类算法肯定是很熟悉的,那么谱聚类和之前普通的聚类算法有什么不一样呢?或者说它有什么优势呢?

1.1 聚合型聚类(Compactness)

常见的聚类方法有两种思路,一种就是聚合型聚类(Compactness)。典型的算法有K-means 和Gaussian Mixture Model 这种。GMM 我们在前面的章节中有详细的描述,GMM Clustering 的思想可以这样来表述。我们首先看到GMM 的概率图模型,如下所示:
在这里插入图片描述
GMM 从几何角度来看,就是也就是多个高斯分布来取加权平均值。我们想将样本分成多少类,那么 Z Z Z 就有多少种可能,假设我们需要将其分成N 类。那么Z 是一个离散变量, Z ∈ 1 , 2 , 3 , ⋅ ⋅ ⋅ , N Z ∈ {1, 2, 3, · · · ,N} Z1,2,3,,N,当 Z Z Z 取每次取不同的值时都对应着一个不同的高斯分布,公式化表达为: P ( x ∣ z ) ∼ N ( μ , σ 2 ) P(x|z) ∼ N(μ, σ2) P(xz)N(μ,σ2)。那么对于一个样本,我们可以计算出它属于每一个类别的不同的概率,从中选取概率最大的即可。GMM 举例如下图所示:在这里插入图片描述
GMM 相关的具体知识,包括GMM 的定义和EM 算法进行求解等,请阅读小编之前写的“白板推导高斯混合模型”。很明显,我们看到GMM 的边界轮廓都是圆的,学术的讲就是“凸”(Convex)的。这样的考虑忽略了数据之间的结构关系,主要考虑的是特征之间的相似度,而且是一种中心的距离方式。而这时候我们需要引出另一种聚类算法的思路了,连通性(Connectivity)

1.2 连通性聚类(Connectivity)

连通性聚类(Connectivity) 算法的典型代表就是谱聚类(Spectral Clustering)。比如,下面的数据分布,很显然用Spectral Clustering 的方法来聚类成如下的形式更加的合理。如下图所示。很显然这是一个non-convex 的聚类方式,更加注重的是数据分布之间的连通性,并且利用图结构考虑到了数据内部的结构性特点,目标是使不同的类别数据点分的越开越好,至于为什么?请接着往下看SpectralClustering 的模型描述。
在这里插入图片描述

1.3 小结

聚合型聚类(Compactness) 和连通性聚类(Connectivity) 方法各有千秋。对于“凸”型形状,聚合型聚类(Compactness) 更好一些,主要考虑的是特征之间的相似度。在复杂情况下,结合Kernel 的做法可以简化计算,这个在“核技巧”那章有详细的说明。而连通性聚类(Connectivity) 方法,主要考虑的是数据的结构上的特点,适合随意的形状。

2 Spectral Clustering 的模型表示

2.1 Spectral Clustering 参数说明

Spectral Clustering 的模型表示实现手段上是使用基于无向带权图的思想。我们将所有的数据样本都分别当成无向图中的一个节点,我们假设概率图模型为:
G = { V , E } G=\{V, E\} G={V,E}
V = { 1 , 2 , 3 , ⋯   , N } : V=\{1,2,3, \cdots, N\}: V={1,2,3,,N}: 无向图中每一个节点代表一个数据样本,图中有 N N N 个节点,代表有 N N N 个 样本。 X = [ x 1 , x 2 , ⋯   , x N ] T = [ x 1 T x 2 T ⋮ x N T ] N × p : X=\left[x_{1}, x_{2}, \cdots, x_{N}\right]^{T}=\left[\begin{array}{c}x_{1}^{T} \\ x_{2}^{T} \\ \vdots \\ x_{N}^{T}\end{array}\right]_{N \times p}: X=[x1,x2,,xN]T=x1Tx2TxNTN×p: 代表有 N N N 个样本,每个样本都是 p p p 维的。而 V V V 中的 i i i
对应着 x i , x_{i}, xi, 表示第 i i i 个样本。
E : [ w i j ] n × n : E:\left[w_{i j}\right]_{n \times n}: E:[wij]n×n: 这个被称为相似度矩阵,也就是用来表示样本与样本之间的权重。只有点与点之间 存在边,才有权重,否则为 0。比如如下图所示的一个概率图结构:
在这里插入图片描述
其中:
w i j = { k ( x i , x j ) = exp ⁡ { − ∥ x i − x j ∥ 12 2 2 σ 2 } ( i , j ) ∈ E 0 ( i , j ) ≠ E w_{i j}=\left\{\begin{array}{ll} k\left(x_{i}, x_{j}\right)=\exp \left\{-\frac{\left\|x_{i}-x_{j}\right\|_{12}^{2}}{2 \sigma^{2}}\right\} & (i, j) \in E \\ 0 & (i, j) \neq E \end{array}\right. wij={k(xi,xj)=exp{2σ2xixj122}0(i,j)E(i,j)=E
其实在概率图中体现就是,有连接的地方就有权重,没有连接的地方就没有权重。所以,这样就可以反映数据的条件独立性和结构特点,只有某些点之间才有联系,而不是像 GMM 那样,默认所有点之 间都有联系。

2.2 Spectral Clustering 优化目标

定义: A ⊂ V , B ⊂ V , A ∩ B = ∅ , W ( A , B ) = ∑ i ∈ A ∑ j ∈ B w i j A \subset V, B \subset V, A \cap B=\varnothing, W(A, B)=\sum_{i \in A} \sum_{j \in B} w_{i j} AV,BV,AB=,W(A,B)=iAjBwij 。这个公式描述的是将节点分成两份,每个节点都只能属于其中一类,他们之间的距离定义为,一个集合中的每一个节点,分别到另 一个集合中的所有节点的相似度的和。 如果,想将节点分解成 k k k 类,那么公式化描述如下所示:
cut ⁡ ( V ) = cut ⁡ ( A 1 , A 2 , ⋯   , A k ) { V = ⋃ i = 1 k A i A i ∩ A j = ∅ , ∀ i , j ∈ { 1 , 2 , ⋯   , k } \begin{array}{l} \operatorname{cut}(V)=\operatorname{cut}\left(A_{1}, A_{2}, \cdots, A_{k}\right) \\ \\ \left\{\begin{array}{l} V=\bigcup_{i=1}^{k} A_{i} \\ \\ A_{i} \cap A_{j}=\varnothing, \forall i, j \in\{1,2, \cdots, k\} \end{array}\right. \end{array} cut(V)=cut(A1,A2,,Ak)V=i=1kAiAiAj=,i,j{1,2,,k}
并且令:
cut ⁡ ( V ) = ∑ i = 1 k W ( A i , A ˉ i ) = ∑ i = 1 k ∑ p ∈ A i ∑ q ∉ A i w p q \operatorname{cut}(V)=\sum_{i=1}^{k} W\left(A_{i}, \bar{A}_{i}\right)=\sum_{i=1}^{k} \sum_{p \in A_{i}} \sum_{q \notin A_{i}} w_{p q} cut(V)=i=1kW(Ai,Aˉi)=i=1kpAiq/Aiwpq
其中, A ˉ i \bar{A}_{i} Aˉi表示出了 A i A_{i} Ai 以外的所有子集构成的集合。那么这个公式的意思就是,每个集合中的所有点,分别到其他集合中的所有点的相似度的和。那么我们的目标函数,首先可以定义为最小化这个cut 函数。因为该值与聚类的目标一致,即每个子图内部的连接很强,而子图之间的连接很弱,换一种语言来表述就是同一个子图内的样本相似,不同子图之间的样本不相似。即为:
min ⁡ { A i } i = 1 k cut ⁡ ( V ) \min _{\left\{A_{i}\right\}_{i=1}^{k} \operatorname{cut}(V)} {Ai}i=1kcut(V)min
其实,也就是要将 V 划分 k k k 类,使得 cut 函数值最小,实际上就是一个组合优化问题。

2.3 Spectral Clustering 优化目标改进

但是,我们观察上述的式子,实际上是有不妥的地方的。比如,图四中,有一类为2 个节点,另
一类为4 个节点。但直接通过最小化这个值实现聚类还有问题,它没有考虑子图规模对代价函数的影响,使得这个指标最小的切分方案不一定就是最优切割。因此需要对代价函数进行归一化
第一种最简单的思路,既然我们需要考虑子图的规模,就是除以集合中点的个数,即为:
cut ⁡ ( V ) = ∑ i = 1 k W ( A i , A ˉ i ) ∣ A k ∣ \operatorname{cut}(V)=\frac{\sum_{i=1}^{k} W\left(A_{i}, \bar{A}_{i}\right)}{\left|A_{k}\right|} cut(V)=Aki=1kW(Ai,Aˉi)
但是,这样做仍然不妥,因为这样即使考虑了集合中点的个数。子图的复杂度还需要考虑子图中节点的连接情况,而不是仅仅考虑子图的个数即可。考虑子图中的连接也侧面包含了子图的节点个数所带来的复杂度。为了量化连接情况,这里引入一个概念为“度”:这是离散数学中的定义,有向图中分“出度”和“入度”,其实很简单“出度”就是这个节点指向了几个节点,“入度”就是有几个节点指向这个节点。无向图中我们只用度的概念。
而在带权无向图中,一个节点的度即为与这个节点连接的所有的边的权重和。利用度作为归一化因子就比较全面的考虑了子图的复杂度了。
degree ⁡ ( A k ) = ∑ i ∈ A k d i , d i = ∑ j = 1 N w i j \operatorname{degree}\left(\mathrm{A}_{\mathrm{k}}\right)=\sum_{i \in A_{k}} d_{i}, \quad d_{i}=\sum_{j=1}^{N} w_{i j} degree(Ak)=iAkdi,di=j=1Nwij
那么就得到了,最终的优化目惊为:
min ⁡ { A i } i = 1 k Ncut ⁡ ( V ) = ∑ i = 1 k W ( A i , A ˉ i ) ∑ i ∈ A k d i , d i = ∑ j = 1 N w i j \min _{\left\{A_{i}\right\}_{i=1}^{k}} \operatorname{Ncut}(V)=\frac{\sum_{i=1}^{k} W\left(A_{i}, \bar{A}_{i}\right)}{\sum_{i \in A_{k}} d_{i}}, \quad d_{i}=\sum_{j=1}^{N} w_{i j} {Ai}i=1kminNcut(V)=iAkdii=1kW(Ai,Aˉi),di=j=1Nwij

2.4 小结

本小节我们定义了谱聚类的目标函数,该函数值反映的聚类的目标为,同一个子图内的样本相似,不同子图之间的样本不相似。因为需要考虑子图的复杂度,我们对目标函数进行了优化。考虑子图中的连接情况,用“度”的概念来定义子图的复杂度。从而通过引入“度”来表示对子图复杂度的影响,来优化目标函数。

3 目标函数的矩阵表达形式

通过上一小节,我们得到了算法的目标函数为:
{ A ^ k } k = 1 K = arg ⁡ min ⁡ { A i } i = 1 k ∑ i = 1 k W ( A i , A ˉ i ) ∑ i ∈ A k ∑ j = 1 N w i j \left\{\hat{A}_{k}\right\}_{k=1}^{K}=\arg \min _{\left\{A_{i}\right\}_{i=1}^{k}} \frac{\sum_{i=1}^{k} W\left(A_{i}, \bar{A}_{i}\right)}{\sum_{i \in A_{k}} \sum_{j=1}^{N} w_{i j}} {A^k}k=1K=arg{Ai}i=1kminiAkj=1Nwiji=1kW(Ai,Aˉi)
因为求解的过程中,连加符号并不方便进行各种运算操作。所以,我们要把目标函数转换为矩阵形式,从而方便计算。首先,这个 { A ^ k } k = 1 K \left\{\hat{A}_{k}\right\}_{k=1}^{K} {A^k}k=1K,表示的是将所有的点进行划分后的结果。看着就不好进行运算,所以第一步想办法把这个变成矩阵化表示。

3.1 指示向量(Indicator vector)

令:
{ y i ∈ { 0 , 1 } k ∑ j = 1 k y i j = 1 \left\{\begin{array}{l} y_{i} \in\{0,1\}^{k} \\ \sum_{j=1}^{k} y_{i j}=1 \end{array}\right. {yi{0,1}kj=1kyij=1
这个公式想要表达的意思为, y i y_{i} yi 是一个 k k k 维向量,每一个维度的值要么是 0 , 0, 0, 要么是 1 ∘ y i j = 1 1_{\circ} y_{i j}=1 1yij=1 表示第
i i i 个样本属于第 j j j 个类别,而每个样本只能属于一个类别,所ル ∑ j = 1 k y i j = 1 , 1 ≤ i ≤ N , 1 ≤ j ≤ K \sum_{j=1}^{k} y_{i j}=1,1 \leq i \leq N, 1 \leq j \leq K j=1kyij=1,1iN,1jK 那么使用 Indicator vector 后,目标函数为:
Y = ( y 1 , y 2 , ⋯   , y N ) N × K T Y ^ = arg ⁡ min ⁡ Y ∑ k = 1 K W ( A k , A ˉ k ) ∑ i ∈ A k ∑ j = 1 N w i j \begin{array}{c} Y=\left(y_{1}, y_{2}, \cdots, y_{N}\right)_{N \times K}^{T} \\ \hat{Y}=\arg \min _{Y} \sum_{k=1}^{K} \frac{W\left(A_{k}, \bar{A}_{k}\right)}{\sum_{i \in A_{k}} \sum_{j=1}^{N} w_{i j}} \end{array} Y=(y1,y2,,yN)N×KTY^=argminYk=1KiAkj=1NwijW(Ak,Aˉk)
利用指示函数将 { A ^ k } k = 1 K \left\{\hat{A}_{k}\right\}_{k=1}^{K} {A^k}k=1K 变成矩阵以后,下一步目标就是将后面那一坨改写成矩阵形式。

3.2 对角矩阵

在使用只是向量后,我们成功的将目标函数化简成了:
Y = ( y 1 , y 2 , ⋯   , y N ) N × K T Y ^ = arg ⁡ min ⁡ Y ∑ k = 1 K W ( A k , A ˉ k ) ∑ i ∈ A k d i , d i = ∑ j = 1 N w i j \begin{array}{l} Y=\left(y_{1}, y_{2}, \cdots, y_{N}\right)_{N \times K}^{T} \\ \\ \hat{Y}=\arg \min _{Y} \sum_{k=1}^{K} \frac{W\left(A_{k}, \bar{A}_{k}\right)}{\sum_{i \in A_{k}} d_{i}}, \quad d_{i}=\sum_{j=1}^{N} w_{i j} \end{array} Y=(y1,y2,,yN)N×KTY^=argminYk=1KiAkdiW(Ak,Aˉk),di=j=1Nwij
我们的下一步目标就是想想如何将 ∑ k = 1 K W ( A k , A ˉ k ) ∑ i ∈ A k d i \sum_{k=1}^{K} \frac{W\left(A_{k}, \bar{A}_{k}\right)}{\sum_{i \in A_{k}} d_{i}} k=1KiAkdiW(Ak,Aˉk)表达成矩阵形式。细心的同学发现,这实际上就是一个实数。而求和符号可以被我们写做对角矩阵的trace;所以有:
在这里插入图片描述
首先来看看如何表示 P 矩阵。 ∑ i ∈ A k d i \sum_{i \in A_{k}} d_{i} iAkdi 代表的是,第 k k k 类集合中,所有的节点的度的和。而无向图中的度就是一个节点与其他 所有节点所连接的边的权重之和。而 W = [ w i j ] n × n =\left[w_{i j}\right]_{n \times n} =[wij]n×n 矩阵中 w i j w_{i j} wij 代表第 i i i 个节点与第 j j j 个节点的权值 所以 W 矩阵,第 i 衍的所有值的利正纤就是第 i i i 个节点与其他所有节点違接的边前权科之利。 所以,计算方法就是将 W 矩阵,每一行的所有值都相加。度的对角矩阵可以描述为:
D = diag ⁡ [ W [ 1 1 ⋮ 1 ] N × 1 ] = [ d 1 d 2 ⋱ d N ] D=\operatorname{diag}\left[W\left[\begin{array}{c} 1 \\ 1 \\ \vdots \\ 1 \end{array}\right]_{N \times 1}\right]=\left[\begin{array}{cccc} d_{1} & & & \\ & d_{2} & & \\ & & \ddots & \\ & & & d_{N} \end{array}\right] D=diagW111N×1=d1d2dN
那么,下一步目标就是将这些度分别按划分的类别进行求和,也就是比如 A 1 = { 1 , 2 , 5 } , A_{1}=\{1,2,5\}, A1={1,2,5}, 那么就 要把第 1,2,5 三个节点的度加在一起。那么,应该如何去实现呢?
Y Y Y 矩阵是 N × K N \times K N×K 维的,行代表节点标号,列代表属于的类别。那么, y i j = 1 y_{i j}=1 yij=1 表示第 i i i 个样本属 于第 j 个类别。那么,我们从 Y Y Y 中取出第 i i i 行向量 ( 1 × K ) (1 \times K) (1×K) 来, 那么通过这一行向量,根据第几列的 值等于 1,我们可以看出这个样本属于第几类。假设这个行向量第 j 列等于 0; 那么 y i T y i y_{i}^{T} y_{i} yiTyi 结果为:
y i T y i = [ 0 0 ⋯ y i j = 1 ⋯ 0 ] [ 0 ⋯ y i j = 1 ⋯ 0 ] = [ 0 ⋯ 0 ⋯ 0 ⋮ ⋱ ⋮ ⋱ ⋮ 0 ⋯ y j j = 1 ⋯ 0 ⋮ ⋱ ⋮ ⋱ ⋮ 0 ⋯ 0 ⋯ 0 ] y_{i}^{T} y_{i}=\left[\begin{array}{c} 0 \\ 0 \\ \cdots \\ y_{i j}=1 \\ \cdots \\ 0 \end{array}\right]\left[\begin{array}{ccccc} 0 & \cdots & y_{i j}=1 & \cdots & 0 \end{array}\right]=\left[\begin{array}{ccccc} 0 & \cdots & 0 & \cdots & 0 \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ 0 & \cdots & y_{j j}=1 & \cdots & 0 \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ 0 & \cdots & 0 & \cdots & 0 \end{array}\right] yiTyi=00yij=10[0yij=10]=0000yjj=10000
那么,很显然 y i T D y i y_{i}^{T} D y_{i} yiTDyi 求得的是一个 K × K K \times K K×K 的矩阵,而这个矩阵中只有一个元素不为零,其他的 元素都为零。如果 y i y_{i} yi 样本属于第 k k k 类, 那么这个元素的位置为第 k k k 行, 第 k k k 列,元素的值为 d i d_{i } di。 通过这样的运算,我们成功的实现了,如果第 i i i 个样本属于第 k k k 类,就将这个样本的度 d i , d_{i}, di, 放在了 K × K K \times K K×K的矩阵第 k k k 行,第 k k k 列的位置。而且这个矩阵一定是对角矩阵。
有 N 个样本就算有 N 个这样的矩阵,把这 N 个矩阵加起来就实现了将所有的 d i d_{i} di 按所属的类别求和的工作。也就是:
∑ i = 1 N y i T D y i = Y T D Y \sum_{i=1}^{N} y_{i}^{T} D y_{i}=Y^{T} D Y i=1NyiTDyi=YTDY
所以,我们就得到了用 Y 和 W 对 P 矩阵的进行表达的形式为:
P = Y T diag ⁡ ( W ⋅ 1 N ) Y P=Y^{T} \operatorname{diag}\left(W \cdot 1_{N}\right) Y P=YTdiag(W1N)Y
其中,1 N _{N} N 元素全为 1 的 N × 1 N \times 1 N×1 维向量。

3.3 拉普拉斯矩阵(Lapalacian Matrix)

成功将 P P P 表示以后,下一步目标则是想办法表示 O O O 矩阵。
[ W ( A 1 , A ˉ 1 ) 0 ⋯ 0 0 W ( A 2 , A ˉ 2 ) ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ W ( A K , A ˉ K ) ] K × K \left[\begin{array}{cccc} W\left(A_{1}, \bar{A}_{1}\right) & 0 & \cdots & 0 \\ 0 & W\left(A_{2}, \bar{A}_{2}\right) & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & W\left(A_{K}, \bar{A}_{K}\right) \end{array}\right]_{K \times K} W(A1,Aˉ1)000W(A2,Aˉ2)000W(AK,AˉK)K×K
A ˉ i \bar{A}_{i} Aˉi 代表的是,整个样本集中去除 A i A_{i} Ai 中的样本后的所有样本。那么,可以做下列变换:
W ( A k , A ˉ k ) = W ( A k , V ) − W ( A k , A k ) W\left(A_{k}, \bar{A}_{k}\right)=W\left(A_{k}, V\right)-W\left(A_{k}, A_{k}\right) W(Ak,Aˉk)=W(Ak,V)W(Ak,Ak)
根据 W(・) 函数的定义,W(A,B) 函数表示的是 A 中所有点分别到 B 中所有点的相似度的和,即 为:
W ( A i , A j ) = ∑ p ∈ A i , q ∉ A j w p q W\left(A_{i}, A_{j}\right)=\sum_{p \in A_{i}, q \notin A_{j}} w_{p q} W(Ai,Aj)=pAi,q/Ajwpq
所以, W ( A k , V ) = ∑ i ∈ A k d i , W ( A k , A k ) = ∑ i ∈ A k ∑ j ∉ A k w i j ∘ W\left(A_{k}, V\right)=\sum_{i \in A_{k}} d_{i}, W\left(A_{k}, A_{k}\right)=\sum_{i \in A_{k}} \sum_{j \notin A_{k}} w_{i j \circ} W(Ak,V)=iAkdi,W(Ak,Ak)=iAkj/Akwij W ( A k , V ) = ∑ i ∈ A k d i = Y T diag ⁡ ( W W\left(A_{k}, V\right)=\sum_{i \in A_{k}} d_{i}=Y^{T} \operatorname{diag}(W W(Ak,V)=iAkdi=YTdiag(W
1 N ) Y \left.1_{N}\right) Y 1N)Y 是已知的,下一步只要想办法表达 W ( A k , A k ) = ∑ i ∈ A k ∑ j ∉ A k w i j W\left(A_{k}, A_{k}\right)=\sum_{i \in A_{k}} \sum_{j \notin A_{k}} w_{i j} W(Ak,Ak)=iAkj/Akwij 即阿。我们的目标是求解同一个类别中,任意两个不同的样本之间的相似度。这其实和上一个求 P P P 的问题非常的类似,那么首先来看看 Y T W Y Y^{T} W Y YTWY 会等于什么,因为 Y = ( y 1 , y 2 , ⋯   , y N ) N × K T , Y=\left(y_{1}, y_{2}, \cdots, y_{N}\right)_{N \times K}^{T}, Y=(y1,y2,,yN)N×KT, 所以
Y T W Y = [ y 1 y 2 ⋯ y N ] [ w 11 w 12 ⋯ w 1 N w 21 w 22 ⋯ w 2 N ⋮ ⋮ ⋱ ⋮ w N 1 w N 2 ⋯ w N N ] [ y 1 T y 2 T ⋮ y N N T ] = [ ∑ i = 1 N y i w i 1 ⋯ ∑ i = 1 N y i w i N ] = ∑ j = 1 N ∑ i = 1 N y i w i j y j T \begin{aligned} Y^{T} W Y=\left[\begin{array}{llll} y_{1} & y_{2} & \cdots & y_{N} \end{array}\right]\left[\begin{array}{cccc} w_{11} & w_{12} & \cdots & w_{1 N} \\ w_{21} & w_{22} & \cdots & w_{2 N} \\ \vdots & \vdots & \ddots & \vdots \\ w_{N 1} & w_{N 2} & \cdots & w_{N N} \end{array}\right]\left[\begin{array}{c} y_{1}^{T} \\ y_{2}^{T} \\ \vdots \\ y_{N_{N}}^{T} \end{array}\right] \\ &=\left[\begin{array}{ccc} \sum_{i=1}^{N} y_{i} w_{i 1} & \cdots & \sum_{i=1}^{N} y_{i} w_{i N} \end{array}\right] \\ &=\sum_{j=1}^{N} \sum_{i=1}^{N} y_{i} w_{i j} y_{j}^{T} \end{aligned} YTWY=[y1y2yN]w11w21wN1w12w22wN2w1Nw2NwNNy1Ty2TyNNT=[i=1Nyiwi1i=1NyiwiN]=j=1Ni=1NyiwijyjT
有因为 w i j w_{i j} wij 是一个一维实数,所以. Y T W Y = ∑ j = 1 N ∑ i = 1 N y i w i j y j T = ∑ j = 1 N ∑ i = 1 N y i y j T w i j Y^{T} W Y=\sum_{j=1}^{N} \sum_{i=1}^{N} y_{i} w_{i j} y_{j}^{T}=\sum_{j=1}^{N} \sum_{i=1}^{N} y_{i} y_{j}^{T} w_{i j} YTWY=j=1Ni=1NyiwijyjT=j=1Ni=1NyiyjTwij 。那么,我们考虑一下 y i y j T y_{i} y_{j}^{T} yiyjT 等于什么。 y i y_{i} yi 表示的是一个样本属于第几类, 那么 y i ∈ A p , y i ∈ A q , y_{i} \in A_{p}, y_{i} \in A_{q}, yiAp,yiAq, y i y j T y_{i} y_{j}^{T} yiyjT 得到的矩阵中第 i 行,第 j 列的元 为 1,其余的全部为 0。所以:
Y T W Y = ∑ j = 1 N ∑ i = 1 N y i w i j y j T = [ ∑ i ∈ A 1 ∑ j ∈ A 1 w i j ∑ i ∈ A 1 ∑ j ∈ A 2 w i j ⋯ ∑ i ∈ A 1 ∑ j ∈ A k w i j ∑ i ∈ A 2 ∑ j ∈ A 1 w i j ∑ i ∈ A 2 ∑ j ∈ A 2 w i j ⋯ ∑ i ∈ A 2 ∑ j ∈ A b w i j ∑ i ∈ A k ∑ j ∈ A 1 w i j ⋮ ⋱ ⋮ ∑ i ∈ A k ∑ j ∈ A 2 w i j ⋯ ∑ i ∈ A k ∑ j ∈ A k w i j ] Y^{T} W Y=\sum_{j=1}^{N} \sum_{i=1}^{N} y_{i} w_{i j} y_{j}^{T}=\left[\begin{array}{cccc} \sum_{i \in A_{1}} \sum_{j \in A_{1}} w_{i j} & \sum_{i \in A_{1}} \sum_{j \in A_{2}} w_{i j} & \cdots & \sum_{i \in A_{1}} \sum_{j \in A_{k}} w_{i j} \\ \sum_{i \in A_{2}} \sum_{j \in A_{1}} w_{i j} & \sum_{i \in A_{2}} \sum_{j \in A_{2}} w_{i j} & \cdots & \sum_{i \in A_{2}} \sum_{j \in A_{b}} w_{i j} \\ \sum_{i \in A_{k}} \sum_{j \in A_{1}} w_{i j} & \vdots & \ddots & \vdots \\ & \sum_{i \in A_{k}} \sum_{j \in A_{2}} w_{i j} & \cdots & \sum_{i \in A_{k}} \sum_{j \in A_{k}} w_{i j} \end{array}\right] YTWY=j=1Ni=1NyiwijyjT=iA1jA1wijiA2jA1wijiAkjA1wijiA1jA2wijiA2jA2wijiAkjA2wijiA1jAkwijiA2jAbwijiAkjAkwij
而:

在这里插入图片描述
有的同学任然有疑惑,Y T W Y ^{T} W Y TWY 好像和我们想要的结果不太一样。但是,我们关注的是 trace,所以員要对角线上的元素是一样的就可以了。令 O ′ = Y T D Y − Y T W Y , O^{\prime}=Y^{T} D Y-Y^{T} W Y, O=YTDYYTWY, tr ⁡ ( O ′ P − 1 ) = tr ⁡ ( O P − 1 ) , \operatorname{tr}\left(O^{\prime} P^{-1}\right)=\operatorname{tr}\left(O P^{-1}\right), tr(OP1)=tr(OP1), 因为 O ′ O^{\prime} O和O 对角线上的元素都是一样的。所以,最终我们把Ncut 目标函数化简成了矩阵的表达形式为:
Y ^ = arg ⁡ min ⁡ Y tr ⁡ { Y T ( D − W ) Y ⋅ ( Y T D Y ) − 1 } , D = diag ⁡ ( W ⋅ 1 N ) \hat{Y}=\arg \min _{Y} \operatorname{tr}\left\{Y^{T}(D-W) Y \cdot\left(Y^{T} D Y\right)^{-1}\right\}, \quad D=\operatorname{diag}\left(W \cdot 1_{N}\right) Y^=argYmintr{YT(DW)Y(YTDY)1},D=diag(W1N)
其中 ( D − W ) (D − W) (DW) 被称为拉普拉斯矩阵(Lapalacian Matrix)。最终,我们成功的用已知的Y 和W来完成了对目标函数Ncut 的矩阵化。有关拉普拉斯矩阵的性质,后面会讲到,这是图中一个很重要的矩阵,感兴趣的同学也可以看看https://zhuanlan.zhihu.com/p/67336297,对拉普拉斯矩阵和拉普拉斯算子的详细介绍。

3.4 小结

这一小节中,我们主要的工作就是将目标函数“Ncut 函数”化简为矩阵形式。首先我们用指示向量来表示样本所属的类别。然后利用指示函数(Y ) 和相似度矩阵(W) 来对Ncut 函数进行表示。其实我觉得这里就可以看成是特征值分解后的结果。最终的变换结果和拉普拉斯矩阵有关系,有关拉普拉斯矩阵的详细内容有兴趣的同学可以自行查阅。

4 总结(Conclusion)

这节主要讲述的是谱聚类算法,首先讲述了两种不同的聚类思路,一种就是聚合型聚类(Compactness),另一种是连通性聚类(Connectivity) 算法。聚合性聚类更多的考虑是所有样本之间都是一视同仁的,根据特征的相似度来聚类。连通性聚类更多的考虑的是数据之间的分布结构,不同的数据之间可以有关系也可以没有关系,这样便于人们引入对数据的侧重点的分析,有点条件独立的意思在里面。而连通性聚类(Connectivity) 算法需要借助图结构来实现。我们介绍了谱聚类算法的目标函数,然后对目标函数进行了优化,为了计算的方便,又描述了目标函数的矩阵表达形式(在这个部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值