EM算法和高斯混合聚类

EM算法引言

在现实应用中,概率模型有时既含有观测变量(observable variable),又含有不能被观测到的变量,该变量称为隐变量(latent variable)。如果给定数据全都是观测变量,那么可以使用最大似然估计求解模型参数,但是在含有隐变量的情况下无法求解。EM算法就是用于求解在训练样本具有隐变量的情况下概率模型参数的最大似然估计。EM算法是对两种未知参数(隐变量分布和模型参数)交替优化的迭代算法,相当于在优化过程中,保持某一个变量不变,去优化另一个变量。首先给定模型参数,EM算法的每次迭代分为两步:E步,求隐变量的期望(expectation);M步,求模型参数的极大似然估计(maximization),所以这一算法称为期望极大算法(expectation maximization algorithm)。
实例:
在这里插入图片描述
从上面的例子中可以看出,参数的最大似然估计为 P ( y ∣ θ ) P(y|\theta) P(yθ),此时由于观测值 y y y θ \theta θ无直接关系,需要加入隐变量,即为:
P ( y ∣ θ ) = ∑ z P ( y , z ∣ θ ) = ∑ z P ( z ∣ θ ) P ( y ∣ z , θ ) = π p y ( 1 − p ) 1 − y + ( 1 − π ) q y ( 1 − q ) 1 − y P(y|\theta)=\sum_{z}P(y,z|\theta)=\sum_{z}P(z|\theta)P(y|z,\theta)\\ =\pi p^{y}(1-p)^{1-y}+(1-\pi)q^{y}(1-q)^{1-y} P(yθ)=zP(y,zθ)=zP(zθ)P(yz,θ)=πpy(1p)1y+(1π)qy(1q)1y
P ( y ∣ θ ) = ∑ z P ( y , z ∣ θ ) P(y|\theta)=\sum_{z}P(y,z|\theta) P(yθ)=zP(y,zθ)相当于全概公式。
在这里插入图片描述
将观测数据表示为 Y = ( Y 1 , Y 2 , . . . , Y n ) Y=(Y_{1},Y_{2},...,Y_{n}) Y=(Y1,Y2,...,Yn),隐藏数据表表示为 Z = ( Z 1 , Z 2 , . . . , Z N ) Z=(Z_{1},Z_{2},...,Z_{N}) Z=(Z1Z2,...,ZN),则观测数据的似然函数为:
P ( Y ∣ θ ) = ∑ Z P ( Z ∣ θ ) P ( Y ∣ Z , θ ) P(Y|\theta)=\sum_{Z}P(Z|\theta)P(Y|Z,\theta) P(Yθ)=ZP(Zθ)P(YZ,θ)
即:
P ( Y ∣ θ ) = ∏ j = 1 n [ π p y j ( 1 − p ) 1 − y j + ( 1 − π ) q y j ( 1 − q ) 1 − y j ] P(Y|\theta)=\prod_{j=1}^{n}[\pi p^{y_{j}}(1-p)^{1-y_{j}}+(1-\pi)q^{y_{j}}(1-q)^{1-y_{j}}] P(Yθ)=j=1n[πpyj(1p)1yj+(1π)qyj(1q)1yj]
求模型参数 θ ^ = arg ⁡ max ⁡ θ log ⁡ P ( Y ∣ θ ) \hat{\theta}=\arg\max_{\theta}\log P(Y|\theta) θ^=argmaxθlogP(Yθ)
上述问题没有解析解,只有通过迭代的方法求解,EM算法就是求解此问题的迭代算法。

EM算法推导

