十一、高斯混合模型(Gaussian Mixed Model, GMM)
1 高斯模型
1.1 单高斯模型
当样本数据 X X X 是一维数据时, X X X 服从高斯分布是指其概率密度函数(Probability Density Function)可以用下面的式子表示:
P ( x ∣ θ ) = 1 2 π σ exp ( − ( x − μ ) 2 2 σ 2 ) P(x|\theta)=\frac{1}{\sqrt{2\pi} \sigma} \exp (-\frac{(x-\mu)^2}{2\sigma^2}) P(x∣θ)=2π σ1exp(−2σ2(x−μ)2)
其中, μ \mu μ 为数据均值(期望), σ \sigma σ 为数据标准差(Standard Deviation)。
当样本数据 X X X 是多维数据时, X X X 服从高斯分布是指其概率密度函数(Probability Density Function)可以用下面的式子表示:
P ( x ∣ θ ) = 1 ( 2 π ) D 2 ∣ Σ ∣ 1 2 exp ( − ( x − μ ) T Σ − 1 ( x − μ ) 2 ) P(x|\theta)=\frac{1}{(2\pi)^{\frac{D}{2}} |\Sigma|^{\frac{1}{2}}} \exp (-\frac{(x-\mu)^T \Sigma^{-1} (x-\mu)}{2}) P(x∣θ)=(2π)2D∣Σ∣211exp(−2(x−μ)TΣ−1(x−μ))
其中, μ \mu μ 为数据均值(期望), σ \sigma σ 为数据标准差(Standard Deviation), D D D 为数据维度。
1.2 高斯模型混合模型
高斯混合模型可以看做是由 K K K 个单高斯模型组合而成的模型,其定义为:
高斯混合模型是指具有如下形式的概率分布模型:
P ( x ∣ θ ) = ∑ k = 1 K α k ϕ ( x ∣ θ k ) P(x|\theta)=\sum_{k=1}^{K}\alpha_k \phi(x|\theta_k) P(x∣θ)=k=1∑Kαkϕ(x∣θk)
其中, α k \alpha_k αk 是系数, α k ≥ 0 \alpha_k \geq 0 αk≥0, ∑ k = 1 K α k = 1 \sum_{k=1}^{K}\alpha_k=1 ∑k=1Kαk=1, ϕ ( x ∣ θ k ) \phi(x|\theta_k) ϕ(x∣θk) 是高斯分布, θ k = ( μ k , Σ k 2 ) \theta_k=(\mu_k,\Sigma_k^2) θk=(μk,Σk2)
ϕ ( x ∣ θ k ) = 1 ( 2 π ) D 2 ∣ Σ k ∣ 1 2 exp ( − ( x − μ k ) T Σ k − 1 ( x − μ k ) 2 ) \phi(x|\theta_k)=\frac{1}{(2\pi)^{\frac{D}{2}} |\Sigma_k|^{\frac{1}{2}}} \exp (-\frac{(x-\mu_k)^T \Sigma_k^{-1} (x-\mu_k)}{2}) ϕ(x∣θk)=(2π)2D∣Σk∣211exp(−2(x−μk)TΣk−1(x−μk))
称为第 k k k 个分模型
高斯混合模型是一个生成式模型,可以这样理解数据的生成过程:假设一个最简单的情况,即只有两个一维标准高斯分布的分模型 N ( 0 , 1 ) N(0,1) N(0,1) 和 N ( 2 , 1 ) N(2,1) N(2,1) ,这两个分布的权重分别为 0.7 和 0.3,那么在生成一个数据点时,先按照 0.7 和 0.3 的概率随机选择一个分布,比如选择的是第一个分布 N ( 0 , 1 ) N(0,1) N(0,1),那么下一步就是按照 N ( 0 , 1 ) N(0,1) N(0,1) 生成一个数据点。每一个点的生成过程都是互相独立的,不断循环,就生成了所有的数据点。
2 高斯混合模型与 EM 算法
2.1 基本思想
高斯混合模型的核心思想是: 假设数据可以看作是从多个高斯分布中生成出来的,在该假设下,每个单独的分模型都是标准高斯模型,其均值 μ k \mu_k μk 和方差 σ k \sigma_k σk 是待估计的参数,每个分模型还有一个需要求解的参数 α k \alpha_k αk,可以理解为该分布的权重或生成数据的概率。
通常,高斯混合模型的求解是在给定一系列数据点的情况下,求得最佳的 K K K 个高斯分模型。因为问题的本质,是求解最佳的均值 μ \mu μ、方差 σ \sigma σ 和权重 α \alpha α,这类问题通常是用最大似然估计来求解的,但在这里,如果直接用最大似然估计,得到的是一个复杂的非凸函数,目标函数是和的对数,难以展开和求偏导。
高斯混合模型通常是用 EM 算法来求解该优化问题的,EM 算法的基本思想是:
- 先固定一个变量使整体函数变为凸优化函数,求导得到最值
- 固定步骤 1 中求得的最优参数,通过最优化方法更新步骤 1 中固定的变量
- 若达到停止条件,则停止更新;否则,重复步骤 1 和步骤 2
将 EM 算法用于高斯混合模型,其基本步骤为:
- 初始随机选择各参数的值
- E 步骤:根据当前的参数,计算每个数据点由每个分模型生成的概率
- M 步骤:根据 E 步骤生成的概率,来优化每个分模型的均值 μ \mu μ、方差 σ \sigma σ 和权重 α \alpha α
- 重复 E 步骤和 M 步骤直到收敛。
2.2 求解过程
1、引入隐变量
首先,我们定义隐变量 γ j k \gamma_{jk} γjk,它的取值只能是 1 或者 0,其具体含义如下:
- 取值为 1:第 j j j 个数据来自于第 k k k 个高斯分布
- 取值为 0:第 j j j 个数据不来自于第 k k k 个高斯分布
那么,每个数据点都对应于一个向量变量 Γ j = { γ j 1 , ⋯ , γ j K } \Gamma_j=\{\gamma_{j1},\cdots,\gamma_{jK}\} Γj={γj1,⋯,γjK},因为GMM 中的各个高斯分布相互独立,且 α k \alpha_k αk 可以看作是数据来自第 k k k 个高斯分布的概率,因此可以通过连乘得到整个隐变量 Γ j \Gamma_j Γj 的先验概率分布,则有:
∑ k = 1 K γ j k = 1 p ( Γ j ) = ∏ k = 1 K α k γ j k \begin{aligned} \sum_{k=1}^{K}\gamma_{jk} &=1 \\ p(\Gamma_j) &= \prod_{k=1}^K \alpha_k^{\gamma_{jk}} \end{aligned} k=1∑Kγjkp(Γj)=1=k=1∏Kαkγjk
2、得到所有数据的似然函数
对于每个样本数据 x j x_j xj,在已知其是由哪个高斯分布生成的之后,那么它服从的概率分布即为:
p ( x j ∣ γ j k = 1 ; θ ) = N ( x j ∣ μ k , Σ k ) p(x_j|\gamma_{jk}=1;\theta)=N(x_j|\mu_k,\Sigma_k) p(xj∣γjk=1;θ)=N(xj∣μk,Σk)
因为这些高斯分布之间互相独立,因此,可以写作:
p ( x j ∣ Γ j ; θ ) = ∏ k = 1 K N ( x j ∣ μ k , Σ k ) γ j k p(x_j|\Gamma_{j};\theta)=\prod_{k=1}^K N(x_j|\mu_k,\Sigma_k)^{\gamma_{jk}} p(xj∣Γj;θ)=k=1∏KN(xj∣μk,Σk)γjk
这样就得到了已知 Γ j \Gamma_j Γj 的情况下单个数据的后验概率分布,结合之前得到的 Γ j \Gamma_j Γj 的先验概率分布,则单个样本的似然函数为:
p ( x j , Γ j ∣ θ ) = ∏ k = 1 K α k γ j k N ( x j ∣ μ k , Σ k ) γ j k p(x_j,\Gamma_{j}|\theta)=\prod_{k=1}^K \alpha_k^{\gamma_{jk}} N(x_j|\mu_k,\Sigma_k)^{\gamma_{jk}} p(xj,Γj∣θ)=k=1∏KαkγjkN(xj∣μk,Σk)γjk
则,所有样本点的似然函数为:
p ( x , Γ j ∣ θ ) = ∏ j = 1 N ∏ k = 1 K α k γ j k N ( x j ∣ μ k , σ k ) γ j k p(x,\Gamma_{j}|\theta)=\prod_{j=1}^N \prod_{k=1}^K \alpha_k^{\gamma_{jk}} N(x_j|\mu_k,\sigma_k)^{\gamma_{jk}} p(x,Γj∣θ)=j=1∏Nk=1∏KαkγjkN(xj∣μk,σk)γjk
取对数,则对数似然函数为:
ln p ( x , Γ j ∣ θ ) = ∑ j = 1 N ∑ k = 1 K ( γ j k ln α k + γ j k ln N ( x j ∣ μ k , Σ k ) ) \ln p(x,\Gamma_{j}|\theta)=\sum_{j=1}^N \sum_{k=1}^K (\gamma_{jk} \ln \alpha_k+\gamma_{jk} \ln N(x_j|\mu_k,\Sigma_k)) lnp(x,Γj∣θ)=j=1∑Nk=1∑K(γjklnαk+γjklnN(xj∣μk,Σk))
3、计算各个高斯分布的参数
首先,根据单高斯的向量形式的概率密度函数对 ln N ( x j ∣ μ k , Σ k ) ) \ln N(x_j|\mu_k,\Sigma_k)) lnN(xj∣μk,Σk)) 进行展开:
ln N ( x j ∣ μ k , Σ k ) ) = − D 2 ln ( 2 π ) − 1 2 ln ∣ Σ k ∣ − 1 2 ( x j − μ k ) T Σ k − 1 ( x j − μ k ) \ln N(x_j|\mu_k,\Sigma_k))=-\frac{D}{2} \ln(2\pi) - \frac{1}{2} \ln | \Sigma_k |-\frac{1}{2} (x_j-\mu_k)^T \Sigma_k^{-1}(x_j-\mu_k) lnN(xj∣μk,Σk))=−2Dln(2π)−21ln∣Σk∣−21(xj−μk)TΣk−1(xj−μk)
假设隐变量 γ j k \gamma_{jk} γjk 的值已知,则对似然函数分别对 α k \alpha_k αk 和 Σ k \Sigma_k Σk 求偏导,并令偏导为零,则可以得到:
μ k = ∑ j = 1 N ∑ k = 1 K γ j k x j ∑ j = 1 N ∑ k = 1 K γ j k Σ k = ∑ j = 1 N ∑ k = 1 K γ j k ( x j − μ k ) ( x j − μ k ) T ∑ j = 1 N ∑ k = 1 K γ j k \begin{aligned} \mu_k &=\frac{\sum_{j=1}^N \sum_{k=1}^K \gamma_{jk} x_j}{\sum_{j=1}^N \sum_{k=1}^K \gamma_{jk}} \\ \Sigma_k &= \frac{\sum_{j=1}^N \sum_{k=1}^K \gamma_{jk} (x_j-\mu_k)(x_j-\mu_k)^T}{\sum_{j=1}^N \sum_{k=1}^K \gamma_{jk}} \end{aligned} μkΣk=∑j=1N∑k=1Kγjk∑j=1N∑k=1Kγjkxj=∑j=1N∑k=1Kγjk∑j=1N∑k=1Kγjk(xj−μk)(xj−μk)T
因为 γ j k \gamma_{jk} γjk 只在 k k k 处取值为 1,其他取值均为 0,因此,上面两式可以简化为:
μ k = ∑ j = 1 N γ j k x j ∑ j = 1 N γ j k Σ k = ∑ j = 1 N γ j k ( x j − μ k ) ( x j − μ k ) T ∑ j = 1 N γ j k \begin{aligned} \mu_k &=\frac{\sum_{j=1}^N \gamma_{jk} x_j}{\sum_{j=1}^N \gamma_{jk}} \\ \Sigma_k &= \frac{\sum_{j=1}^N \gamma_{jk} (x_j-\mu_k)(x_j-\mu_k)^T}{\sum_{j=1}^N \gamma_{jk}} \end{aligned} μkΣk=∑j=1Nγjk∑j=1Nγjkxj=∑j=1Nγjk∑j=1Nγjk(xj−μk)(xj−μk)T
下面对 α k \alpha_k αk 进行求解,因为 ∑ k = 1 K α k = 1 \sum_{k=1}^{K}\alpha_k=1 ∑k=1Kαk=1,利用拉格朗日乘子法,结合似然函数和约束条件对 α k \alpha_k αk 求偏导,有:
α k = ∑ j = 1 N γ j k − λ \alpha_k=\frac{\sum_{j=1}^N \gamma_{jk}}{-\lambda} αk=−λ∑j=1Nγjk
因为 ∑ k = 1 K α k = 1 \sum_{k=1}^{K} \alpha_k=1 ∑k=1Kαk=1,所以可以得到:
λ = − N \lambda=-N λ=−N
因此,
α k = ∑ j = 1 N γ j k N \alpha_k=\frac{\sum_{j=1}^N \gamma_{jk}}{N} αk=N∑j=1Nγjk
4、得到隐变量的估计公式
根据 EM 算法,选择需要根据当前参数的取值求隐变量的期望,即求 E { γ j k ∣ x , θ } E\{\gamma_{jk}|x,\theta\} E{γjk∣x,θ}
E { γ j k ∣ x , θ } = P ( γ j k = 1 ∣ x , θ ) = P ( γ j k = 1 , x j ∣ θ ) ∑ k = 1 K P ( γ j k = 1 , x j ∣ θ ) = P ( x j ∣ γ j k = 1 , θ ) P ( γ j k = 1 ∣ θ ) ∑ k = 1 K P ( x j ∣ γ j k = 1 , θ ) P ( γ j k = 1 ∣ θ ) = α k N ( x j ∣ μ k , Σ k ) ∑ k = 1 K α k N ( x j ∣ μ k , Σ k ) \begin{aligned} E\{\gamma_{jk}|x,\theta\} &= P(\gamma_{jk}=1|x,\theta) \\ &= \frac{P(\gamma_{jk}=1,x_j|\theta)}{\sum_{k=1}^{K} P(\gamma_{jk}=1,x_j|\theta)} \\ &= \frac{P(x_j|\gamma_{jk}=1,\theta)P(\gamma_{jk}=1|\theta)}{\sum_{k=1}^{K} P(x_j|\gamma_{jk}=1,\theta)P(\gamma_{jk}=1|\theta)} \\ &= \frac{\alpha_k N(x_j|\mu_k,\Sigma_k)}{\sum_{k=1}^{K} \alpha_k N(x_j|\mu_k,\Sigma_k)} \end{aligned} E{γjk∣x,θ}=P(γjk=1∣x,θ)=∑k=1KP(γjk=1,xj∣θ)P(γjk=1,xj∣θ)=∑k=1KP(xj∣γjk=1,θ)P(γjk=1∣θ)P(xj∣γjk=1,θ)P(γjk=1∣θ)=∑k=1KαkN(xj∣μk,Σk)αkN(xj∣μk,Σk)
5、根据 EM 算法进行迭代
重复计算直到收敛,常用的收敛条件如 ∥ θ i + 1 − θ i ∥ < ε \|\theta_{i+1}-\theta_{i}\|<\varepsilon ∥θi+1−θi∥<ε,其中 ε \varepsilon ε 是个很小的正数。
2.3 计算过程总结
(1)初始化参数
(2)E step
计算 每个数据 x j x_j xj 来自于子模型 k k k 的概率
γ j k = α k N ( x j ∣ μ k , Σ k ) ∑ k = 1 K α k N ( x j ∣ μ k , Σ k ) , j = 1 , 2 , ⋯ , N ; k = 1 , 2 , ⋯ , K \gamma_{jk}=\frac{\alpha_k N(x_j|\mu_k,\Sigma_k)}{\sum_{k=1}^{K} \alpha_k N(x_j|\mu_k,\Sigma_k)}, j=1,2,\cdots,N; k=1,2,\cdots,K γjk=∑k=1KαkN(xj∣μk,Σk)αkN(xj∣μk,Σk),j=1,2,⋯,N;k=1,2,⋯,K
(3)M step
计算模型参数
μ k = ∑ j = 1 N γ j k x j ∑ j = 1 N γ j k , k = 1 , 2 , ⋯ , K Σ k = ∑ j = 1 N γ j k ( x j − μ k ) ( x j − μ k ) T ∑ j = 1 N γ j k , k = 1 , 2 , ⋯ , K α k = ∑ j = 1 N γ j k N , k = 1 , 2 , ⋯ , K \begin{aligned} \mu_k &=\frac{\sum_{j=1}^N \gamma_{jk} x_j}{\sum_{j=1}^N \gamma_{jk}}, k=1,2,\cdots,K \\ \Sigma_k &= \frac{\sum_{j=1}^N \gamma_{jk} (x_j-\mu_k)(x_j-\mu_k)^T}{\sum_{j=1}^N \gamma_{jk}}, k=1,2,\cdots,K \\ \alpha_k&=\frac{\sum_{j=1}^N \gamma_{jk}}{N}, k=1,2,\cdots,K \end{aligned} μkΣkαk=∑j=1Nγjk∑j=1Nγjkxj,k=1,2,⋯,K=∑j=1Nγjk∑j=1Nγjk(xj−μk)(xj−μk)T,k=1,2,⋯,K=N∑j=1Nγjk,k=1,2,⋯,K
(4)重复 E-step 和 M-step 直到收敛
收敛条件: ∥ θ i + 1 − θ i ∥ < ε \|\theta_{i+1}-\theta_{i}\|<\varepsilon ∥θi+1−θi∥<ε,其中 ε \varepsilon ε 是个很小的正数。
3 GMM 和 K-means 的对比
首先,总结一下这两种方法的基本步骤。
GMM
- 计算每个数据由每个分模型生成的概率
- 根据概率更新每个分模型的参数
- 迭代直到收敛
K-means
- 计算所有数据点和 K K K 个中心点的距离,取距离最近的点为该点所属的类
- 根据上一步的类别更新中心点的位置
- 迭代直到收敛
可以看出,两种方法有很多的 相同点:
- GMM 中数据点由每个分模型生成的概率就相当于 K-means 中距离的计算
- GMM 中根据概率计算高斯模型参数的过程就相当于 K-means 中计算分类点的位置
- 最后两种方法都是通过迭代来达到最优的
两种方法的 不同点 在于:
- GMM 模型给出的是每个数据点由每个分模型生成的概率,而 K-means 给出的是每个数据点属于哪个类别
十一、高斯混合模型(Gaussian Mixed Model, GMM)相关推荐
- 【机器学习之高斯混合模型(Gaussian Mixed Model,GMM) 】
文章目录 前言 一.高斯混合模型(Gaussian Mixed Model,GMM) 是什么? 二.详解GMM 1.初步原理 2.EM算法 3.深读原理 3.GMM(高斯混合模型)和K-means的比 ...
- 高斯混合模型Gaussian Mixture Model (GMM)——通过增加 Model 的个数,我们可以任意地逼近任何连续的概率密分布...
从几何上讲,单高斯分布模型在二维空间应该近似于椭圆,在三维空间上近似于椭球.遗憾的是在很多分类问题中,属于同一类别的样本点并不满足"椭圆"分布的特性.这就引入了高斯混合模型.--可 ...
- 高斯-赛得尔迭代式 c++_高斯混合模型(Gaussian Mixture Model)与EM算法原理(一)
高斯混合模型(Gaussian Mixture Model)是机器学习中一种常用的聚类算法,本文介绍了其原理,并推导了其参数估计的过程.主要参考Christopher M. Bishop的<Pa ...
- 详解EM算法与混合高斯模型(Gaussian mixture model, GMM)
最近在看晓川老(shi)师(shu)的博士论文,接触了混合高斯模型(Gaussian mixture model, GMM)和EM(Expectation Maximization)算法,不禁被论文中 ...
- 高斯混合模型(GaussianMixture Model, GMM)聚类、可视化最优协方差形式、通过TSNE进行结果可视化分析、抽取核心特征因子
高斯混合模型模型: sklearn.mixture.GaussianMixture 混合高斯模型(Gaussian Mixture Model,简称GMM)是用高斯概率密度函数(正态分布曲线)精确地量 ...
- 语音识别学习日志 2019-7-14 语音识别基础知识准备2 {EM算法与混合高斯模型(Gaussian mixture model, GMM)}
https://blog.csdn.net/lin_limin/article/details/81048411会对GMM和EM做详细介绍 本文参考: http://www.ituring.com.c ...
- 高斯混合模型(Gaussian Mixture Model)
混 合 模 型 使 我 们 能 够 一 瞥 以 后 会 用 到 的 一 个 非 常 重 要 的 概 念 -- 潜 变 量(latent variable).潜变量是我们不能直接观测到的随机变量.
- 混合高斯模型(Gaussian Mixture Model,GMM)
高斯混合聚类和k 均值算法(k-means)都属于原型聚类,但与k均值用原型向量来刻画聚类结构不同,高斯混合聚类采用概率模型来表达聚类原型. 一.混合模型(Mixture Model) 混合模型是一个 ...
- 聚类(1)——混合高斯模型 Gaussian Mixture Model
聚类系列: 聚类(序)----监督学习与无监督学习 聚类(1)----混合高斯模型 Gaussian Mixture Model 聚类(2)----层次聚类 Hierarchical Clusteri ...
最新文章
- adminlte+layui框架搭建3 - layui弹出层
- leetcode算法题--最优除法
- PostgreSQL · 特性介绍 · 全文搜索介绍
- 基于Windows Server 2008 R2的WSFC实现SQL Server 2012高可用性组(AlwaysOn Group)
- bat命令 修改ini文件内容_关于mysql使用中文乱码;mysql修改ini文件无法启动;以及mysql卸载无法安装的一系列问题说明。...
- python自动化办公实例展示_python自动化办公?学这些就够用了
- python自动化测试报告 之 allure_Pytest+ Allure + Jenkins 自动化测试报告
- matlab根据数据生成实时动画,Matlab 坐标图动画,动态显示数据
- 统计单词个数 状态机方法
- python pdb查看变量值_如何用pdb进行python调试
- 恒流源驱动电路 随笔一
- 虚拟机下面装XP系统、安装ensp的步骤及使用ensp过程中所遇问题的解决
- 微软严厉抨击谷歌与雅虎日本达成搜索合作交易
- widows 系统下调试 ios webview里的H5页面
- Mezzanine 修改默认主页
- 动态使用element-plus 的图标
- 响应式布局——视口viewport和常用单位
- 2021牛客寒假算法基础集训营1 E.三棱锥之刻
- php 顿号,一字一顿用逗号、顿号、破折号还是省略号?
- hive之窗口函数理解与实践