高斯混合模型介绍
高斯混合模型(Gaussian Mixture Model,简称GMM)是一种经典的概率模型,被广泛应用于数据挖掘、模式识别和机器学习等领域。它采用多个高斯分布组合来对数据进行建模,每个高斯分布对应于数据中的一个子群体。GMM的核心思想是通过组合多个高斯分布来更准确地表达数据的概率分布。
高斯混合模型(GMM)是一种常用的概率模型,可以用于聚类分析、密度估计、特征生成和缺失数据填充等问题。它能将数据集分成多个聚类簇,估计数据点从多个高斯分布中生成的概率密度,生成与原始数据具有相似特征的样本,并填充缺失数据。使用GMM需要根据具体问题进行模型参数设置和算法调优。
高斯混合模型应用广泛,在许多情况下, EM算法是学习高斯混合模型 (Gaussian mixture model) 的有效方法。
高斯模型数学定义
高斯混合模型是指具有如下形式的概率分布模型:
P ( y ∣ θ ) = ∑ k = 1 K α k ϕ ( y ∣ θ k ) P(y \mid \theta)=\sum_{k=1}^K \alpha_k \phi\left(y \mid \theta_k\right) P(y∣θ)=k=1∑Kαkϕ(y∣θk)
其中, a k a_k ak 是系数, α k ⩾ 0 , ∑ k = 1 K α k = 1 ; ϕ ( y ∣ θ k ) \alpha_k \geqslant 0, \sum_{k=1}^K \alpha_k=1 ; \phi\left(y \mid \theta_k\right) αk⩾0,∑k=1Kαk=1;ϕ(y∣θk) 是高斯分布密度, θ k = ( μ k , σ k 2 ) \theta_k=\left(\mu_k, \sigma_k^2\right) θk=(μk,σk2),
ϕ ( y ∣ θ k ) = 1 2 π σ k exp ( − ( y − μ k ) 2 2 σ k 2 ) \phi\left(y \mid \theta_k\right)=\frac{1}{\sqrt{2 \pi} \sigma_k} \exp \left(-\frac{\left(y-\mu_k\right)^2}{2 \sigma_k^2}\right) ϕ(y∣θk)=2πσk1exp(−2σk2(y−μk)2)
称为第 k k k 个分模型。
假设观测数据 y 1 , y 2 , ⋯ , y N y_1, y_2, \cdots, y_N y1,y2,⋯,yN 由高斯混合模型生成,
P ( y ∣ θ ) = ∑ k = 1 K α k ϕ ( y ∣ θ k ) P(y \mid \theta)=\sum_{k=1}^K \alpha_k \phi\left(y \mid \theta_k\right) P(y∣θ)=k=1∑Kαkϕ(y∣θk)
其中, θ = ( α 1 , α 2 , ⋯ , α K ; θ 1 , θ 2 , ⋯ , θ K ) \theta=\left(\alpha_1, \alpha_2, \cdots, \alpha_K ; \theta_1, \theta_2, \cdots, \theta_K\right) θ=(α1,α2,⋯,αK;θ1,θ2,⋯,θK), 我们学习这个模型,即目标就是用 EM算法估计高斯混合模型的参数 θ 。 \theta_{\text {。 }} θ。
高斯混合模型求解过程
明确隐变量,写出完全数据的对数似然函数
可以设想观测数据 y j , j = 1 , 2 , … … , N y_j,j=1,2,……,N yj,j=1,2,……,N,是这样产生的:首先依据概率 α k \alpha_k αk选择第 k k k个高斯分布模型 ϕ ( y ∣ θ k ) \phi\left(y \mid \theta_k\right) ϕ(y∣θk),然后依据第 k k k个模型的概率分布生成观测数据 y j y_j yj 。这时观测数据 y j , j = 1 , 2 , . . . , N y_j,j=1,2,...,N yj,j=1,2,...,N,是已知的,反映观测数据 y j y_j yj来自第 k k k个分模型的数据是未知的, k = 1 , 2 , . . . , K k=1,2,...,K k=1,2,...,K,以隐变量 γ j k \gamma_{j k} γjk表示,其定义如下:
γ j k = { 1 , 第 j 个观测来自第 k 个分模型 0 , 否则 j = 1 , 2 , ⋯ , N ; k = 1 , 2 , ⋯ , K \begin{aligned} & \gamma_{j k}=\left\{\begin{array}{l} 1, \quad \text {第} j \text {个观测来自第} k \text {个分模型 } \\ 0, \text { 否则 } \end{array}\right. \\ & j=1,2, \cdots, N ; \quad k=1,2, \cdots, K \end{aligned} γjk={1,第j个观测来自第k个分模型 0, 否则 j=1,2,⋯,N;k=1,2,⋯,K
γ j k \gamma_{j k} γjk 是 0-1 随机变量。
有了观测数据 y j y_j yj 及末观测数据 γ j k \gamma_{j k} γjk, 那么完全数据是
( y j , γ j 1 , γ j 2 , ⋯ , γ j K ) , j = 1 , 2 , ⋯ , N \left(y_j, \gamma_{j 1}, \gamma_{j 2}, \cdots, \gamma_{j K}\right), \quad j=1,2, \cdots, N (yj,γj1,γj2,⋯,γjK),j=1,2,⋯,N
于是,可以写出完全数据的似然函数:
P ( y , γ ∣ θ ) = ∏ j = 1 N P ( y j , γ j 1 , γ j 2 , ⋯ , γ j K ∣ θ ) = ∏ k = 1 K ∏ j = 1 N [ α k ϕ ( y j ∣ θ k ) ] γ j k = ∏ k = 1 K α k n k ∏ j = 1 N [ ϕ ( y j ∣ θ k ) ] γ j k = ∏ k = 1 K α k n k ∏ j = 1 N [ 1 2 π σ k exp ( − ( y j − μ k ) 2 2 σ k 2 ) ] γ j k 式中, n k = ∑ j = 1 N γ j k , ∑ k = 1 K n k = N \begin{aligned} & P(y, \gamma \mid \theta)=\prod_{j=1}^N P\left(y_j, \gamma_{j 1}, \gamma_{j 2}, \cdots, \gamma_{j K} \mid \theta\right) \\ &=\prod_{k=1}^K \prod_{j=1}^N\left[\alpha_k \phi\left(y_j \mid \theta_k\right)\right]^{\gamma_{j k}} \\ &=\prod_{k=1}^K \alpha_k^{n_k} \prod_{j=1}^N\left[\phi\left(y_j \mid \theta_k\right)\right]^{\gamma_{j k}} \\ &=\prod_{k=1}^K \alpha_k^{n_k} \prod_{j=1}^N\left[\frac{1}{\sqrt{2 \pi} \sigma_k} \exp \left(-\frac{\left(y_j-\mu_k\right)^2}{2 \sigma_k^2}\right)\right]^{\gamma_{j k}} \\ & \text { 式中, } n_k=\sum_{j=1}^N \gamma_{j k}, \sum_{k=1}^K n_k=N \end{aligned} P(y,γ∣θ)=j=1∏NP(yj,γj1,γj2,⋯,γjK∣θ)=k=1∏Kj=1∏N[αkϕ(yj∣θk)]γjk=k=1∏Kαknkj=1∏N[ϕ(yj∣θk)]γjk=k=1∏Kαknkj=1∏N[2πσk1exp(−2σk2(yj−μk)2)]γjk 式中, nk=j=1∑Nγjk,k=1∑Knk=N
那么, 完全数据的对数似然函数为
log P ( y , γ ∣ θ ) = ∑ k = 1 K { n k log a k + ∑ j = 1 N γ j k [ log ( 1 2 π ) − log a k − 1 2 σ k 2 . ( y j − μ k ) 2 ] } \begin{aligned} \log P(y, \gamma \mid \theta)= & \sum_{k=1}^K\left\{n_k \log a_k+\sum_{j=1}^N \gamma_{j k}\left[\log \left(\frac{1}{\sqrt{2 \pi}}\right)-\log a_k-\frac{1}{2 {\sigma}_k^2} .\right.\right. \left.\left.\left(y_j-\mu_k\right)^2\right]\right\} \end{aligned} logP(y,γ∣θ)=k=1∑K{nklogak+j=1∑Nγjk[log(2π1)−logak−2σk21.(yj−μk)2]}
EM算法E步,写出Q函数
Q ( θ , θ ( i ) ) = E [ log p ( y , γ ∣ θ ) ∣ y , θ ( i ) ] = E { ∑ k = 1 K { n k log a k + ∑ j = 1 N γ j k [ log ( 1 2 π ) − log σ k − 1 2 σ k 2 ( y j − μ k ) 2 ] } } = ∑ k = 1 K { ∑ j = 1 N ( E γ j k ) log a k + ∑ j = 1 N ( E γ j k ) [ log ( 1 2 π ) − log σ k − 1 2 σ k 2 ( y j − μ k ) 2 ] } \begin{aligned} \mathbb{Q}\left(\theta, \theta^{(i)}\right) & =E\left[\log p(y, \gamma \mid \theta) \mid y, \theta^{(i)}\right] \\ & =E\left\{\sum _ { k = 1 } ^ { K } \left\{n_k \log a_k+\sum_{j=1}^N \gamma_{j k}\left[\log \left(\frac{1}{\sqrt{2 \pi}}\right)-\log \sigma_k-\frac{1}{2 \sigma_k^2} \left(y_j-\mu_k\right)^2 \right] \right \} \right \}\\ & =\sum_{k=1}^K\left\{\sum_{j=1}^N\left(E_{\gamma_{j k}}\right) \log a_k+\sum_{j=1}^N\left(E_{\gamma_{j k}}\right)\left[\log \left(\frac{1}{\sqrt{2 \pi}}\right)-\log \sigma_k-\frac{1}{2 \sigma_k^2} \left(y_j-\mu_k\right)^2\right]\right\} \end{aligned} Q(θ,θ(i))=E[logp(y,γ∣θ)∣y,θ(i)]=E{k=1∑K{nklogak+j=1∑Nγjk[log(2π1)−logσk−2σk21(yj−μk)2]}}=k=1∑K{j=1∑N(Eγjk)logak+j=1∑N(Eγjk)[log(2π1)−logσk−2σk21(yj−μk)2]}
这里我们先令
γ ^ j k = E γ j k , n k = ∑ j = 1 N E γ k j \begin{aligned} & \hat{\gamma}_{j k}=E_{\gamma_{j k}}, n_k=\sum_{j=1}^N E_{\gamma_{k j}} \end{aligned} γ^jk=Eγjk,nk=j=1∑NEγkj
这里针对 E γ j k E_{\gamma_{j k}} Eγjk的计算进行推导如下:
γ ^ j k = E ( γ j k ∣ y , θ ) = 1 ⋅ P ( γ j k = 1 ∣ y , θ ) + 0 ⋅ P ( γ j k = 0 ∣ y , θ ) = P ( Y j k = 1 , y , θ ) P ( y , θ ) 上下同时除以 P ( θ ) = P ( Y j k = 1 , y , θ ) / P ( θ ) P ( y , θ ) / P ( θ ) = P ( γ j k = 1 , y ∣ θ ) P ( y ∣ θ ) \begin{aligned} \hat{\gamma}_{j k} & =E\left(\gamma_{j k} \mid y, \theta\right)=1 \cdot P\left(\gamma_{j k}=1 \mid y, \theta\right) +0 \cdot P\left(\gamma_{j k}=0 \mid y, \theta\right) \\ & =\frac{P\left(Y_{j k}=1, y, \theta\right) }{P(y, \theta) } \\ &上下同时除以P(\theta)\\ & =\frac{P\left(Y_{j k}=1, y, \theta\right) / P(\theta)}{P(y, \theta) / P(\theta)} \\ & =\frac{P\left(\gamma_{j k}=1, y \mid \theta\right)}{P(y \mid \theta)} \end{aligned} γ^jk=E(γjk∣y,θ)=1⋅P(γjk=1∣y,θ)+0⋅P(γjk=0∣y,θ)=P(y,θ)P(Yjk=1,y,θ)上下同时除以P(θ)=P(y,θ)/P(θ)P(Yjk=1,y,θ)/P(θ)=P(y∣θ)P(γjk=1,y∣θ)
这里利用边缘概率公式对分母进行分解
= P ( γ j k = 1 , y ∣ θ ) ∑ k p ( γ j k = 1 , y ∣ θ ) = P ( y j ∣ θ , γ j k = 1 ) ⋅ p ( γ j k = 1 ∣ θ ) ∑ k p ( y j ∣ θ , γ j k = 1 ) ⋅ p ( γ j k = 1 ∣ θ ) = a k ϕ ( y ∣ θ ) ∑ a k ϕ ( y ∣ θ ) \begin{aligned} & =\frac{P\left(\gamma_{j k}=1, y \mid \theta\right)}{\sum_k p\left(\gamma_{j k}=1, y \mid \theta\right)} \\ & =\frac{P\left(y_j \mid \theta , \gamma_{j k}=1\right) \cdot p\left(\gamma_{j k}=1 \mid \theta\right)}{\sum_k p\left(y_j \mid \theta , \gamma_{j k}=1\right) \cdot p\left(\gamma_{j k}=1 \mid \theta\right)} \\ & =\frac{a_k \phi(y \mid \theta)}{\sum a_k \phi(y \mid \theta)} \end{aligned} =∑kp(γjk=1,y∣θ)P(γjk=1,y∣θ)=∑kp(yj∣θ,γjk=1)⋅p(γjk=1∣θ)P(yj∣θ,γjk=1)⋅p(γjk=1∣θ)=∑akϕ(y∣θ)akϕ(y∣θ)
将 E γ j k E_{\gamma_{j k}} Eγjk和 n k n_k nk代入得
Q ( θ , θ ( i ) ) = ∑ k = 1 K { n k log a k + ∑ j = 1 N γ ^ j k [ log ( 1 2 π ) . − log σ k − 1 2 σ k 2 ( y j − μ k ) 2 ] } \begin{aligned} Q\left(\theta, \theta^{(i)}\right)=\sum_{k=1}^K \left\{ n _ { k } \log a_k+\sum_{j=1}^N \hat{\gamma}_{j k}\left[\log \left(\frac{1}{\sqrt{2 \pi}}\right)\right.\right.. \left.\left.-\log \sigma_k-\frac{1}{2 \sigma_k^2}\left(y_j-\mu_k\right)^2\right]\right\} \end{aligned} Q(θ,θ(i))=k=1∑K{nklogak+j=1∑Nγ^jk[log(2π1).−logσk−2σk21(yj−μk)2]}
EM算法M步
迭代的M步是求函数 Q ( θ , θ ( i ) ) Q(\theta,\theta ^{(i)}) Q(θ,θ(i))对 θ \theta θ的极大值,即新一轮迭代的参数:
θ ( i + 1 ) = arg max θ Q ( θ , θ ( i ) ) \theta^{(i+1)}=\arg \max _\theta Q\left(\theta, \theta^{(i)}\right) θ(i+1)=argθmaxQ(θ,θ(i))
分别对 Q Q Q函数的三个参数 μ ^ k 、 σ k 2 、 α ^ k \hat{\mu}_k 、\sigma_k^2、\hat{\alpha}_k μ^k、σk2、α^k求偏导并令其等于0,解得三个参数的表达式:
μ ^ k = ∑ j = 1 N γ j k y j ∑ j = 1 N γ j k , k = 1 , 2 , … , K σ k 2 = ∑ j = 1 N γ j k ( y j − μ k ) 2 ∑ j = 1 N γ ^ j k , k = 1 , 2 , ⋯ , K α ^ k = n k N = ∑ j = 1 N γ j k N , k = 1 , 2 , ⋯ , K \begin{gathered} \hat{\mu}_k=\frac{\sum_{j=1}^N \gamma_{j k} y_j}{\sum_{j=1}^N \gamma_{j k}}, k=1,2, \ldots, K \\ \sigma_k^2=\frac{\sum_{j=1}^N \gamma_{j k}\left(y_j-\mu_k\right)^2}{\sum_{j=1}^N \hat{\gamma}_{j k}}, \quad k=1,2, \cdots, K \\ \hat{\alpha}_k=\frac{n_k}{N}=\frac{\sum_{j=1}^N \gamma_{j k}}{N}, \quad k=1,2, \cdots, K \end{gathered} μ^k=∑j=1Nγjk∑j=1Nγjkyj,k=1,2,…,Kσk2=∑j=1Nγ^jk∑j=1Nγjk(yj−μk)2,k=1,2,⋯,Kα^k=Nnk=N∑j=1Nγjk,k=1,2,⋯,K
其中 γ j k \gamma_{j k} γjk和 n k n_k nk的计算方法在前面E步中给出,即 γ j k = a k ϕ ( y ∣ θ ) ∑ a k ϕ ( y ∣ θ ) \gamma_{j k}=\frac{a_k \phi(y \mid \theta)}{\sum a_k \phi(y \mid \theta)} γjk=∑akϕ(y∣θ)akϕ(y∣θ), n k = ∑ j = 1 N γ k j n_k=\sum_{j=1}^N \gamma_{k j} nk=∑j=1Nγkj
求得的参数进入下一轮迭代,重复计算指导似然函数值不再有明显变化为止。
以上为高斯混合模型的EM算法全部内容,更多EM算法相关内容可查看文末参考资料进行了解,感谢您的阅读。
参考资料
[1].EM算法Q函数推导过程详解
[2].EM算法求解三硬币模型参数推导