给定观测数据 Y = { Y ( i ) } i = 1 m Y=\{Y^{(i)} \}_{i=1}^{m} Y={Y(i)}i=1m,则模型的最大似然估计为:
L ( θ ) = ∑ i = 1 m log ⁡ P ( Y ( i ) ∣ θ ) = ∑ i = 1 m log ⁡ [ ∑ z P ( Y ( i ) ∣ z , θ ) P ( z ∣ θ ) ] L(\theta)=\sum_{i=1}^{m}\log{P(Y^{(i)}|\theta)}=\sum_{i=1}^{m}\log[\sum_{z}P(Y^{(i)}|z,\theta)P(z|\theta)] L(θ)=i=1mlogP(Y(i)θ)=i=1mlog[zP(Y(i)z,θ)P(zθ)]
L ( θ ) = log ⁡ P ( Y ∣ θ ) = log ⁡ ∑ Z P ( Y ∣ Z , θ ) P ( Z ∣ θ ) L(\theta)=\log{P(Y|\theta)}=\log\sum_{Z}P(Y|Z,\theta)P(Z|\theta) L(θ)=logP(Yθ)=logZP(YZ,θ)P(Zθ)
Jensen不等式:
在这里插入图片描述
EM算法通过逐步迭代最大化 L ( θ ) L(\theta) L(θ),假设第 i i i次迭代之后的估计值为 θ ( i ) \theta^{(i)} θ(i),我们希望新估计的值 θ \theta θ能使 L ( θ ) L(\theta) L(θ)增大逐步达到极大值。考虑两者的差值:
L ( θ ) − L ( θ ( i ) ) = log ⁡ ∑ Z P ( Y ∣ Z , θ ) P ( Z ∣ θ ) − log ⁡ P ( Y ∣ θ ( i ) ) = log ⁡ ∑ Z P ( Z ∣ Y , θ ( i ) ) P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) − log ⁡ P ( Y ∣ θ ( i ) ) L(\theta)-L(\theta^{(i)})=\log\sum_{Z}P(Y|Z,\theta)P(Z|\theta)-\log{P(Y|\theta^{(i)})} \\ =\log\sum_{Z}P(Z|Y,\theta^{(i)})\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})}-\log{P(Y|\theta^{(i)})} L(θ)L(θ(i))=logZP(YZ,θ)P(Zθ)logP(Yθ(i))=logZP(ZY,θ(i))P(ZY,θ(i))P(YZ,θ)P(Zθ)logP(Yθ(i))
上式中, ∑ Z P ( Z ∣ Y , θ ( i ) ) = 1 \sum_{Z}P(Z|Y,\theta^{(i)})=1 ZP(ZY,θ(i))=1,左式的log里面的值相当于 Z ∣ Y , θ ( i ) Z|Y,\theta^{(i)} ZY,θ(i)的期望。 E Z ∣ Y , θ ( i ) ( P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) ) = ∑ Z P ( Z ∣ Y , θ ( i ) ) P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) E_{Z|Y,\theta^{(i)}}(\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})})=\sum_{Z}P(Z|Y,\theta^{(i)})\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})} EZY,θ(i)(P(ZY,θ(i))P(YZ,θ)P(Zθ))=ZP(ZY,θ(i))P(ZY,θ(i))P(YZ,θ)P(Zθ)
由Jensen不等式可得:
log ⁡ E Z ∣ Y , θ ( i ) ( P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) ) ≥ E Z ∣ Y , θ ( i ) log ⁡ ( P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) ) \log E_{Z|Y,\theta^{(i)}}(\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})})\geq E_{Z|Y,\theta^{(i)}}\log{(\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})})} logEZY,θ(i)(P(ZY,θ(i))P(YZ,θ)P(Zθ))EZY,θ(i)log(P(ZY,θ(i))P(YZ,θ)P(Zθ))
所以可得到:
L ( θ ) − L ( θ ( i ) ) = log ⁡ [ ∑ Z P ( Z ∣ Y , θ ( i ) ) P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) ] − log ⁡ P ( Y ∣ θ ( i ) ) = log ⁡ ∑ Z P ( Z ∣ Y , θ ( i ) ) P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) P ( Y ∣ θ ( i ) ) ≥ ∑ Z P ( Z ∣ Y , θ ( i ) ) log ⁡ P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) P ( Y ∣ θ ( i ) ) L(\theta)-L(\theta^{(i)})=\log[\sum_{Z}P(Z|Y,\theta^{(i)})\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})}]-\log{P(Y|\theta^{(i)})}\\ =\log \sum_{Z}P(Z|Y,\theta^{(i)})\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})}\\ \geq \sum_{Z}P(Z|Y,\theta^{(i)})\log\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})} L(θ)L(θ(i))=log[ZP(ZY,θ(i))P(ZY,θ(i))P(YZ,θ)P(Zθ)]logP(Yθ(i))=logZP(ZY,θ(i))P(ZY,θ(i))P(Yθ(i))P(YZ,θ)P(Zθ)ZP(ZY,θ(i))logP(ZY,θ(i))P(Yθ(i))P(YZ,θ)P(Zθ)

