EM算法(Expectation-Maximization algorithm)是一类通过迭代进行极大似然估计的优化算法,今天翻出了之前的笔记,在这里也放一下吧。
EM算法背景
EM(expectation-maximization)算法是Dempster,Laird和Rubin(DLR)三个人在1977年正式提出的.主要是用于在不完全数据的情况下计算最大似然估计.在EM算法正式提出以来,人们对EM算法的性质有更加深入的研究.并且在此基础上,提出了很多改进的算法.在数理统计,数据挖掘,机器学习以及模式识别等领域有广泛的应用.
问题背景
给定一些观察数据y,假设y符合如下的高斯分布:
p ( y ) = ∑ k = 1 K θ k N ( y ∣ μ k , Σ k ) p(y)=\sum_{k=1}^{K} \theta_{k} N\left(y \mid \mu_{k}, \Sigma_{k}\right) p(y)=k=1∑KθkN(y∣μk,Σk)
需要求出混合高斯分布的三组参数: θ k , μ k , Σ k \theta_{k}, \mu_{k}, \Sigma_{k} θk,μk,Σk
我们注意到,该混合高斯分布一共有K个分布函数,对于每一个观察到的样本y,如果知道它是属于K中的哪个分布,那么求这些参数就会变得很简单。因此我们考虑引入一组新的变量z,用 z i z_{i} zi来表示这些高斯分布,那么我们的样本集就会变为 { ( y 1 , z 2 ) , ( y 2 , z 5 ) , ( y 3 , z 1 ) , … } \left\{\left(y_{1}, z_{2}\right),\left(y_{2}, z_{5}\right),\left(y_{3}, z_{1}\right), \ldots\right\} {
(y1,z2),(y2,z5),(y3,z1),…}
隐变量
上面提到的新的变量z就是隐藏变量,这是由于实际问题中我们往往不知道每个y属于哪个分布,我们观察不到z.我们引入: Z = { b 1 , b 2 , … , b K } Z=\left\{b_{1}, b_{2}, \ldots, b_{K}\right\} Z={
b1,b2,…,bK}这里的 b K b_{K} bK取0或1,那么就有: p ( z k = 1 ) = θ k p\left(z_{k}=1\right)=\theta_{k} p(zk=1)=θk,更进一步我们可以得到:
p ( Z ) = ∏ k = 1 K θ k z k p\left(Z\right)=\prod_{k=1}^{K} \theta_{k}^{z_{k}} p(Z)=k=1∏Kθkzk
最终,我们可以得到:
p ( y ∣ z k = 1 ) = N ( y ∣ μ k , Σ k ) ⇒ p ( y ∣ Z ) = ∏ k = 1 K N ( y ∣ u k , Σ k ) z k p\left(y \mid z_{k}=1\right)=N\left(y \mid \mu_{k}, \Sigma_{k}\right)\\ \Rightarrow p\left(y \mid Z\right)=\prod_{k=1}^{K} N\left(y \mid u_{k}, \Sigma_{k}\right)^{z_{k}} p(y∣z