高斯混合模型是概率模型、机器学习、无监督学习、聚类分析、密度估计和统计建模中非常经典的一个术语,它用来描述一种把复杂数据分布看作多个高斯分布加权组合的模型。换句话说,高斯混合模型是在回答:如果一批数据不是来自一个简单分布,而是由多个潜在群体混合而成,应该如何建模。

例如,一批人的身高数据可能来自男性、女性、不同年龄段等多个群体;一批用户消费数据可能来自低消费、中等消费和高消费用户;一批二维样本点可能并不是围绕一个中心分布,而是由多个椭圆状区域混合形成。

如果说 K 均值聚类把每个样本硬分配到某个簇,那么高斯混合模型更进一步:它认为每个样本可能以不同概率属于不同高斯成分。因此,GMM 不只是给出“属于哪一类”,还可以给出“属于每一类的概率”。

因此,高斯混合模型常用于聚类、异常检测、概率密度估计、语音建模、图像分割、用户分群、数据生成和软聚类任务中,是理解概率聚类与生成式统计模型的重要基础概念。

一、基本概念:什么是高斯混合模型

高斯混合模型(Gaussian Mixture Model, GMM)的核心思想是:

复杂数据分布 = 多个高斯分布的加权组合

一个高斯分布可以描述一个“集中在某个中心附近”的数据群体。

如果数据中有多个群体,就可以用多个高斯分布来共同描述。

例如,一批二维样本点可能由三个潜在群体组成:

• 第一类样本集中在左下方

• 第二类样本集中在右上方

• 第三类样本集中在中间偏右位置

GMM 会认为:每个群体对应一个高斯成分;整体数据分布由这些高斯成分混合而成。

可以简单表示为:

其中:

• x 表示一个样本

• K 表示高斯成分数量

• πₖ 表示第 k 个高斯成分的混合权重

• μₖ 表示第 k 个高斯分布的均值

• Σₖ 表示第 k 个高斯分布的协方差矩阵

• (x | μₖ, Σₖ) 表示第 k 个高斯分布在 x 处的概率密度

打开网易新闻 查看精彩图片

图 1:高斯混合模型的基本思想

从通俗角度看,GMM 像是在说:这批数据不是从一个“钟形曲线”里来的,而是从多个“钟形分布”混合出来的。

二、为什么需要高斯混合模型

在很多数据中,样本并不是围绕一个中心分布。

例如,用户消费金额可能有低消费群体、中等消费群体和高消费群体;图像像素颜色可能来自前景、背景和阴影区域;语音信号可能来自不同音素或发音状态。

如果只用一个高斯分布描述所有数据,模型可能过于粗糙。

例如:

• 一个高斯分布:只能描述一个主要中心

• 多个高斯分布:可以描述多个潜在群体

GMM 的价值在于:

• 能描述多峰分布

• 能进行软聚类

• 能估计数据的概率密度

• 能表达不同簇的形状和方向

• 能给出样本属于各成分的概率

从通俗角度看:

• K 均值像是在问:这个样本属于哪个簇?

• GMM 更像是在问:这个样本有多大概率来自每个簇?

这使 GMM 比硬聚类方法更灵活。

三、GMM 的三个核心参数

一个 GMM 通常包含三类核心参数。

1、混合权重

混合权重表示每个高斯成分在整体数据中的占比。

其中:

• πₖ 表示第 k 个成分的权重

• 所有权重相加必须等于 1

例如,如果 π₁ = 0.5,π₂ = 0.3,π₃ = 0.2,就表示第一个成分在整体中占比最大。

2、均值

均值 μₖ 表示第 k 个高斯成分的中心位置。

在二维空间中,均值可以理解为某个簇的中心点。

例如:

μ₃:第三组样本中心

3、协方差矩阵

协方差矩阵 Σₖ 描述第 k 个高斯成分的形状、方向和扩散程度。

它决定:

• 数据分布是圆形还是椭圆形

• 哪个方向变化更大

• 样本围绕中心分散得多远

• 不同特征之间是否相关

从通俗角度看:均值决定“中心在哪里”。协方差决定“这个簇长什么形状”。权重决定“这个簇占多大比例”。

四、GMM 与 K 均值聚类的区别

GMM 经常和 K 均值一起比较。

打开网易新闻 查看精彩图片

图 2:GMM 与 K 均值的区别

1、K 均值是硬聚类

K 均值会把每个样本分配给最近的簇中心。

例如:

样本 x → 第 2 类

它的结果是明确的类别归属。一个样本只能属于一个簇。

2、GMM 是软聚类

GMM 会计算样本属于每个高斯成分的概率。

例如:

样本 x 属于第 3 类的概率:0.15

这被称为责任度或后验概率。

可以表示为:

其中:

• γᵢₖ 表示样本 xᵢ 属于第 k 个成分的概率

• zᵢ 表示样本 xᵢ 的隐藏类别

• xᵢ 表示第 i 个样本

从通俗角度看:

K 均值说:“你就是第 2 类。”

GMM 说:“你大概率是第 2 类,但也可能有一点像第 1 类和第 3 类。”

3、GMM 可以表达更复杂的簇形

K 均值更适合近似圆形、大小相近的簇。

GMM 通过协方差矩阵,可以表达椭圆形、不同方向、不同扩散程度的簇。

因此,当数据簇不是标准圆形时,GMM 往往比 K 均值更灵活。

五、GMM 中的隐藏变量

GMM 可以看作一种含有隐藏变量的概率模型。

对于每个样本 xᵢ,模型假设它来自某个高斯成分,但我们并不知道具体来自哪一个。

这个未知成分可以用隐藏变量 zᵢ 表示。

例如:

zᵢ = 3:样本来自第 3 个高斯成分