B ( θ , θ ( i ) ) = L ( θ ( i ) ) + ∑ Z P ( Z ∣ Y , θ ( i ) ) log ⁡ P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) P ( Y ∣ θ ( i ) ) B(\theta,\theta^{(i)})=L(\theta^{(i)})+\sum_{Z}P(Z|Y,\theta^{(i)})\log\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})} B(θ,θ(i))=L(θ(i))+ZP(ZY,θ(i))logP(ZY,θ(i))P(Yθ(i))P(YZ,θ)P(Zθ)
θ = θ ( i ) \theta=\theta^{(i)} θ=θ(i)时,log项为0,此时 L ( θ ( i ) ) = B ( θ , θ ( i ) ) L(\theta^{(i)})=B(\theta,\theta^{(i)}) L(θ(i))=B(θ,θ(i))
可以得到目标函数的下界为:: L ( θ ) ≥ B ( θ , θ ( i ) ) L(\theta)\geq B(\theta,\theta^{(i)}) L(θ)B(θ,θ(i))
B ( θ , θ ( i ) ) B(\theta,\theta^{(i)}) B(θ,θ(i))越大,可以使得 L ( θ ) L(\theta) L(θ)的下界越大,因为在该次迭代中我们无法得到 L ( θ ) L(\theta) L(θ)的最大值,我们只能取下界的最大的值:
θ ( i + 1 ) = arg ⁡ max ⁡ θ B ( θ , θ ( i ) ) \theta^{(i+1)}=\arg\max_{\theta}B(\theta,\theta^{(i)}) θ(i+1)=argθmaxB(θ,θ(i))
对于上式可以省去常数项简化公式:
θ ( i + 1 ) = arg ⁡ max ⁡ θ ( L ( θ ( i ) ) + ∑ Z P ( Z ∣ Y , θ ( i ) ) log ⁡ P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) P ( Y ∣ θ ( i ) ) ) = arg ⁡ max ⁡ θ ( ∑ Z P ( Z ∣ Y , θ ( i ) ) log ⁡ P ( Y ∣ Z , θ ) P ( Z ∣ θ ) ) = arg ⁡ max ⁡ θ ( ∑ Z P ( Z ∣ Y , θ ( i ) ) log ⁡ P ( Y , Z ∣ θ ) ) = arg ⁡ max ⁡ θ E Z ∣ Y , θ ( i ) ( log ⁡ P ( Y , Z ∣ θ ) ) \theta^{(i+1)}=\arg\max_{\theta}(L(\theta^{(i)})+\sum_{Z}P(Z|Y,\theta^{(i)})\log\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})})\\ =\arg\max_{\theta}(\sum_{Z}P(Z|Y,\theta^{(i)})\log P(Y|Z,\theta)P(Z|\theta))\\ =\arg\max_{\theta}(\sum_{Z}P(Z|Y,\theta^{(i)})\log P(Y,Z|\theta))\\ =\arg\max_{\theta}E_{Z|Y,\theta^{(i)}}(\log P(Y,Z|\theta)) θ(i+1)=argθmax(L(θ(i))+ZP(ZY,θ(i))logP(ZY,θ(i))P(Yθ(i))P(YZ,θ)P(Zθ))=argθmax(ZP(ZY,θ(i))logP(YZ,θ)P(Zθ))=argθmax(ZP(ZY,θ(i))logP(Y,Zθ))=argθmaxEZY,θ(i)(logP(Y,Zθ))
令:
Q ( θ , θ ( i ) ) = E Z ∣ Y , θ ( i ) ( log ⁡ P ( Y , Z ∣ θ ) ) Q(\theta,\theta^{(i)})=E_{Z|Y,\theta^{(i)}}(\log P(Y,Z|\theta)) Q(θ,θ(i))=EZY,θ(i)(logP(Y,Zθ))
则:
θ ( i + 1 ) = arg ⁡ max ⁡ θ Q ( θ , θ ( i ) ) \theta^{(i+1)}=\arg\max_{\theta}Q(\theta,\theta^{(i)}) θ(i+1)=argθmaxQ(θ,θ(i))
该公式相当于EM算法对参数 θ \theta θ的一次迭代求解,通过不断求解下界的极大化值来逼近最大化似然函数。在迭代过程中, L ( θ ) L(\theta) L(θ)是不断增大的,但是EM算法并不能保证收敛到全局最优值。

