[模式识别-从入门到入土] 高斯混合模型
知乎:https://www.zhihu.com/people/byzh_rc
CSDN:https://blog.csdn.net/qq_54636039
注:本文仅对所述内容做了框架性引导,具体细节可查询其余相关资料or源码
参考文章:各方资料
文章目录
- [[模式识别-从入门到入土] 高斯混合模型](#[模式识别-从入门到入土] 高斯混合模型)
- GMM是什么?
- GMM与K-Means的关系:理解GMM的捷径
- [GMM的核心 -> 概率密度函数与参数](#GMM的核心 -> 概率密度函数与参数)
- [GMM的求解 -> EM算法](#GMM的求解 -> EM算法)
-
-
-
- [1. EM算法的核心目标](#1. EM算法的核心目标)
- [2. EM算法的两个步骤(交替执行)](#2. EM算法的两个步骤(交替执行))
-
-
- [举例 -> GMM用于聚类(两种情况)](#举例 -> GMM用于聚类(两种情况))
-
-
-
- [1. 已知样本分类(有监督场景)](#1. 已知样本分类(有监督场景))
- [2. 未知样本分类(无监督场景,最常用)](#2. 未知样本分类(无监督场景,最常用))
- 比较
-
-
- 总结
GMM是什么?
GMM: Gaussian Mixture Model: 高斯混合模型
-> 一种基于概率的聚类与密度估计模型
核心思想:假设我们要分析的数据集,是由 k 个不同的高斯分布(也就是正态分布)"加权混合"生成的。
每个高斯分布就对应一个聚类簇,我们的目标是通过学习这 k 个高斯分布的参数,完成对数据的聚类(分群)或概率密度拟合(描述数据分布规律)。
关键特性:理论上,GMM 可以近似任何概率分布
GMM与K-Means的关系:理解GMM的捷径
GMM 是广义的 K-Means,K-Means 是 GMM 的一个特殊情况
| 特性 | K-Means 聚类 | GMM |
|---|---|---|
| 聚类类型 | 硬聚类:每个样本只能属于一个簇(非此即彼) | 软聚类:每个样本有属于每个簇的概率(可同时"倾向"多个簇) |
| 关注核心 | 只关注簇的中心位置(均值) | 同时关注簇的中心位置(均值)+ 形状/方向(协方差) |
| 划分依据 | 欧氏距离(样本到簇中心的直线距离,硬性划分) | 概率密度(样本属于某个簇的可能性,软性归属) |
| 适用场景 | 簇呈球形、数据密度均匀的情况 | 簇形状不规则(比如椭圆)、数据密度不均的情况 |
关键结论:当 GMM 中所有高斯分布的协方差矩阵是"对角矩阵且对角元素相等"(意味着簇都是球形),并且强制每个样本只属于概率最大的簇时,GMM 就退化成了 K-Means
GMM的核心 -> 概率密度函数与参数
GMM 的概率密度函数 p ( x ) p(x) p(x) 是 k 个高斯分布的加权和(可以理解为"多个正态分布叠加,每个分布有不同的权重")
p ( x ) = ∑ i = 1 k π i ⋅ N ( x ∣ μ i , Σ i ) p(x) = \sum_{i=1}^k \pi_i \cdot \mathcal{N}(x|\mu_i,\Sigma_i) p(x)=i=1∑kπi⋅N(x∣μi,Σi)
公式含义:对于任意一个样本 x,它出现的概率 p(x),是 k 个高斯分布各自生成 x 的概率( N ( x ∣ μ i , Σ i ) \mathcal{N}(x|\mu_i,\Sigma_i) N(x∣μi,Σi)),乘以每个高斯分布的权重( π i \pi_i πi)后,再加总得到的。
| 参数类型 | 符号 | 具体含义 | 约束条件(必须满足) |
|---|---|---|---|
| 权重系数 | π i \pi_i πi | 第 i 个高斯分布的"重要程度"(对应簇的占比) | 所有权重之和为1( ∑ i = 1 k π i = 1 \sum_{i=1}^k \pi_i = 1 ∑i=1kπi=1),且每个权重在0到1之间( 0 ≤ π i ≤ 1 0 \le \pi_i \le 1 0≤πi≤1) |
| 均值向量 | μ i \mu_i μi | 第 i 个高斯分布的中心(对应某个簇的质心) | 向量维度和数据维度一致(比如数据是2维的,均值就是2个数值组成的向量) |
| 协方差矩阵 | Σ i \Sigma_i Σi | 第 i 个高斯分布的"离散程度",决定簇的形状和方向(比如协方差大,簇更分散;非对角元素不为0,簇是椭圆) | 必须是对称正定矩阵(保证概率计算有效) |
GMM的求解 -> EM算法
GMM 的核心问题:我们只有样本数据 ,不知道每个样本属于哪个簇 (即"隐含变量"未知),需要求出上面说的 3 类参数( π i \pi_i πi、 μ i \mu_i μi、 Σ i \Sigma_i Σi)
解决方法:使用 EM算法(期望最大化算法),核心逻辑是"先猜测、再修正",交替执行两个步骤,直到参数稳定(收敛)
1. EM算法的核心目标
找到一组参数 ,使得"在这组参数下,生成我们现有数据集的概率最大"------ 这就是"最大似然估计 "的思想
(简单说:让数据最"符合"我们的模型)
2. EM算法的两个步骤(交替执行)
- 期望(E)步:用当前已经估计出的参数,计算"每个样本属于每个簇的概率"(即隐含变量的分布),相当于"先猜测每个样本可能属于哪个簇"。
- 最大化(M)步 :基于E步得到的"样本归属概率",更新参数( π i \pi_i πi、 μ i \mu_i μi、 Σ i \Sigma_i Σi),使得"现有数据生成的概率"更大,相当于"根据猜测修正参数"。
重复E步和M步,直到参数变化很小(收敛),就得到了最终的模型参数。
举例 -> GMM用于聚类(两种情况)
1. 已知样本分类(有监督场景)
如果已经知道每个样本属于哪个簇(比如有标签数据),
直接用"最大似然估计MLE "就能算出参数,公式很直观:
π k = m k m μ k = 1 m k ∑ x ∈ L ( k ) x Σ k = 1 m k ∑ x ∈ L ( k ) ( x − μ k ) ( x − μ k ) T \pi_k=\frac{m_k}{m} \quad \mu_k=\frac{1}{m_k}\sum_{x \in L(k)}x \quad \Sigma_k=\frac{1}{m_k}\sum_{x \in L(k)}(x-\mu_k)(x-\mu_k)^T πk=mmkμk=mk1x∈L(k)∑xΣk=mk1x∈L(k)∑(x−μk)(x−μk)T
符号说明:m 是总样本数, m k m_k mk 是第 k 个簇的样本数, L ( k ) L(k) L(k) 表示第 k 个簇的所有样本。
通俗理解:权重 π k \pi_k πk 是第 k 个簇的样本占比;均值 μ k \mu_k μk 是第 k 个簇所有样本的平均值(质心);协方差 Σ k \Sigma_k Σk 是第 k 个簇样本相对于质心的离散程度。
2. 未知样本分类(无监督场景,最常用)
如果不知道样本的类别(比如无标签数据,这是聚类的常见场景)
核心思路是:假设数据服从 GMM 分布,找到一组参数使得"生成这组数据的概率最大"(即最大化似然函数)。
首先定义似然函数(所有样本同时出现的概率):
L ( θ ∣ x ) = ∏ i = 1 N P r ( x i ; θ ) L(\theta|x)=\prod_{i=1}^{N}Pr(x_i;\theta) L(θ∣x)=i=1∏NPr(xi;θ)
其中 θ \theta θ 代表所有参数( π i \pi_i πi、 μ i \mu_i μi、 Σ i \Sigma_i Σi), P r ( x i ; θ ) Pr(x_i;\theta) Pr(xi;θ) 是在参数 θ \theta θ 下生成样本 x i x_i xi 的概率。
技巧:直接求解这个乘积形式的似然函数很复杂,通常会取对数(把乘法变成加法),简化计算。
GMM 的对数似然函数:
∑ i = 1 m log { ∑ k = 1 K π k N ( x i ; μ k , Σ k ) } \sum_{i=1}^{m} \log \left\{ \sum_{k=1}^{K} \pi_k \mathcal{N}(x_i; \mu_k, \Sigma_k) \right\} i=1∑mlog{k=1∑KπkN(xi;μk,Σk)}
最终目标:找到一组参数 θ \theta θ,让这个对数似然函数的值最大------ 这就需要用到前面说的 EM 算法来求解。
比较
| 最大似然估计(MLE) | 最大化似然函数(GMM + EM) | |
|---|---|---|
| 场景类型 | 有监督 / 类别已知 | 无监督 / 类别未知 |
| 优化目标 | 在已知分配下,直接最大化似然 | 在未知分配下,最大化整体对数似然 |
| 似然函数形式 | 各簇样本的高斯似然 | 混合高斯的加权和: ∑ k π k N ( x i ; μ k , Σ k ) \sum_k \pi_k \mathcal{N}(x_i;\mu_k,\Sigma_k) ∑kπkN(xi;μk,Σk) |
| 参数求解方式 | 有解析解,直接计算 | 无解析解,需迭代优化(EM) |
| 权重 π k \pi_k πk | π k = m k m \displaystyle \pi_k=\frac{m_k}{m} πk=mmk | 由样本对簇的"软归属概率"估计 |
| 均值 μ k \mu_k μk | 簇内样本的算术平均 | 按后验概率加权的均值 |
| 协方差 Σ k \Sigma_k Σk | 簇内样本的经验协方差 | 按后验概率加权的协方差 |
| 样本归属 | 硬划分(一个样本只属于一个簇) | 软划分(一个样本对多个簇有概率) |
| 典型算法 | 直接 MLE 计算 | EM 算法(E 步 + M 步) |
| 计算复杂度 | 低,一次计算完成 | 较高,需要多轮迭代 |
总结
-
GMM 是"多个高斯分布加权混合"的概率模型,核心用于聚类和拟合数据分布
-
比 K-Means 更灵活(能处理非球形簇、软聚类),K-Means 是 GMM 的特殊情况
-
核心参数是权重(簇占比)、均值(簇中心)、协方差(簇形状)
-
未知样本类别时,用 EM 算法(猜-修正-迭代)求解参数,实现无监督聚类
-
核心逻辑:通过最大化"数据生成概率",找到最贴合数据的 k 个簇