极大似然估计、贝叶斯估计、EM算法
参考文献:http://blog.csdn.net/zouxy09/article/details/8537620
极大似然估计
已知样本满足某种概率分布,但是其中具体的参数不清楚,极大似然估计估计就是把待估参数看做是确定性的量,只是其取值未知。最佳估计就是使得产生当前样本的概率最大下的参数值。
贝叶斯估计
已知样本满足某种概率分布,但参数未知。贝叶斯估计把待估参数看成符合某种先验概率分布的随机变量。对样本进行观测的过程就是把先验概率密度转化为后验概率密度,这样就利用样本信息修正了对参数的初始估计值。
EM算法
EM算法
EM(Expectation-maximization,期望最大化)算法是一种迭代算法,用于含有隐含变量概率模型参数的极大似然估计或后验概率估计。
EM的算法流程
初始化分布参数θ;
重复以下步骤直到收敛:
E步骤:根据参数初始值或上一次迭代的模型参数来计算出隐性变量的后验概率,其实就是隐性变量的期望。作为隐藏变量的现估计值:
M步骤:将似然函数最大化以修正新的参数值:
这个不断的迭代,就可以得到使似然函数L(θ)最大化的参数θ了。
EM算法应用
EM算法有很多的应用,最广泛的就是GMM混合高斯模型、聚类(如K-means聚类)、HMM等等。具体可以参考JerryLead的cnblog中的Machine Learning专栏。
如果将样本看作观察值,潜在类别看作是隐藏变量,那么聚类问题也就是参数估计问题,只不过聚类问题中参数分为隐含类别变量和其他参数,这犹如在x-y坐标系中找一个曲线的极值,然而曲线函数不能直接求导,因此什么梯度下降方法就不适用了。但固定一个变量后,另外一个可以通过求导得到,因此可以使用坐标上升法,一次固定一个变量,对另外的求极值,最后逐步逼近极值。对应到EM上,E步估计隐含变量,M步估计其他参数,交替将极值推向最大。EM中还有“硬”指定和“软”指定的概念,“软”指定看似更为合理,但计算量要大,“硬”指定在某些场合如K-means中更为实用(要是保持一个样本点到其他所有中心的概率,就会很麻烦)。
另外,EM的收敛性证明方法确实很牛,能够利用log的凹函数性质,还能够想到利用创造下界,拉平函数下界,优化下界的方法来逐步逼近极大值。而且每一步迭代都能保证是单调的。最重要的是证明的数学公式非常精妙,硬是分子分母都乘以z的概率变成期望来套上Jensen不等式,前人都是怎么想到的。
在Mitchell的Machine Learning书中也举了一个EM应用的例子,明白地说就是将班上学生的身高都放在一起,要求聚成两个类。这些身高可以看作是男生身高的高斯分布和女生身高的高斯分布组成。因此变成了如何估计每个样例是男生还是女生,然后在确定男女生情况下,如何估计均值和方差。
EM算法例子
以K-means聚类为例,说明EM算法基本原理。
EM算法是一种迭代算法,用于含有隐变量概率模型参数的极大似然估计或后验概率估计。由于含有无法直接观测的隐变量,所以不能直接用极大似然估计。其基本思想是先初始化一个参数值;接着在这个参数值下求隐变量的期望值作为估计值;然后在隐变量估计值下反过来求参数的极大似然估计值来修正原来的参数值;如此迭代直到参数值不再明显变化为止。
对应到K-means聚类中,各样本应该属于哪个类是隐变量,每个类的中心是参数。相应地,聚类过程为先指定k个点作为聚类中心;接着将每个样本划归为距离最近的聚类中心所属的类,这样就将所有样本划为k类;然后对根据每个聚类的样本重新计算聚类中心;重复该过程直到聚类中心不再明显变化为止。