EM算法总流程

1.初始化参数 θ 0 \theta^{0} θ0
2.E步:求似然函数关于 z z z的期望: Q ( θ , θ ( i ) ) = E Z ∣ Y , θ ( i ) ( log ⁡ P ( Y , Z ∣ θ ) Q(\theta,\theta^{(i)})=E_{Z|Y,\theta^{(i)}}(\log P(Y,Z|\theta) Q(θ,θ(i))=EZY,θ(i)(logP(Y,Zθ)
3.M步:更新 θ ( i + 1 ) = arg ⁡ max ⁡ θ Q ( θ , θ ( i ) ) \theta^{(i+1)}=\arg\max_{\theta}Q(\theta,\theta^{(i)}) θ(i+1)=argmaxθQ(θ,θ(i))
在这里插入图片描述

高斯混合聚类

EM算法作为一种求解思想,可以用于多种模型求解,高斯混合聚类是其典型应用。下图表明,在聚类中,一个高斯分布很难进行聚类,此时需要多个高斯分布进行聚类。
在这里插入图片描述
对于 n n n维空间中的随机变量 x \bm{x} x遵从多元高斯分布,其概率密度为:
p ( x ) = 1 ( 2 π ) n 2 ∣ Σ ∣ 1 2 exp ⁡ ( − 1 2 ( x − μ ) Σ − 1 ( x − μ ) T ) p(\bm{x})=\frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}}\exp{(-\frac{1}{2}(\bm{x-\mu})\Sigma^{-1}(\bm{x-\mu})^{T})} p(x)=(2π)2nΣ211exp(21(xμ)Σ1(xμ)T)
对于存在多个高斯分布的情况下,我们定义高斯混合分布:
p ( x ) = ∑ k = 1 K α k p ( x ∣ μ k , Σ k ) p(\bm{x})=\sum_{k=1}^{K}\alpha_{k}p(\bm{x}|\bm{\mu}_{k},\bm{\Sigma}_{k}) p(x)=k=1Kαkp(xμk,Σk)
该分布有 K K K个高斯分布组成,也就是一共有 K K K个簇。 α k = P ( k ) > 0 \alpha_{k}=P(k)>0 αk=P(k)>0为混合系数,表明选择第 i i i个成分的概率, ∑ i = 1 K α k = 1 \sum_{i=1}^{K}\alpha_{k}=1 i=1Kαk=1。某样本 x \bm{x} x对应第 k k k个成分的后验概率为:
P ( k ∣ x ) = p ( x ∣ μ k , Σ k ) p ( k ) p ( x ) = p ( x ∣ μ k , Σ k ) p ( k ) ∑ k = 1 K α k p ( x ∣ μ k , Σ k ) P(k|\bm{x})=\frac{p(\bm{x}|\bm{\mu}_{k},\bm{\Sigma}_{k})p(k)}{p(\bm{x})}=\frac{p(\bm{x}|\bm{\mu}_{k},\bm{\Sigma}_{k})p(k)}{\sum_{k=1}^{K}\alpha_{k}p(\bm{x}|\bm{\mu}_{k},\bm{\Sigma}_{k})} P(kx)=p(x)p(xμk,Σk)p(k)=k=1Kαkp(xμk,Σk)p(xμk,Σk)p(k)
给定数据集 D = { x 1 , x 2 , . . . , x m } D=\{\bm{x}_{1},\bm{x}_{2},...,\bm{x}_{m}\} D={x1,x2,...,xm},此时我们可以通过最大似然估计求解模型参数 { α k , μ k , Σ k } k = 1 K \{\alpha_{k},\bm{\mu}_{k},\bm{\Sigma}_{k}\}_{k=1}^{K} {αk,μk,Σk}k=1K.
p ( D ) = ∏ i = 1 m p ( x i ) = ∏ i = 1 m ∑ k = 1 K α k p ( x i ∣ μ k , Σ k ) p(D)=\prod_{i=1}^{m}p(\bm{x}_{i})=\prod_{i=1}^{m}\sum_{k=1}^{K}\alpha_{k}p(\bm{x}_{i}|\bm{\mu}_{k},\bm{\Sigma}_{k}) p(D)=i=1mp(xi)=i=1mk=1Kαkp(xiμk,Σk)
取对数似然函数:
L ( D ) = ∑ i = 1 m log ⁡ ∑ k = 1 K α k p ( x i ∣ μ k , Σ k ) L(D)=\sum_{i=1}^{m}\log\sum_{k=1}^{K}\alpha_{k}p(\bm{x}_{i}|\bm{\mu}_{k},\bm{\Sigma}_{k}) L(D)=i=1mlogk=1Kαkp(xiμk,Σk)
对于上述带有 log ⁡ ∑ \log\sum log的形式,从经验来说求导很困难,此时可以EM算法求解。
首先明确隐变量
观测数据是已知的,但是数据来源于哪个成分是未知的。对于观测数据 x j \bm{x}_{j} xj,使用隐变量 γ j k , k = 1 , 2... , K \gamma_{jk},k=1,2...,K γjk,k=1,2...,K表示来源于哪个成分。
γ j k = { 1 , x j 来 源 于 第 k 个 成 分 0 , 否 则 \gamma_{jk}=\left\{\begin{matrix} 1,\bm{x}_{j}来源于第k个成分\\ 0,否则 \end{matrix}\right. γjk={1,xjk0
完全数据为: ( x j , γ j 1 , γ j 2 , . . . , γ j k ) , j = 1 , 2 , . . . m (\bm{x}_{j},\gamma_{j1},\gamma_{j2},...,\gamma_{jk}),j=1,2,...m (xj,γj1,γj2,...,γjk),j=1,2,...m
θ k = { μ k , Σ k , α k } \theta_{k}=\{\bm{\mu}_{k},\bm{\Sigma}_{k},\alpha_{k}\} θk={μk,Σk,αk} θ = { θ 1 , θ 2 , . . . , θ K } \bm{\theta}=\{\theta_{1},\theta_{2},...,\theta_{K}\} θ={θ1,θ2,...,θK}
在完全数据情况下的似然函数为:
在这里插入图片描述
取对数似然:
在这里插入图片描述
E步: 估计隐变量 γ j k , , k = 1 , 2 , . . . , K \gamma_{jk},,k=1,2,...,K γjk,,k=1,2,...,K
求Q函数:
在这里插入图片描述
上述式子中的 log ⁡ α k \log\alpha_{k} logαk和括号中的内容对于带入的不同的 γ \gamma γ是相同的,所以期望可有上述的代入方式。

在这里插入图片描述

M步
在这里插入图片描述
下面求解目标函数:
θ ( i + 1 ) = arg ⁡ max ⁡ θ Q ( θ , θ ( i ) ) s . t . ∑ k = 1 K α k = 1 \theta^{(i+1)}=\arg\max_{\theta}Q(\theta,\theta^{(i)}) \\ s.t. \sum_{k=1}^{K}\alpha_{k}=1 θ(i+1)=argθmaxQ(θ,θ(i))s.t.k=1Kαk=1
可以使用拉格朗日乘数法进行求解:
L ( θ , λ ) = Q ( θ , θ ( i ) ) + λ ( ∑ k = 1 K α k − 1 ) L(\theta,\lambda)=Q(\theta,\theta^{(i)})+\lambda(\sum_{k=1}^{K}\alpha_{k}-1) L(θ,λ)=Q(θ,θ(i))+λ(k=1Kαk1)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
类簇划分:
λ j = arg ⁡ max ⁡ k ∈ 1 , 2 , . . . , K γ ^ j k \lambda_{j}=\arg\max_{k\in 1,2,...,K}\hat{\gamma}_{jk} λj=argk1,2,...,Kmaxγ^jk

整体算法的伪代码:
在这里插入图片描述

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页