模式识别与机器学习课程笔记(7):聚类分析
引言
聚类分析是无监督学习的核心技术之一,其本质是在无类别标签的情况下,通过样本自身的特征相似性,将数据自动划分为若干个“簇”(Cluster)——同一簇内的样本高度相似,不同簇间的样本差异显著。与监督学习(如分类)不同,聚类无需预先知道数据的类别分布,仅依赖数据的内在结构即可完成分组。
聚类分析的应用场景极为广泛,例如:
- 电商平台的用户画像分组(如“高频消费用户”“折扣敏感用户”);
- 图像分割(将图像像素按颜色、纹理聚类为不同区域);
- 文本主题挖掘(将新闻按“科技”“财经”“娱乐”等主题聚类);
- 生物信息学(将基因序列按功能相似性聚类)。
本文将从聚类的基础理论出发,依次讲解“相似性测度”(判断样本相似的标准)、“类的定义与类间距离”(簇的数学描述)、“聚类准则”(衡量聚类效果的目标)、经典“聚类算法”(具体实现方法),并深入介绍概率型聚类的代表——“混合高斯模型”及其参数估计工具“期望最大化方法”,构建完整的聚类分析知识体系。
一、相似性测度
相似性测度是聚类的“基石”,用于量化两个样本之间的相似或相异程度。通常分为两类:距离测度(衡量相异度,值越小越相似)和相似系数(衡量相似度,值越大越相似),选择需结合数据类型(连续型、离散型、布尔型等)。
1.1 距离测度(适用于连续型数据)
距离测度需满足数学上的“距离公理”:非负性( d ( x , y ) ≥ 0 d(x,y) \geq 0 d(x,y)≥0)、对称性( d ( x , y ) = d ( y , x ) d(x,y)=d(y,x) d(x,y)=d(y,x))、三角不等式( d ( x , y ) ≤ d ( x , z ) + d ( z , y ) d(x,y) \leq d(x,z)+d(z,y) d(x,y)≤d(x,z)+d(z,y))。常用距离如下:
1.1.1 欧氏距离(Euclidean Distance)
最常用的距离,衡量样本在特征空间中的“直线距离”,公式为:
d
i
j
=
∑
k
=
1
d
(
x
i
k
−
x
j
k
)
2
d_{ij} = \sqrt{\sum_{k=1}^d (x_{ik} - x_{jk})^2}
dij=k=1∑d(xik−xjk)2
- 符号说明: x i = ( x i 1 , x i 2 , . . . , x i d ) x_i = (x_{i1}, x_{i2}, ..., x_{id}) xi=(xi1,xi2,...,xid)和 x j x_j xj是 d d d维特征空间中的两个样本, x i k x_{ik} xik表示样本 i i i的第 k k k个特征;
- 特点:对特征尺度敏感(如“身高(cm)”和“体重(kg)”因单位不同,会导致身高对距离的贡献被放大),使用前需对特征做标准化(如Z-score标准化);
- 适用场景:特征尺度一致或已标准化的连续型数据(如图像像素值、传感器数据)。
1.1.2 曼哈顿距离(Manhattan Distance)
又称“城市街区距离”,衡量样本在特征空间中的“折线距离”(仅沿坐标轴移动),公式为:
d
i
j
=
∑
k
=
1
d
∣
x
i
k
−
x
j
k
∣
d_{ij} = \sum_{k=1}^d |x_{ik} - x_{jk}|
dij=k=1∑d∣xik−xjk∣
- 特点:对异常值的鲁棒性优于欧氏距离(因避免了平方项放大异常值的影响);
- 适用场景:需降低异常值干扰的场景(如用户行为数据中的极端值)。
1.1.3 切比雪夫距离(Chebyshev Distance)
衡量样本在特征空间中“各维度差值的最大值”,公式为:
d
i
j
=
max
k
=
1..
d
∣
x
i
k
−
x
j
k
∣
d_{ij} = \max_{k=1..d} |x_{ik} - x_{jk}|
dij=k=1..dmax∣xik−xjk∣
- 特点:关注样本差异最大的那个特征,忽略其他特征的微小差异;
- 适用场景:需优先考虑关键特征差异的场景(如产品质量检测中,某一项指标不达标即判定为不同类)。
1.1.4 马氏距离(Mahalanobis Distance)
考虑特征间相关性的距离,可消除特征尺度和相关性的影响,公式为:
d
i
j
=
(
x
i
−
x
j
)
T
Σ
−
1
(
x
i
−
x
j
)
d_{ij} = \sqrt{(x_i - x_j)^T \Sigma^{-1} (x_i - x_j)}
dij=(xi−xj)TΣ−1(xi−xj)
- 符号说明: Σ \Sigma Σ是样本集的协方差矩阵( d × d d \times d d×d维), Σ − 1 \Sigma^{-1} Σ−1是其逆矩阵;
- 特点:无需手动标准化,自动消除特征相关性(如“身高”和“体重”的正相关);
- 适用场景:特征间存在明显相关性的数据(如气象数据中的温度与湿度)。
1.2 相似系数(适用于离散型/布尔型数据)
相似系数取值范围通常为 [ − 1 , 1 ] [-1,1] [−1,1]或 [ 0 , 1 ] [0,1] [0,1],值越大表示样本越相似。常用系数如下:
1.2.1 余弦相似性(Cosine Similarity)
衡量两个样本向量的“方向一致性”,而非大小,公式为:
s
i
j
=
x
i
T
x
j
∥
x
i
∥
⋅
∥
x
j
∥
=
∑
k
=
1
d
x
i
k
x
j
k
∑
k
=
1
d
x
i
k
2
⋅
∑
k
=
1
d
x
j
k
2
s_{ij} = \frac{x_i^T x_j}{\|x_i\| \cdot \|x_j\|} = \frac{\sum_{k=1}^d x_{ik} x_{jk}}{\sqrt{\sum_{k=1}^d x_{ik}^2} \cdot \sqrt{\sum_{k=1}^d x_{jk}^2}}
sij=∥xi∥⋅∥xj∥xiTxj=∑k=1dxik2⋅∑k=1dxjk2∑k=1dxikxjk
- 特点:对向量长度不敏感(如文本数据中,“词频”缩放后方向不变,余弦值仍相同);
- 适用场景:文本分类(如TF-IDF向量)、推荐系统(如用户偏好向量)。
1.2.2 Jaccard相似系数(Jaccard Similarity)
适用于布尔型数据(特征取值为0或1,0表示“无”,1表示“有”),公式为:
s
i
j
=
a
a
+
b
+
c
s_{ij} = \frac{a}{a + b + c}
sij=a+b+ca
- 符号说明: a a a是 x i x_i xi和 x j x_j xj均为1的特征数, b b b是 x i x_i xi为1、 x j x_j xj为0的特征数, c c c是 x i x_i xi为0、 x j x_j xj为1的特征数;
- 特点:忽略“均为0”的特征(避免无意义特征干扰,如文本中均不包含的生僻词);
- 适用场景:用户兴趣标签(如“喜欢电影/不喜欢”)、商品属性匹配(如“防水/不防水”)。
二、类的定义与类间距离
“类”(簇)是聚类的基本单元,需先明确其数学定义,再定义“类间距离”(衡量两个簇的差异程度)——类间距离是层次聚类等算法的核心计算依据。
2.1 类的定义
从数学角度,类 G G G是样本集 X X X的一个子集( G ⊆ X G \subseteq X G⊆X),需满足“内部相似性高、外部相似性低”。常用的类特征描述如下:
- 类的中心(Centroid):类内所有样本的均值向量,即 μ G = 1 n G ∑ x ∈ G x \mu_G = \frac{1}{n_G} \sum_{x \in G} x μG=nG1∑x∈Gx,其中 n G n_G nG是类 G G G的样本数(适用于连续型数据);
- 类的直径(Diameter):类内任意两个样本的最大距离,即 D G = max x i , x j ∈ G d ( x i , x j ) D_G = \max_{x_i, x_j \in G} d(x_i, x_j) DG=maxxi,xj∈Gd(xi,xj),反映类的分散程度;
- 类的协方差矩阵: Σ G = 1 n G − 1 ∑ x ∈ G ( x − μ G ) ( x − μ G ) T \Sigma_G = \frac{1}{n_G - 1} \sum_{x \in G} (x - \mu_G)(x - \mu_G)^T ΣG=nG−11∑x∈G(x−μG)(x−μG)T,反映类内特征的相关性和分散方向。
2.2 类间距离
类间距离的计算需基于“样本距离”,但需定义“如何用样本距离代表类距离”。常用的类间距离方法如下(设类 G 1 G_1 G1含 n 1 n_1 n1个样本,类 G 2 G_2 G2含 n 2 n_2 n2个样本):
2.2.1 最短距离法(Single Linkage)
取两个类中最相似样本的距离作为类间距离,公式为:
d
(
G
1
,
G
2
)
=
min
x
i
∈
G
1
,
x
j
∈
G
2
d
(
x
i
,
x
j
)
d(G_1, G_2) = \min_{x_i \in G_1, x_j \in G_2} d(x_i, x_j)
d(G1,G2)=xi∈G1,xj∈G2mind(xi,xj)
- 特点:易形成“链状簇”(两个远距离簇可能因边缘样本相似而合并),对噪声敏感;
- 适用场景:需发现细长形状簇的场景(如道路图像分割)。
2.2.2 最长距离法(Complete Linkage)
取两个类中最不相似样本的距离作为类间距离,公式为:
d
(
G
1
,
G
2
)
=
max
x
i
∈
G
1
,
x
j
∈
G
2
d
(
x
i
,
x
j
)
d(G_1, G_2) = \max_{x_i \in G_1, x_j \in G_2} d(x_i, x_j)
d(G1,G2)=xi∈G1,xj∈G2maxd(xi,xj)
- 特点:簇的紧凑性好(避免链状结构),但对异常值敏感;
- 适用场景:需簇内样本高度集中的场景(如用户精准分组)。
2.2.3 重心法(Centroid Linkage)
取两个类的中心之间的距离作为类间距离,公式为:
d
(
G
1
,
G
2
)
=
d
(
μ
G
1
,
μ
G
2
)
d(G_1, G_2) = d(\mu_{G_1}, \mu_{G_2})
d(G1,G2)=d(μG1,μG2)
- 特点:计算简单,对异常值鲁棒性优于最短/最长距离法;
- 适用场景:类中心可明确计算的连续型数据(如传感器监测数据)。
2.2.4 平均距离法(Average Linkage)
取两个类中所有样本对距离的平均值作为类间距离,公式为:
d
(
G
1
,
G
2
)
=
1
n
1
n
2
∑
x
i
∈
G
1
∑
x
j
∈
G
2
d
(
x
i
,
x
j
)
d(G_1, G_2) = \frac{1}{n_1 n_2} \sum_{x_i \in G_1} \sum_{x_j \in G_2} d(x_i, x_j)
d(G1,G2)=n1n21xi∈G1∑xj∈G2∑d(xi,xj)
- 特点:综合考虑类内所有样本,结果稳定,是层次聚类中最常用的方法;
- 适用场景:大多数通用聚类场景,平衡鲁棒性和紧凑性。
三、聚类准则
聚类准则是衡量“聚类结果好坏”的量化标准,本质是定义一个“目标函数”——聚类算法的核心是通过调整簇的划分,使目标函数达到最优(最大或最小)。常用的聚类准则分为“基于相似度的准则”和“基于概率密度的准则”两类。
3.1 基于相似度的准则(适用于确定性聚类)
这类准则通过“类内相似度”和“类间相似度”的组合来评价聚类效果,核心是“最小化类内差异、最大化类间差异”。
3.1.1 误差平方和准则(SSE,Sum of Squared Errors)
又称“组内平方和”,衡量类内样本到类中心的距离平方和,目标是最小化SSE,公式为:
J
=
∑
k
=
1
K
∑
x
∈
G
k
∥
x
−
μ
k
∥
2
J = \sum_{k=1}^K \sum_{x \in G_k} \|x - \mu_k\|^2
J=k=1∑Kx∈Gk∑∥x−μk∥2
- 符号说明: K K K是聚类个数, G k G_k Gk是第 k k k个簇, μ k \mu_k μk是 G k G_k Gk的中心;
- 意义:SSE越小,说明簇内样本越集中,聚类效果越好;
- 适用场景:K-means等划分式聚类算法(K-means的目标函数就是最小化SSE)。
3.1.2 类间分离度准则
衡量不同簇之间的差异,目标是最大化类间分离度。常用的类间分离度为“类间平方和”(SSB,Sum of Squared Between-clusters),公式为:
S
S
B
=
∑
k
=
1
K
n
k
∥
μ
k
−
μ
∥
2
SSB = \sum_{k=1}^K n_k \|\mu_k - \mu\|^2
SSB=k=1∑Knk∥μk−μ∥2
- 符号说明: n k n_k nk是第 k k k个簇的样本数, μ \mu μ是所有样本的全局中心;
- 意义:SSB越大,说明簇间差异越显著,聚类效果越好;
- 扩展:常用“轮廓系数(Silhouette Coefficient)”综合SSE和SSB,取值范围 [ − 1 , 1 ] [-1,1] [−1,1],越接近1表示聚类效果越好。
3.2 基于概率密度的准则(适用于概率型聚类)
这类准则假设数据服从某种概率分布(如混合高斯分布),通过“数据的似然函数”来评价聚类效果,目标是最大化似然函数(即让数据在当前分布下出现的概率最大)。
以混合高斯模型为例,设数据
X
=
{
x
1
,
x
2
,
.
.
.
,
x
N
}
X = \{x_1, x_2, ..., x_N\}
X={x1,x2,...,xN}服从
K
K
K个高斯分布的混合,其对数似然函数为:
L
(
θ
)
=
∑
i
=
1
N
ln
(
∑
k
=
1
K
π
k
N
(
x
i
;
μ
k
,
Σ
k
)
)
\mathcal{L}(\theta) = \sum_{i=1}^N \ln \left( \sum_{k=1}^K \pi_k \mathcal{N}(x_i; \mu_k, \Sigma_k) \right)
L(θ)=i=1∑Nln(k=1∑KπkN(xi;μk,Σk))
- 符号说明: θ = { π 1 , . . . , π K ; μ 1 , . . . , μ K ; Σ 1 , . . . , Σ K } \theta = \{\pi_1, ..., \pi_K; \mu_1, ..., \mu_K; \Sigma_1, ..., \Sigma_K\} θ={π1,...,πK;μ1,...,μK;Σ1,...,ΣK}是模型参数( π k \pi_k πk是第 k k k个高斯分量的权重, N ( x ; μ k , Σ k ) \mathcal{N}(x; \mu_k, \Sigma_k) N(x;μk,Σk)是高斯概率密度函数);
- 意义: L ( θ ) \mathcal{L}(\theta) L(θ)越大,说明模型参数 θ \theta θ越符合数据的真实分布,聚类(每个高斯分量对应一个簇)效果越好;
- 适用场景:混合高斯模型(GMM)等概率型聚类算法。
四、聚类算法
根据聚类思路的不同,经典聚类算法可分为划分式聚类、层次聚类、密度聚类和网格聚类四类,各类算法的核心思想、步骤和适用场景差异显著。
4.1 划分式聚类:K-means算法
K-means是最经典的划分式聚类算法,核心是“预先指定聚类个数 K K K,通过迭代更新簇中心,最小化SSE”。
4.1.1 基本思想
- 随机选择 K K K个样本作为初始簇中心;
- 计算每个样本到各簇中心的距离,将样本分配到距离最近的簇;
- 重新计算每个簇的中心(样本均值);
- 重复步骤2-3,直到簇中心不再变化或达到迭代次数上限。
4.1.2 算法步骤(数学描述)
设样本集 X = { x 1 , . . . , x N } X = \{x_1, ..., x_N\} X={x1,...,xN},聚类个数 K K K,具体步骤:
- 初始化:随机选择 K K K个中心 μ 1 ( 0 ) , . . . , μ K ( 0 ) \mu_1^{(0)}, ..., \mu_K^{(0)} μ1(0),...,μK(0)(上标表示迭代次数,初始为0);
- 分配样本(E步思想):对每个样本
x
i
x_i
xi,计算距离
d
(
x
i
,
μ
k
(
t
)
)
d(x_i, \mu_k^{(t)})
d(xi,μk(t)),将
x
i
x_i
xi分配到簇
G
k
(
t
)
G_k^{(t)}
Gk(t),满足:
G k ( t ) = { x i ∣ d ( x i , μ k ( t ) ) ≤ d ( x i , μ j ( t ) ) , ∀ j = 1.. K } G_k^{(t)} = \{x_i \mid d(x_i, \mu_k^{(t)}) \leq d(x_i, \mu_j^{(t)}), \forall j=1..K\} Gk(t)={xi∣d(xi,μk(t))≤d(xi,μj(t)),∀j=1..K} - 更新中心(M步思想):对每个簇
G
k
(
t
)
G_k^{(t)}
Gk(t),重新计算中心
μ
k
(
t
+
1
)
\mu_k^{(t+1)}
μk(t+1):
μ k ( t + 1 ) = 1 n k ( t ) ∑ x i ∈ G k ( t ) x i \mu_k^{(t+1)} = \frac{1}{n_k^{(t)}} \sum_{x_i \in G_k^{(t)}} x_i μk(t+1)=nk(t)1xi∈Gk(t)∑xi
其中 n k ( t ) n_k^{(t)} nk(t)是 G k ( t ) G_k^{(t)} Gk(t)的样本数; - 收敛判断:若 max k ∥ μ k ( t + 1 ) − μ k ( t ) ∥ < ϵ \max_{k} \|\mu_k^{(t+1)} - \mu_k^{(t)}\| < \epsilon maxk∥μk(t+1)−μk(t)∥<ϵ( ϵ \epsilon ϵ为预设阈值),停止迭代;否则 t = t + 1 t = t+1 t=t+1,返回步骤2。
4.1.3 优缺点与改进
- 优点:计算速度快、复杂度低(时间复杂度 O ( N K d T ) O(N K d T) O(NKdT), T T T为迭代次数)、适合大规模数据;
- 缺点:需预先指定 K K K、对初始中心敏感(易陷入局部最优)、对异常值敏感、仅适用于球形簇;
- 改进:
- K-means++:优化初始中心选择(先随机选1个中心,后续中心优先选择距离已选中心远的样本);
- K-medoids(K-中心点):用簇内样本替代均值作为中心,提高对异常值的鲁棒性。
4.2 层次聚类:凝聚式聚类
层次聚类无需预先指定 K K K,通过“自下而上合并簇”(凝聚式)或“自上而下分裂簇”(分裂式)构建聚类层次树( dendrogram),其中凝聚式聚类更常用。
4.2.1 基本思想(凝聚式)
- 初始时每个样本为一个独立的簇(共 N N N个簇);
- 计算所有簇对的类间距离,合并距离最近的两个簇;
- 重复步骤2,直到所有样本合并为一个簇;
- 根据聚类层次树,选择合适的 K K K(如通过轮廓系数),截取树的某一层作为最终聚类结果。
4.2.2 优缺点
- 优点:无需指定 K K K、可直观展示聚类层次、适合小样本数据;
- 缺点:计算复杂度高(时间复杂度 O ( N 3 ) O(N^3) O(N3))、不适合大规模数据、一旦合并/分裂无法回溯。
4.3 密度聚类:DBSCAN算法
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是基于密度的聚类算法,核心是“将密度足够高的区域划分为簇,同时识别噪声(低密度区域的样本)”,可发现任意形状的簇。
4.3.1 核心概念
- ε-邻域:以样本 x x x为中心,半径为 ϵ \epsilon ϵ的区域,包含的样本数记为 N ϵ ( x ) N_{\epsilon}(x) Nϵ(x);
- 核心点:若 N ϵ ( x ) ≥ MinPts N_{\epsilon}(x) \geq \text{MinPts} Nϵ(x)≥MinPts(预设最小样本数),则 x x x为核心点;
- 边界点:在核心点的ε-邻域内,但自身不是核心点的样本;
- 噪声点:既不是核心点也不是边界点的样本。
4.3.2 基本思想
- 遍历所有样本,找到所有核心点;
- 对每个未分配的核心点,以其为起点,递归合并所有密度可达的样本(即通过核心点连接的样本),形成一个簇;
- 边界点分配给其所属的核心点簇;
- 剩余未分配的样本为噪声点。
4.3.3 优缺点
- 优点:无需指定 K K K、可发现任意形状的簇、能识别噪声;
- 缺点:对参数 ϵ \epsilon ϵ和 MinPts \text{MinPts} MinPts敏感(需通过领域知识或手肘法选择)、高维数据中密度计算不准确(需先降维)。
五、混合高斯模型(GMM)
混合高斯模型(Gaussian Mixture Model,GMM)是概率型聚类的代表,其本质是用 K K K个高斯分布的线性组合来拟合数据的概率分布——每个高斯分布对应一个簇,样本属于某个簇的概率由该高斯分量的权重和密度共同决定(软聚类,区别于K-means的硬聚类)。
5.1 模型定义
设样本集 X = { x 1 , x 2 , . . . , x N } X = \{x_1, x_2, ..., x_N\} X={x1,x2,...,xN}(每个 x i ∈ R d x_i \in \mathbb{R}^d xi∈Rd),GMM假设每个样本 x i x_i xi的生成过程如下:
- 从 K K K个高斯分量中随机选择一个,选择第 k k k个分量的概率为 π k \pi_k πk(满足 ∑ k = 1 K π k = 1 \sum_{k=1}^K \pi_k = 1 ∑k=1Kπk=1, π k ≥ 0 \pi_k \geq 0 πk≥0);
- 从第 k k k个高斯分布 N ( x ; μ k , Σ k ) \mathcal{N}(x; \mu_k, \Sigma_k) N(x;μk,Σk)中生成样本 x i x_i xi,其中 μ k \mu_k μk是均值向量( d d d维), Σ k \Sigma_k Σk是协方差矩阵( d × d d \times d d×d维,半正定)。
因此,GMM的概率密度函数为
K
K
K个高斯密度的加权和:
p
(
x
∣
θ
)
=
∑
k
=
1
K
π
k
⋅
N
(
x
;
μ
k
,
Σ
k
)
p(x \mid \theta) = \sum_{k=1}^K \pi_k \cdot \mathcal{N}(x; \mu_k, \Sigma_k)
p(x∣θ)=k=1∑Kπk⋅N(x;μk,Σk)
其中
θ
=
{
π
1
,
.
.
.
,
π
K
;
μ
1
,
.
.
.
,
μ
K
;
Σ
1
,
.
.
.
,
Σ
K
}
\theta = \{\pi_1, ..., \pi_K; \mu_1, ..., \mu_K; \Sigma_1, ..., \Sigma_K\}
θ={π1,...,πK;μ1,...,μK;Σ1,...,ΣK}是GMM的所有参数。
5.2 GMM与K-means的区别
GMM是K-means的概率扩展,二者核心区别如下:
| 对比维度 | K-means | GMM |
|---|---|---|
| 聚类类型 | 硬聚类(样本属于唯一簇) | 软聚类(样本属于每个簇的概率已知) |
| 模型假设 | 簇是球形、等方差的(基于距离) | 簇可是任意椭圆形状(基于协方差矩阵) |
| 输出结果 | 簇分配标签 | 簇概率分布 + 模型参数 |
| 鲁棒性 | 对异常值敏感 | 对异常值鲁棒性更强(概率分配可降低异常值影响) |
5.3 簇的判定
GMM训练完成后,对新样本
x
x
x,通过“最大后验概率”判定其所属簇:
k
^
=
arg
max
k
=
1..
K
p
(
k
∣
x
,
θ
)
\hat{k} = \arg\max_{k=1..K} p(k \mid x, \theta)
k^=argk=1..Kmaxp(k∣x,θ)
其中
p
(
k
∣
x
,
θ
)
p(k \mid x, \theta)
p(k∣x,θ)是样本
x
x
x属于第
k
k
k个簇的后验概率,由贝叶斯公式推导得:
p
(
k
∣
x
,
θ
)
=
π
k
⋅
N
(
x
;
μ
k
,
Σ
k
)
∑
j
=
1
K
π
j
⋅
N
(
x
;
μ
j
,
Σ
j
)
p(k \mid x, \theta) = \frac{\pi_k \cdot \mathcal{N}(x; \mu_k, \Sigma_k)}{\sum_{j=1}^K \pi_j \cdot \mathcal{N}(x; \mu_j, \Sigma_j)}
p(k∣x,θ)=∑j=1Kπj⋅N(x;μj,Σj)πk⋅N(x;μk,Σk)
该后验概率也称为“责任(Responsibility)”,表示第
k
k
k个高斯分量对生成样本
x
x
x的贡献程度。
六、期望最大化方法(EM)
GMM的参数 θ \theta θ无法通过解析法直接求解(因似然函数中存在“隐变量”——样本属于哪个高斯分量未知),而期望最大化方法(Expectation-Maximization,EM) 是解决“含隐变量的参数估计问题”的通用算法,通过“迭代求期望(E步)和最大化似然(M步)”逐步逼近最优参数。
6.1 EM算法的核心思想
EM算法针对含隐变量的模型,通过“交替执行两步”优化似然函数:
- E步(Expectation Step):固定当前模型参数 θ ( t ) \theta^{(t)} θ(t),计算隐变量的后验概率(期望),即“在已知数据和当前参数下,隐变量的可能取值分布”;
- M步(Maximization Step):固定E步得到的隐变量后验概率,最大化似然函数关于参数 θ \theta θ的期望,更新参数为 θ ( t + 1 ) \theta^{(t+1)} θ(t+1);
- 重复E步和M步,直到似然函数收敛(参数变化小于阈值),此时得到最优参数 θ ^ \hat{\theta} θ^。
6.2 基于EM的GMM参数估计
以GMM为例,详细推导EM算法的具体步骤:
6.2.1 定义隐变量
设隐变量
z
i
=
(
z
i
1
,
.
.
.
,
z
i
K
)
z_i = (z_{i1}, ..., z_{iK})
zi=(zi1,...,ziK),其中
z
i
k
=
1
z_{ik} = 1
zik=1表示样本
x
i
x_i
xi来自第
k
k
k个高斯分量,
z
i
k
=
0
z_{ik} = 0
zik=0表示否则(满足
∑
k
=
1
K
z
i
k
=
1
\sum_{k=1}^K z_{ik} = 1
∑k=1Kzik=1)。此时,GMM的完整似然函数(含隐变量)为:
p
(
X
,
Z
∣
θ
)
=
∏
i
=
1
N
∏
k
=
1
K
(
π
k
N
(
x
i
;
μ
k
,
Σ
k
)
)
z
i
k
p(X, Z \mid \theta) = \prod_{i=1}^N \prod_{k=1}^K \left( \pi_k \mathcal{N}(x_i; \mu_k, \Sigma_k) \right)^{z_{ik}}
p(X,Z∣θ)=i=1∏Nk=1∏K(πkN(xi;μk,Σk))zik
其中
Z
=
{
z
1
,
.
.
.
,
z
N
}
Z = \{z_1, ..., z_N\}
Z={z1,...,zN}是所有隐变量的集合。
6.2.2 E步:计算隐变量的后验概率(责任)
固定当前参数
θ
(
t
)
=
{
π
k
(
t
)
,
μ
k
(
t
)
,
Σ
k
(
t
)
}
\theta^{(t)} = \{\pi_k^{(t)}, \mu_k^{(t)}, \Sigma_k^{(t)}\}
θ(t)={πk(t),μk(t),Σk(t)},计算第
i
i
i个样本属于第
k
k
k个分量的后验概率(责任)
γ
(
t
)
(
z
i
k
)
\gamma^{(t)}(z_{ik})
γ(t)(zik):
γ
(
t
)
(
z
i
k
)
=
p
(
z
i
k
=
1
∣
x
i
,
θ
(
t
)
)
=
π
k
(
t
)
N
(
x
i
;
μ
k
(
t
)
,
Σ
k
(
t
)
)
∑
j
=
1
K
π
j
(
t
)
N
(
x
i
;
μ
j
(
t
)
,
Σ
j
(
t
)
)
\gamma^{(t)}(z_{ik}) = p(z_{ik}=1 \mid x_i, \theta^{(t)}) = \frac{\pi_k^{(t)} \mathcal{N}(x_i; \mu_k^{(t)}, \Sigma_k^{(t)})}{\sum_{j=1}^K \pi_j^{(t)} \mathcal{N}(x_i; \mu_j^{(t)}, \Sigma_j^{(t)})}
γ(t)(zik)=p(zik=1∣xi,θ(t))=∑j=1Kπj(t)N(xi;μj(t),Σj(t))πk(t)N(xi;μk(t),Σk(t))
γ
(
t
)
(
z
i
k
)
\gamma^{(t)}(z_{ik})
γ(t)(zik)的物理意义:在当前参数下,样本
x
i
x_i
xi由第
k
k
k个高斯分量生成的概率。
6.2.3 M步:最大化似然期望,更新参数
固定E步得到的 γ ( t ) ( z i k ) \gamma^{(t)}(z_{ik}) γ(t)(zik),最大化“完整似然函数的期望”(即 E Z ∣ X , θ ( t ) [ ln p ( X , Z ∣ θ ) ] \mathbb{E}_{Z \mid X, \theta^{(t)}} [\ln p(X, Z \mid \theta)] EZ∣X,θ(t)[lnp(X,Z∣θ)]),推导得到新参数 θ ( t + 1 ) \theta^{(t+1)} θ(t+1):
-
更新权重 π k ( t + 1 ) \pi_k^{(t+1)} πk(t+1):
π k ( t + 1 ) = 1 N ∑ i = 1 N γ ( t ) ( z i k ) \pi_k^{(t+1)} = \frac{1}{N} \sum_{i=1}^N \gamma^{(t)}(z_{ik}) πk(t+1)=N1i=1∑Nγ(t)(zik)
意义:第 k k k个分量的权重等于所有样本对该分量的平均责任。 -
更新均值 μ k ( t + 1 ) \mu_k^{(t+1)} μk(t+1):
μ k ( t + 1 ) = ∑ i = 1 N γ ( t ) ( z i k ) x i ∑ i = 1 N γ ( t ) ( z i k ) \mu_k^{(t+1)} = \frac{\sum_{i=1}^N \gamma^{(t)}(z_{ik}) x_i}{\sum_{i=1}^N \gamma^{(t)}(z_{ik})} μk(t+1)=∑i=1Nγ(t)(zik)∑i=1Nγ(t)(zik)xi
意义:第 k k k个分量的均值是所有样本的加权平均,权重为样本对该分量的责任。 -
更新协方差矩阵 Σ k ( t + 1 ) \Sigma_k^{(t+1)} Σk(t+1):
Σ k ( t + 1 ) = ∑ i = 1 N γ ( t ) ( z i k ) ( x i − μ k ( t + 1 ) ) ( x i − μ k ( t + 1 ) ) T ∑ i = 1 N γ ( t ) ( z i k ) \Sigma_k^{(t+1)} = \frac{\sum_{i=1}^N \gamma^{(t)}(z_{ik}) (x_i - \mu_k^{(t+1)})(x_i - \mu_k^{(t+1)})^T}{\sum_{i=1}^N \gamma^{(t)}(z_{ik})} Σk(t+1)=∑i=1Nγ(t)(zik)∑i=1Nγ(t)(zik)(xi−μk(t+1))(xi−μk(t+1))T
意义:第 k k k个分量的协方差是样本偏离新均值的加权方差,权重为责任。
6.2.4 收敛性说明
EM算法的似然函数 L ( θ ) \mathcal{L}(\theta) L(θ)是单调不减的(即 L ( θ ( t + 1 ) ) ≥ L ( θ ( t ) ) \mathcal{L}(\theta^{(t+1)}) \geq \mathcal{L}(\theta^{(t)}) L(θ(t+1))≥L(θ(t))),因此迭代过程中似然函数会逐步上升,最终收敛到一个局部最优值(需多次初始化参数以避免陷入较差的局部最优)。
6.3 EM算法的适用场景
EM算法不仅适用于GMM,还可用于其他含隐变量的模型,例如:
- 隐马尔可夫模型(HMM)的参数估计;
- 缺失数据的填补(隐变量为缺失值);
- 混合分布模型(如混合泊松模型、混合指数模型)的参数估计。
总结
本文系统梳理了聚类分析的核心知识,从基础到进阶形成完整链条:
- 相似性测度是基础,需根据数据类型选择距离或相似系数(如连续型用欧氏距离,文本用余弦相似性);
- 类的定义与类间距离是簇的数学描述,类间距离决定层次聚类的合并策略;
- 聚类准则是评价标准,确定性聚类用SSE,概率型聚类用似然函数;
- 经典聚类算法各有优劣:K-means高效适合大规模数据,DBSCAN可发现任意形状簇,层次聚类无需指定K;
- 混合高斯模型(GMM) 是概率型聚类的代表,实现软聚类;
- EM算法是GMM参数估计的核心工具,通过E步和M步解决隐变量问题。
聚类分析的关键在于“因地制宜”——需结合数据特征(维度、类型、分布)和业务需求(是否需识别噪声、是否已知簇数)选择合适的方法。例如,高维文本数据适合用余弦相似性+K-means,含噪声的非球形数据适合用DBSCAN,需概率输出的场景适合用GMM-EM。
1086

被折叠的 条评论
为什么被折叠?



