结束有Python实现的代码:https://blog.youkuaiyun.com/google19890102/article/details/46431715
一、机器学习中的参数估计问题
在前面的博文中,如“简单易学的机器学习算法——Logistic回归”中,采用了极大似然函数对其模型中的参数进行估计,简单来讲即对于一系列样本,Logistic回归问题属于监督型学习问题,样本中含有训练的特征
以及标签
,在Logistic回归的参数求解中,通过构造样本属于类别
和类别
的概率:
这样便能得到Logistic回归的属于不同类别的概率函数:
此时,使用极大似然估计便能够估计出模型中的参数。但是,如果此时的标签是未知的,称为隐变量,如无监督的学习问题,典型的如K-Means聚类算法,此时不能直接通过极大似然估计估计出模型中的参数。
二、EM算法简介
在上述存在隐变量的问题中,不能直接通过极大似然估计求出模型中的参数,EM算法是一种解决存在隐含变量优化问题的有效方法。EM算法是期望极大(Expectation Maximization)算法的简称,EM算法是一种迭代型的算法,在每一次的迭代过程中,主要分为两步:即求期望(Expectation)步骤和最大化(Maximization)步骤。
三、EM算法推导的准备
1、凸函数
设是定义在实数域上的函数,如果对于任意的实数
,都有
那么是凸函数。若
不是单个实数,而是由实数组成的向量,此时,如果函数
的Hesse矩阵
是半正定的,即
那么是凸函数。特别地,如果
或者
,那么称
为严格凸函数。
2、Jensen不等式
如果函数是凸函数,
是随机变量,那么
特别地,如果函数是严格凸函数,那么
当且仅当
即随机变量是常量。
(图片来自参考文章1)
注:若函数是凹函数,上述的符号相反。
3、数学期望
3.1随机变量的期望
设离散型随机变量的概率分布为:
其中,,如果
绝对收敛,则称
为
的数学期望,记为
,即:
若连续型随机变量的概率密度函数为
,则数学期望为:
3.2随机变量函数的数学期望
设是随机变量
的函数,即
,若
是离散型随机变量,概率分布为:
则:
若是连续型随机变量,概率密度函数为
,则
四、EM算法的求解过程
- 初始化参数
,开始迭代;
- E步:假设
为第
次迭代参数
的估计值,则在第
次迭代中,计算
:
- M步:求使
极大化的
,确定第
次的参数的估计值
:
五、EM算法的收敛性保证
- E步:
- M步:
六、利用EM算法参数求解实例
假设有有一批数据分别是由两个正态分布:
产生,其中,和
未知,
。但是不知道具体的
是第产生,即可以使用
和
表示。这是一个典型的涉及到隐藏变量的例子,隐藏变量为
和
。可以使用EM算法对参数进行估计。
- 首先是初始化
和
;
- E步:
,即求数据
是由第
个分布产生的概率:
- M步:
,即计算最大的期望值。然而我们要求的参数是均值,可以通过如下的方式估计: