《EM算法(讲解+程序)》

上传人:tang****xu5 文档编号:156922561 上传时间:2020-12-20 格式:DOCX 页数:11 大小:18.04KB
返回 下载 相关 举报
《EM算法(讲解+程序)》_第1页
第1页 / 共11页
《EM算法(讲解+程序)》_第2页
第2页 / 共11页
《EM算法(讲解+程序)》_第3页
第3页 / 共11页
《EM算法(讲解+程序)》_第4页
第4页 / 共11页
《EM算法(讲解+程序)》_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《《EM算法(讲解+程序)》》由会员分享,可在线阅读,更多相关《《EM算法(讲解+程序)》(11页珍藏版)》请在金锄头文库上搜索。

1、EM算法实验报告一、算法简单介绍EM算法是Dempster, Laind , Rubin于1977年提出的求参数极大似然估计的一种方法, 它可以从非完整数据集中对参数进行MLE估计,是一种非常简单实用的学习算法。这种方法可以广泛地应用于处理缺损数据、截尾数据以及带有噪声等所谓的不完全数据,可以具体来说,我们可以利用 EM算法来填充样本中的缺失数据、发现隐藏变量的值、估计HMM的参数、估计有限混合分布中的参数以及可以进行无监督聚类等等。本文主要是着重介绍 EM算法在混合密度分布中的应用,如何利用EM算法解决混合密度 中参数的估计。二、算法涉及的理论我们假设X是观测的数据,并且是由某些高斯分布所生

2、成的,X是包含的信息不完整(不清楚每个数据属于哪个高斯分布)。)=工曲A lx 卜Et) 击=】此时,我们用k维二元随机变量 Z (隐藏变量)来表示每一个高斯分布,将 Z引入后,最终得到:pl x 瓦=1) = ALx fiyY 心雇K用)=h忒 p(x|z)=H如玖片N K=nn 啪Ik=I然而Z的后验概率满足(利用条件概率计算):Max/二仃)X 口卫圳 wn=lt=l但是,Znk为隐藏变量,实际问题中我们是不知道的,所以就用Znk的期望值去估计它(利用讯4=电)=I勺=i)p(x|j = 1)全概率计算)。然而我们最终是计算 max:Ar KEz lnp(X.Z|p. E.tt) = 二

3、(而上)In砍 +11*(珏|卜玖) g L Si最后,我们可以得到(利用最大似然估计可以计算)*叫向| V与=寸/(确)(-冉)(一以) 叫n-t心二文g)三、算法的具体描述3.1参数初始化对需要估计的参数进行初始赋值,包括均值、方差、混合系数以及二川)。3.2 E-Step 计算利用上面公式计算后验概率,即期望3.3 M-step 计算重新估计参数,包括均值、方差、混合系数并且估计此参数下的期望值。Xz4np| X.Z Ee)3.4收敛性判断与旧的值进行比较,并与设置的阈值进行对比,判断3.2 ,重新进行下面步骤,直到最后收敛才结将新的迭代是否结束,若不符合条件,则返回到 束。EM for

4、 Gaussian MixturesGiven a Gaussian mixture mode), lhe goal is io maximize the likelihood function with respect to the parameirs; (comprising Uie means and co van antes of the components and tlie mining coclticicnts),1. Iniiialize the meansi coxariancei 如* and mixing coefficients and evaluate ihc ini

5、tial value of lhe log likelihood.2. E step. Evaluate the responsibilities uing the current parameter values治有=巩)(9J3叼”&而Sj)j=i3. M step. Re-esLimaie the pardineters using the current rcsponsibililies广= 支 7(*品)邳(9.24)人 n=l世= W 立1M 函一峙)X - Mr)T (9.25) n=忒二冷(9.26)whereNA% =(9.27)TL14. Evaluate ibe lug

6、likelihoodlnp(X|:二 tt) =尸保板(易|氏,玖)(9.2H)低 Jand check For convergence of cilhur the piirajncicrs or Lhc log likelihood. If ihe convergence crirerion is nm wHutied renim io step 2.四、算法的流程图abest=0.8022mubest=2.71484.9882实验结果covbest=0.19783.93073.01026.5(:,:,1)=5.4082-0.06930.0858-0.06930.2184-0.0177-0.

