基于R的高级统计(EM算法)

您所在的位置:网站首页 em算法的步骤 基于R的高级统计(EM算法)

基于R的高级统计(EM算法)

#基于R的高级统计(EM算法)| 来源: 网络整理| 查看: 265

The EM Algorithm

EM算法全称叫做Expectation-Maximization,也就是说它分成基本的两个步骤就是The “E-Step” and the “M-step”

EM算法的基本思想如下:

一部分观测数据用Y来表示,同时有一部分缺失数据用Z来表示。这样观测数据Y和不可观测的缺失数据Z共同构成了完整的数据集X=(Y,Z) 或者,Z可以理解成“隐变量”

假设完整的数据X有一个概率密度函数g(y,z∣θ), θ为一个参数向量。因为含缺失数据,我们不能估计g

可观测的数据具有的概率密度为:把g对于z积分即可 f(y∣θ)=∫g(y,z∣θ)dz 这样一来,仅考虑可观测数据的似然函数就是: ℓ(θ∣y)=logf(y∣θ)

EM algorithm工作流程:

E-step: 给定θ一个初值θ0,定义: Q(θ∣θ_0)=E[log{g(y,z∣θ)}∣y,θ_0]

M-step: 对于函数Q(θ∣θ0),求θ=argmax(Q),更新θ

重复步骤1和2直至结果收敛

在上述的E步骤中, 隐变量的分布可以写成:(如果把θ都去掉其实就是最简单的条件概率:g是隐变量分布和可观测分布的联合概率) h(z∣y,θ)=\frac {g(y,z∣θ)}{f(y∣θ)}

总的来说,只要给定了初值θ,就可以计算出上面的h(z∣y,θ)(这时获得的就是z的后验分布),进而获得Q(θ∣θ0)关于θ的函数,再对其求θ=argmax进行迭代

详细可参考:https://zhuanlan.zhihu.com/p/40991784

通俗理解就是E-step(猜)、M-step(反思):

你知道一些东西(观察的到的数据), 你不知道一些东西(观察不到的),你很好奇,想知道点那些不了解的东西。怎么办呢,你就根据一些假设(parameter)先猜(E-step),把那些不知道的东西都猜出来,假装你全都知道了; 然后有了这些猜出来的数据,你反思一下,更新一下你的假设(parameter), 让你观察到的数据更加可能(Maximize likelihood; M-stemp); 然后再猜,在反思,最后,你就得到了一个可以解释整个数据的假设了。

引自:https://www.zhihu.com/question/27976634

我看到的关于EM算法讲的最详细的帖子:请务必理解下面的部分,后面的代码才好理解(因为图片问题不太好直接展示出来,直接看链接里的内容吧)

引自作者:彭一洋 链接:https://www.zhihu.com/question/27976634/answer/163164402

Canonical Examples Two-Part Normal Mixture Model

假设我们有一个混合高斯分布:由两个不同的高斯分布混合而成: f(y∣θ)=λφ(y∣μ_1,σ_2^1)+(1−λ)φ(y∣μ_2,σ_2^2) 对应的对数似然函数为: logf(y_1,…,y_n∣θ)=log∑_{i=1}^nλφ(y_i∣μ_1,σ_1)+(1−λ)φ(y_i∣μ_2,σ_2) 对于上述函数的优化,其实可以用牛顿法实现,不过EM算法提供了一种更好更稳定的途径。这里的缺失数据,也就是隐变量,就是混合模型中每个样本分别来自哪个高斯分布

The “missing data” in this case are the labels identifying which observation came from which population. Therefore, we assert that there are missing data z1,…,znsuch that z_i∼Bernoulli(λ)

zi=1时样本yi来自第一个高斯分布,zi=0时样本yi来自第二个高斯分布

也就是说我们把这个混合高斯分布的生成分成两个步骤:首先我们随机抽样,看这个样本来自哪个分布zi,然后在给定z的前提下,再从对应的高斯分布里取样yi。于是完整数据的联合分布表示为: g(y,z∣θ)=φ(y∣μ_1,σ^2_1)^zφ(y∣μ_2,σ^2_2)^{1−z}λ^z(1−λ)^{1−z} R语言实现:

首先构造模拟的混合高斯分布数据:

mu1


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3