引言
上一节介绍了 k-Means \text{k-Means} k-Means算法。本节从 k-Means \text{k-Means} k-Means算法的缺陷出发,介绍谱聚类。
回顾: k-Means \text{k-Means} k-Means算法及其缺陷
k \text{k} k均值算法( k-Means \text{k-Means} k-Means)是一种处理聚类任务的非概率模型,它本质上属于高斯混合模型( Gaussian Mixture Model,GMM \text{Gaussian Mixture Model,GMM} Gaussian Mixture Model,GMM)思想的硬划分模型。它的策略(目标函数)可表示为如下形式:
{ E = ∑ k = 1 K ∑ x ∈ C k Dist ( x , μ k ) μ k = 1 ∣ C k ∣ ∑ x ∈ C k x \begin{cases} \mathbb E = \sum_{k=1}^{\mathcal K} \sum_{x \in C_k} \text{Dist}(x,\mu_k) \\ \mu_k = \frac{1}{|C_k|} \sum_{x \in C_k} x \end{cases} {
E=∑k=1K∑x∈CkDist(x,μk)μk=∣Ck∣1∑x∈Ckx
其中, K \mathcal K K表示样本聚类任务中簇的数量;针对簇集合 C = { C 1 , C 2 , ⋯ , C K } \mathcal C = \{C_1,C_2,\cdots,C_{\mathcal K}\} C={
C1,C2,⋯,CK}, ∣ C k ∣ |C_k| ∣Ck∣表示簇 C k C_k Ck中的样本数量;而 μ k \mu_k μk表示簇 C k C_k Ck的均值向量; Dist ( x , μ k ) \text{Dist}(x,\mu_k) Dist(x,μk)则表示簇 C k C_k Ck中某样本 x x x到均值向量的距离信息。
在 k-Means \text{k-Means} k-Means中,使用距离信息 Dist ( x , μ k ) \text{Dist}(x,\mu_k) Dist(x,μk)描述样本点 x x x与簇 C k C_k Ck之间的紧密程度。关于 k-Means \text{k-Means} k-Means算法的迭代过程,主要包含如下两个部分:
- 基于给定的聚类中心 μ = { μ 1 , μ 2 , ⋯ , μ K } \mu = \{\mu_1,\mu_2,\cdots,\mu_{\mathcal K}\} μ={ μ1,μ2,⋯,μK},对样本点进行聚类划分;
- 给定样本点聚类划分的条件下,重新计算聚类中心,并替代掉迭代前的中心结果;
直到聚类中心结果不再发生变化,即可停止算法。而各簇的聚类中心 μ k ( k = 1 , 2 , ⋯ , K ) \mu_k(k=1,2,\cdots,\mathcal K) μk(k=1,2,⋯,K)采用各维度求解均值的方式进行计算。从高斯混合模型的角度思考,均值意味着对应高斯分布的位置,也就是以 μ k \mu_k μk为中心向外扩散的高斯分布:
这里使用上一节的示例进行描述
传送门
而 k-Means \text{k-Means} k-Means算法的缺陷在于:仅针对样本分布紧密的凸( Convex \text{Convex} Convex)结构聚类形状可能有效,而针对连通型( Connectivity \text{Connectivity} Connectivity)的簇分布效果欠佳。即便使用核方法( Kernel Method \text{Kernel Method} Kernel Method)对样本特征提高维度,但这种方式依然存在一些缺陷。
依然以 sklearn \text{sklearn} sklearn中的 make_circles \text{make\_circles} make_circles样本分布为例:
blobs = datasets.make_circles(n_samples=n_samples, factor=0.5, noise=0.05)
不可否认,确实可以通过核函数提高维度 来实现聚类效果:
但 k-Means \text{k-Means} k-Means各聚类中心 μ \mu μ对应的作用空间可能是这个样子的:
这里只是效果图。
可以看出, make_circles \text{make\_circles} make_circles中的分布样本只不过是 k-Means \text{k-Means} k-Means作用空间分布中的一部分样本点,它并没有将 make_circles \text{make\_circles} make_circles样本中的连通性学习出来。
谱聚类
场景构建
由于处理的是无监督的聚类任务,因此数据集合仅包含样本特征 X \mathcal X X:
X = ( x ( 1 ) , x ( 2 ) , ⋯ , x ( N ) ) N × p T x ( i ) ∈ R p ; i = 1 , 2 , ⋯ , N \mathcal X = \left(x^{(1)},x^{(2)},\cdots,x^{(N)}\right)_{N \times p}^T \quad x^{(i)} \in \mathbb R^p;i=1,2,\cdots,N X=(x(1),x(2),⋯,x(N))N×pTx(i)∈Rp;i=1,2,⋯,N
谱聚类结构介绍
谱聚类( Spectral clustering \text{Spectral clustering} Spectral clustering)是一种针对连通型簇分布的聚类方法,它是一种基于加权无向图结构的模型。已知一个无向图结构表示如下:
关于无向图结构 G \mathcal G G的描述表示如下:
G = { V , E } \mathcal G = \{\mathcal V,\mathcal E\} G={
V,E}
其中 V \mathcal V V表示结点集合,图结构中一共包含 N N N个结点,每一个样本均对应一个结点:
V = { v ( 1 ) , v ( 2 ) , ⋯ , v ( N ) } \mathcal V = \{v^{(1)},v^{(2)},\cdots,v^{(N)}\} V={
v(1),v(2),⋯,v(N)}
E \mathcal E E表示边集合,由于 G \mathcal G G是加权无向图,这意味着如果某对结点 ( v ( i ) , v ( j ) ) (v^{(i)},v^{(j)}) (v(i),v