7、01770.0769f=-1.6323数据X的分布-1.5-2.-k-k4-4-+ + +4-k +-2.5-3+七七+-3.5+4-4-4.5-5-5.5 卡 010152025每次迭代期望值6.510估计值)参考文献1. M. Jordan. Pattern Recognition And Machine Learning2. Xiao Han. EM Algorithm七、 附录close all;clear;clc;%参考书籍 Pattern.Recognition.and.Machine.Learning.pdf% http:/www.pr-% lwmpr-% 2009/10/15%

8、M=2;% number of GaussianN=200;% total number of data samplesth=0.000001; % convergent thresholdK=2;% demention of output signal%待生成数据的参数a_real =4/5;1/5;mu_real=3 4;5 3;cov_real(:,:,1)=5 0;0 0.2;cov_real(:,:,2)=0.1 0;0 0.1;% generate the data),x= mvnrnd( mu_real(:,1) ,cov_real(:,:,1), round(N*a_real(

9、1)mvnrnd(mu_real(:,2),cov_real(:,:,2),N-round(N*a_real(1);% for i=1:round(N*a_real(1)% while (x(1,i)0)&(x(2,i)0)&(x(1,i)10)&(x(2,i)0)&(x(2,i)0)&(x(1,i)10)&(x(2,i)10)%x(:,i)=mvnrnd(mu_real(:,1),cov_real(:,:,1),1);% end% endfigure(1),plot(x(1,:),x(2,:),.)於里生成的数据全部符合标准% %a=1/3,2/3;mu=1 2;2 1;%均值初始化完毕co

10、v(:,:,1)=1 0;0 1;cov(:,:,2)=1 0;0 1;%协方差初始化% EM Algorothm% loopcount=0;figure(2),hold onwhile 1a_old = a;mu_old = mu;cov_old= cov;rznk_p=zeros(M,N);for cm=1:Mmu_cm=mu(:,cm);cov_cm=cov(:,:,cm);for cn=1:Np_cm=exp(-0.5*(x(:,cn)-mu_cm)/cov_cm*(x(:,cn)-mu_cm);rznk_p(cm,cn)=p_cm;endrznk_p(cm,:)=rznk_p(cm,

11、:)/sqrt(det(cov_cm);endrznk_p=rznk_p*(2*pi)A(-K/2);%E step%开始求rznkrznk=zeros(M,N);%r(Zpikn=zeros(1,M);%r(Zpikn_sum=0;for cn=1:Nfor cm=1:Mpikn(1,cm)=a(cm)*rznk_p(cm,cn);% pikn_sum=pikn_sum+pikn(1,cm);endfor cm=1:Mrznk(cm,cn)=pikn(1,cm)/sum(pikn);endend% 求rank结束% M stepnk=zeros(1,M);for cm=1:Mfor cn=1

12、:Nnk(1,cm)=nk(1,cm)+rznk(cm,cn);endenda=nk/N;rznk_sum_mu=zeros(M,1);% 求均值MUfor cm=1:Mrznk_sum_mu=0;%开始的时候就是错在这里,这里要置零。for cn=1:Nrznk_sum_mu=rznk_sum_mu+rznk(cm,cn)*x(:,cn);endmu(:,cm)=rznk_sum_mu/nk(cm);end% 求协方差COVfor cm=1:Mrznk_sum_cov=zeros(K,M);for cn=1:Nrznk_sum_cov=rznk_sum_cov+rznk(cm,cn)*(x(

13、:,cn)-mu(:,cm)*(x(:,cn)-mu(:,cm);endcov(:,:,cm)=rznk_sum_cov/nk(cm);endt=max(norm(a_old(:)-a(:)/norm(a_old(:);norm(mu_old(:)-mu(:)/norm(mu_old(:) ;norm(cov_old(:)-cov(:)/norm(cov_old(:);temp_f=sum(log(sum(pikn);plot(count,temp_f,r+)count=count+1;if tthbreak;endend %while 1hold offf=sum(log(sum(pikn);a_best=a;mu_best=mu;cov_best=cov;f_best=f

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号