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π ​σ1​exp(−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​∣Σ∣21​1​exp(−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​∣21​1​exp(−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. 先固定一个变量使整体函数变为凸优化函数,求导得到最值
  2. 固定步骤 1 中求得的最优参数,通过最优化方法更新步骤 1 中固定的变量
  3. 若达到停止条件,则停止更新;否则,重复步骤 1 和步骤 2

将 EM 算法用于高斯混合模型,其基本步骤为:

  1. 初始随机选择各参数的值
  2. E 步骤:根据当前的参数,计算每个数据点由每个分模型生成的概率
  3. M 步骤:根据 E 步骤生成的概率,来优化每个分模型的均值 μ \mu μ、方差 σ \sigma σ 和权重 α \alpha α
  4. 重复 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​γjk​p(Γ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∏K​N(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γjk​​N(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∏N​k=1∏K​αkγjk​​N(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∑N​k=1∑K​(γjk​lnαk​+γjk​lnN(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​))=−2D​ln(2π)−21​ln∣Σ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​γjk​xj​​=∑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​γjk​xj​​=∑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=1K​P(γjk​=1,xj​∣θ)P(γjk​=1,xj​∣θ)​=∑k=1K​P(xj​∣γjk​=1,θ)P(γjk​=1∣θ)P(xj​∣γjk​=1,θ)P(γjk​=1∣θ)​=∑k=1K​αk​N(xj​∣μk​,Σk​)αk​N(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​αk​N(xj​∣μk​,Σk​)αk​N(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​γjk​xj​​,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)相关推荐

  1. 【机器学习之高斯混合模型(Gaussian Mixed Model,GMM) 】

    文章目录 前言 一.高斯混合模型(Gaussian Mixed Model,GMM) 是什么? 二.详解GMM 1.初步原理 2.EM算法 3.深读原理 3.GMM(高斯混合模型)和K-means的比 ...

  2. 高斯混合模型Gaussian Mixture Model (GMM)——通过增加 Model 的个数,我们可以任意地逼近任何连续的概率密分布...

    从几何上讲,单高斯分布模型在二维空间应该近似于椭圆,在三维空间上近似于椭球.遗憾的是在很多分类问题中,属于同一类别的样本点并不满足"椭圆"分布的特性.这就引入了高斯混合模型.--可 ...

  3. 高斯-赛得尔迭代式 c++_高斯混合模型(Gaussian Mixture Model)与EM算法原理(一)

    高斯混合模型(Gaussian Mixture Model)是机器学习中一种常用的聚类算法,本文介绍了其原理,并推导了其参数估计的过程.主要参考Christopher M. Bishop的<Pa ...

  4. 详解EM算法与混合高斯模型(Gaussian mixture model, GMM)

    最近在看晓川老(shi)师(shu)的博士论文,接触了混合高斯模型(Gaussian mixture model, GMM)和EM(Expectation Maximization)算法,不禁被论文中 ...

  5. 高斯混合模型(GaussianMixture Model, GMM)聚类、可视化最优协方差形式、通过TSNE进行结果可视化分析、抽取核心特征因子

    高斯混合模型模型: sklearn.mixture.GaussianMixture 混合高斯模型(Gaussian Mixture Model,简称GMM)是用高斯概率密度函数(正态分布曲线)精确地量 ...

  6. 语音识别学习日志 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 ...

  7. 高斯混合模型(Gaussian Mixture Model)

    混 合 模 型 使 我 们 能 够 一 瞥 以 后 会 用 到 的 一 个 非 常 重 要 的 概 念 -- 潜 变 量(latent variable).潜变量是我们不能直接观测到的随机变量.

  8. 混合高斯模型(Gaussian Mixture Model,GMM)

    高斯混合聚类和k 均值算法(k-means)都属于原型聚类,但与k均值用原型向量来刻画聚类结构不同,高斯混合聚类采用概率模型来表达聚类原型. 一.混合模型(Mixture Model) 混合模型是一个 ...

  9. 聚类(1)——混合高斯模型 Gaussian Mixture Model

    聚类系列: 聚类(序)----监督学习与无监督学习 聚类(1)----混合高斯模型 Gaussian Mixture Model 聚类(2)----层次聚类 Hierarchical Clusteri ...

最新文章

  1. adminlte+layui框架搭建3 - layui弹出层
  2. leetcode算法题--最优除法
  3. PostgreSQL · 特性介绍 · 全文搜索介绍
  4. 基于Windows Server 2008 R2的WSFC实现SQL Server 2012高可用性组(AlwaysOn Group)
  5. bat命令 修改ini文件内容_关于mysql使用中文乱码;mysql修改ini文件无法启动;以及mysql卸载无法安装的一系列问题说明。...
  6. python自动化办公实例展示_python自动化办公?学这些就够用了
  7. python自动化测试报告 之 allure_Pytest+ Allure + Jenkins 自动化测试报告
  8. matlab根据数据生成实时动画,Matlab 坐标图动画,动态显示数据
  9. 统计单词个数 状态机方法
  10. python pdb查看变量值_如何用pdb进行python调试
  11. 恒流源驱动电路 随笔一
  12. 虚拟机下面装XP系统、安装ensp的步骤及使用ensp过程中所遇问题的解决
  13. 微软严厉抨击谷歌与雅虎日本达成搜索合作交易
  14. widows 系统下调试 ios webview里的H5页面
  15. Mezzanine 修改默认主页
  16. 动态使用element-plus 的图标
  17. 响应式布局——视口viewport和常用单位
  18. 2021牛客寒假算法基础集训营1 E.三棱锥之刻
  19. php 顿号,一字一顿用逗号、顿号、破折号还是省略号?
  20. hive之窗口函数理解与实践

热门文章

  1. Linux安装高版本tshark(3.x版本)
  2. 实施 ORM 的两项要旨:泛型和反射
  3. Vim查找、替换与删除常用命令
  4. 10年观察1000家企业,我发现干大事的老板,都有4个特质
  5. Java中日志的使用
  6. 基于VMD变分模态分解算法Python程序
  7. ERP的工单(MO)
  8. C++四种cast的详细介绍
  9. python朴素贝叶斯对wine_基于朴素贝叶斯对Wine数据集分类
  10. 最常用的 Linux 命令都不会,你怎么敢去面试?