当前位置:   article > 正文

EM算法(Expectation Maximization Algorithm)_大白话em算法

大白话em算法

m~(u,sigma).u是均值,sigma是方差。

我们的方法是假设。首先假设一个模型参数θ,然后每个样本来自四川/东北的概率p(zi)就能算出来了,p(xi,zi)=p(xi|zi)p(zi),而x|z=0服从四川人分布,x|z=1服从东北人分布,所以似然函数可以写成含有θ的函数,极大化它我们可以得到一个新的θ。新的θ因为考虑了样本来自哪个分布,会比原来的更能反应数据规律。有了这个更好的θ我们再对每个样本重新计算它来自四川和东北的概率,用更好的θ算出来的概率会更准确,有了更准确的信息,我们可以继续像上面一样估计θ,自然而然这次得到的θ会比上一次更棒,如此蒸蒸日上,直到收敛(参数变动不明显了),理论上,EM算法就说完了

clip_image032表示该样例隐含变量z的某种分布

 

 

,,可以得到p的累加为c

上面两式相除得到下式子

http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html

以下是高斯模型的代码,推导可查看上面这个网址。

  1. def my_EM(X):
  2. k = 2
  3. N = len(X)
  4. Miu = np.random.rand(k, 1)
  5. Posterior = mat(zeros((N, 2)))
  6. dominator = 0
  7. numerator = 0
  8. # 先求后验概率
  9. for iter in range(1000):
  10. #E[i]
  11. for i in range(N):
  12. dominator = 0
  13. for j in range(k):
  14. dominator = dominator + np.exp(-1.0 / (2.0 * SIGMA ** 2) * (X[i] - Miu[j]) ** 2)
  15. # print dominator,-1/(2*SIGMA**2) * (X[i] - Miu[j])**2,2*SIGMA**2,(X[i] - Miu[j])**2
  16. # return
  17. for j in range(k):
  18. numerator = np.exp(-1.0 / (2.0 * SIGMA ** 2) * (X[i] - Miu[j]) ** 2)
  19. Posterior[i, j] = numerator / dominator
  20. oldMiu = copy.deepcopy(Miu)
  21. # 最大化即M步
  22. for j in range(k):
  23. numerator = 0
  24. dominator = 0
  25. for i in range(N):
  26. numerator = numerator + Posterior[i, j] * X[i]
  27. dominator = dominator + Posterior[i, j]
  28. Miu[j] = numerator / dominator
  29. print((abs(Miu - oldMiu)).sum())
  30. # print '\n'
  31. if (abs(Miu - oldMiu)).sum() < EPS:
  32. print (Miu, iter)
  33. break

https://blog.csdn.net/u010866505/article/details/77877345

 

高斯混合模型(GMM)

什么是隐变量呢?就是观测不到的变量,对每一个身高而言,它来自四川还是东北,或者来自女生还是男生,就是一个隐变量。

 

其他参考代码:

https://github.com/YunnanShuke/ycimpute/blob/master/ycimpute/unsupervised/expectation_maximization.py

 

即update_X即,每次更新了 参数 mu跟 sigma, theta 越来越小,即越来越接近真实(即update_x越来越贴近)

实例:

图中的0.45是怎么得来的呢?由两个硬币的初始值0.6和0.5,容易得出投掷出5正5反的概率是pA=C(10,5)*(0.6^5)*(0.4^5),pB=C(10,5)*(0.5^5)*(0.5^5),  pA/(pA+pB)=0.449,  0.45就是0.449近似而来的,表示第一组实验选择的硬币是A的概率为0.45。图中的2.2H,2.2T是怎么得来的呢?  0.449 * 5H = 2.2H ,0.449 * 5T = 2.2T ,表示第一组实验选择A硬币且正面朝上次数的期望值是2.2。其他的值依次类推。

https://blog.csdn.net/u011300443/article/details/46763743

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/676618
推荐阅读
  

闽ICP备14008679号