从生成过程看,GMM 可以理解为:先根据混合权重选择一个高斯成分;再从这个高斯分布中生成样本。

也就是:

选择成分 z → 根据该成分的 μ 和 Σ 生成样本 x

这说明 GMM 不只是聚类模型,也是一种生成式概率模型。

它不仅能给样本分组,还能描述数据是如何被生成出来的。

六、GMM 如何训练:EM 算法思想

GMM 的训练通常使用 EM 算法。EM 是 Expectation-Maximization 的缩写,通常译为“期望最大化算法”。

GMM 训练的难点在于:我们既不知道每个高斯成分的参数,也不知道每个样本来自哪个成分。

EM 算法通过两个步骤交替进行。

打开网易新闻 查看精彩图片

图 3:EM 算法过程

1、E 步:估计样本属于各成分的概

在当前参数下,计算每个样本属于每个高斯成分的概率。

这一步得到责任度 γᵢₖ。

可以理解为:先根据当前模型,猜每个样本更可能来自哪个成分。

2、M 步:更新模型参数

根据 E 步得到的责任度,重新估计每个高斯成分的权重、均值和协方差。

可以理解为:再根据这些软分配结果,更新每个高斯分布的位置、形状和权重。

3、反复迭代

EM 算法会不断重复:

M 步:更新模型参数

直到模型基本稳定。

从通俗角度看,GMM 的训练像一个反复修正的过程:先猜样本属于谁;再根据猜测更新每个簇;再重新猜;再更新;直到结果稳定。

七、GMM 的常见应用

1、聚类分析

GMM 可以把数据分成多个潜在群体。

与 K 均值不同,GMM 能给出每个样本属于各类的概率,因此适合边界不清晰的聚类任务。

2、异常检测

GMM 可以估计样本在整体数据分布下的概率密度。

如果某个样本的概率密度很低,说明它不像正常数据,可能是异常点。

例如:

• 正常样本:落在某个高斯成分附近

• 异常样本:远离所有高斯成分

3、图像分割

在图像处理中,可以把像素颜色看作由多个高斯分布混合而成。

例如:

• 前景颜色分布

• 背景颜色分布

• 阴影颜色分布

GMM 可以帮助区分不同区域。

4、语音建模

在传统语音识别中,GMM 曾经广泛用于声学建模,用多个高斯成分描述复杂的声学特征分布。

虽然深度神经网络后来成为主流,但 GMM 仍然是理解传统语音模型的重要基础。

八、GMM 的优势、局限与常见误解

1、GMM 的主要优势

GMM 的优势主要包括:

• 能表达多峰分布

• 支持软聚类

• 具有清晰概率解释

• 可以估计样本概率密度

• 可以表达不同形状和方向的簇

• 可用于聚类、生成和异常检测

从通俗角度看:GMM 比 K 均值更“概率化”,也更能描述数据中的不确定性。

2、GMM 的主要局限

GMM 也有局限。

首先,需要提前指定高斯成分数量 K。

如果 K 过小,模型表达不足;如果 K 过大,可能过拟合。

其次,EM 算法可能陷入局部最优。

不同初始化可能得到不同结果。

再次,GMM 假设每个成分近似服从高斯分布。

如果真实数据结构非常复杂,GMM 可能不够灵活。

此外,高维数据中协方差估计可能不稳定,需要更多数据或正则化。

3、常见误解

误解一:GMM 只是 K 均值的复杂版本。

不准确。GMM 是概率生成模型,K 均值更偏距离聚类模型。

误解二:每个样本只能属于一个高斯成分。

不对。GMM 是软聚类,每个样本可以以不同概率属于多个成分。

误解三:高斯成分越多越好。

不一定。成分过多可能过拟合,也会增加计算复杂度。

误解四:GMM 只能用于聚类。

不对。它还可以用于密度估计、异常检测、生成建模和图像处理。

九、如何选择高斯成分数量

GMM 需要指定成分数量 K。选择 K 时,可以结合以下方法。

1、根据业务理解

如果已知数据大致有几个群体,可以先按业务经验设定 K。

例如,用户分群中可能先设为低、中、高三类。

2、尝试多个 K 并比较效果

可以训练不同 K 的 GMM,观察聚类结果、概率密度和可解释性。

3、使用信息准则

常见方法包括:

• AIC

• BIC

它们会在模型拟合能力和模型复杂度之间做平衡。

一般来说,K 越大,模型越复杂;信息准则可以帮助避免盲目增加成分数。

从实践角度看,K 的选择没有唯一答案,要结合数据分布、任务目标和解释需求。

十、Python 示例

下面用简化示例说明 GMM 的基本使用方式。

示例 1:生成二维混合数据

这个例子生成两组二维样本,用来模拟两个潜在高斯成分。

示例 2:使用 GMM 进行聚类

其中:

• n_components 表示高斯成分数量

• predict() 给出最可能成分

• predict_proba() 给出属于每个成分的概率

示例 3:查看 GMM 参数

这些参数分别对应:

• πₖ:每个成分的混合权重

• μₖ:每个成分的中心位置

• Σₖ:每个成分的形状和扩散程度

示例 4:用 GMM 做异常检测

score_samples() 会给出样本的对数概率密度。概率密度越低,说明样本越不像正常数据。

小结

高斯混合模型是一种用多个高斯分布加权组合来描述复杂数据分布的概率模型。它既可以进行软聚类,也可以进行密度估计和异常检测。与 K 均值相比,GMM 不只是给样本分配类别,还能给出属于每个成分的概率。对初学者而言,可以把 GMM 理解为:用多个“钟形分布”共同解释一批数据从哪里来的模型。

点赞有美意,赞赏是鼓励