EM算法和混合高斯模型(一)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EM算法和混合高斯模型(一)相关的知识,希望对你有一定的参考价值。
参考技术A
EM(Expectation Maximization)算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计,或极大后验估计。EM算法的每次迭代由两步组成:E步,求期望(expectation);M步,求极大值,因而被称为期望极大算法,简称EM算法。
本文从EM算法的引入说起,简单介绍EM算法的推导过程,以及其在高斯混合模型中的应用。更多的关于EM算法的推导细节,可参见 人人都懂EM算法 。
假设我们需要调查我们学校学生的身高分布。我们先假设学校所有学生的身高服从正态分布 。( 注意:极大似然估计的前提一定是要假设数据总体的分布,如果不知道数据分布,是无法使用极大似然估计的 ),这个分布的均值μ和标准差为σ 未知,如果我们估计出这两个参数,那我们就得到了最终的结果。那么怎样估计这两个参数呢?
学校的学生这么多,我们不可能挨个统计吧?这时候我们需要用到概率统计的思想,也就是抽样,根据样本估算总体。假设我们随机抽到了 200 个人(也就是 200 个身高的样本数据,为了方便表示,下面“人”的意思就是对应的身高)。然后统计抽样这 200 个人的身高。根据这 200 个人的身高估计均值 μ和方差σ 。例子来自 人人都懂EM算法 。
现在我们假设这200个人的身高服从一个正态分布N(μ,σ),因此可以直接使用极大似然估计方法估计出这个分布的参数μ和σ。
但是,这200个人的身高真的是服从同一个正态分布吗?实际情况并不是这样的,男生和女生分别服从两种不同的正态分布,即男生 女生各服从一个正态分布 ,( 注意:EM算法和极大似然估计的前提是一样的,都要假设数据总体的分布,如果不知道数据分布,是无法使用EM算法的 ),而且假设我们现在只有身高数据,丢失了性别数据,那么该怎样评估学生的身高分布呢?
这个时候,对于每一个样本或者你抽取到的人,就有两个问题需要估计了,一是这个人是男的还是女的,二是男生和女生对应的身高的正态分布的参数是多少。这两个问题是相互依赖的:
但是现在我们既不知道每个学生是男生还是女生,也不知道男生和女生的身高分布。这就成了一个先有鸡还是先有蛋的问题了。鸡说,没有我,谁把你生出来的啊。蛋不服,说,没有我,你从哪蹦出来啊。为了解决这个你依赖我,我依赖你的循环依赖问题,总得有一方要先打破僵局,不管了,我先随便整一个值出来,看你怎么变,然后我再根据你的变化调整我的变化,然后如此迭代着不断互相推导,最终就会收敛到一个解(草原上的狼和羊,相生相克)。这就是EM算法的基本思想了。
EM的意思是“Expectation Maximization”,具体方法为:
上面的学生属于男生还是女生我们称之为隐含参数,女生和男生的身高分布参数称为模型参数。
EM 算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐含参数(EM 算法的 E 步),接着基于观察数据和猜测的隐含参数一起来极大化对数似然,求解我们的模型参数(EM算法的M步)。由于我们之前的隐含参数是猜测的,所以此时得到的模型参数一般还不是我们想要的结果。我们基于当前得到的模型参数,继续猜测隐含参数(EM算法的 E 步),然后继续极大化对数似然,求解我们的模型参数(EM算法的M步)。以此类推,不断的迭代下去,直到模型分布参数基本无变化,算法收敛,找到合适的模型参数。
在开始介绍EM算法之前,让我们先来了解一个重要的定理——Jensen不等式。
如下图,如果函数f(x)是凸函数,x是随机变量,有 0.5 的概率是 a,有 0.5 的概率是 b, x的期望值就是 a 和 b 的中值了,那么:
对于m个相互独立的样本:
假如没有隐含变量z, 我们仅需要找到合适的θ极大化对数似然函数即可:
现在我们给定一个θ值(初始化θ),那么logL(θ)的值就取决于Q i (z)和P(x (i) ,z (i) )。我们可以通过调整这两个概率使下届逼近logL(θ)的真实值,当不等式变为等式时,说明我们调整后的下届就等于logL(θ)了。由Jeson不等式可知,等式成立的条件是随机变量是常数,则有:
如果Q i (z (i) ) = P(z (i) |x (i) , θ),则(2)式使我们包含隐藏数据的对数似然函数的一个下届。如果我们能极大化这个下届,则也在尝试极大化我们的对数似然函数。即我们需要极大化下式:
由于对logaf(x)求导的结果与f(x)的系数无关((ln(ax))\'= (lna + lnx)\'=1/x),因此对θ求极大似然时,可以去掉式中的常数部分Q i (z (i) ):
现在,让我们来总结一下EM算法的流程。
输入:观察数据x = (x (1) , x (2) , ... , x (m) ), 联合分布P(x, z|θ),条件分布P(z|x,θ),极大迭代次数J。
(1)随机初始化模型参数θ值;
(2)迭代求解各个分布模型的参数以及各个模型的概率:
for j from 1 to J:
输出:模型参数θ
图中的直线式迭代优化的路径,可以看到每一步都会向最优值前进一步,而且前进路线是平行于坐标轴的,因为每一步只优化一个变量。
这犹如在x-y坐标系中找一个曲线的极值,然而曲线函数不能直接求导,因此什么梯度下降方法就不适用了。但固定一个变量后,另外一个可以通过求导得到,因此可以使用坐标上升法,一次固定一个变量,对另外的求极值,最后逐步逼近极值。对应到EM上,E步:固定 θ,优化Q;M步:固定 Q,优化 θ;交替将极值推向极大。
E步 :初始化θ A =0.6和θ B =0.5(θ A 和θ B 分别表示两个硬币出现正面的概率),计算每次掷硬币选择A和B的概率,例如第一个实验中选择A的概率为:
M步 :求出似然函数下届Q(θ,θ i ), y i 代表第j次试验正面朝上的个数,μ j 代表第j次试验选择硬币A的概率,1-μ j 代表第j次试验选择硬币B的概率。
参考:
人人都懂EM算法
《统计学习方法》. 李航
EM 算法-GMM
高斯混合模型
混合模型,顾名思义就是几个概率分布密度混合在一起,而高斯混合模型是最常见的混合模型;
GMM,全称 Gaussian Mixture Model,中文名高斯混合模型,也就是由多个高斯分布混合起来的模型;
概率密度函数为
K 表示高斯分布的个数,αk 表示每个高斯分布的系数,αk>0,并且 Σαk=1,
Ø(y|θk) 表示每个高斯分布,θk 表示每个高斯分布的参数,θk=(uk,σk2);
举个例子
男人和女人的身高都服从各自的高斯分布,把男人女人混在一起,那他们的身高就服从高斯混合分布;
高斯混合模型就是用混合在一起的身高数据,估计男人和女人各自的高斯分布
小结
GMM 实际上分为两步,第一步是选择一个高斯分布,如男人数据集,这里涉及取到某个分布的概率,αk,
然后从该分布中取一个样本,等同于普通高斯分布
GMM 常用于聚类,也就是把每个概率密度分布聚为一类;如果概率密度分布为已知,那就变成参数估计问题
EM 解释 GMM
EM 的核心是 隐变量 和 似然函数
求导结果如下
GMM 的 EM 算法
算法流程
参考资料:
https://blog.csdn.net/jinping_shi/article/details/59613054
《统计学习方法》李航
以上是关于EM算法和混合高斯模型(一)的主要内容,如果未能解决你的问题,请参考以下文章