结束有Python实现的代码:https://blog.csdn.net/google19890102/article/details/46431715

一、机器学习中的参数估计问题

    在前面的博文中,如“简单易学的机器学习算法——Logistic回归”中,采用了极大似然函数对其模型中的参数进行估计,简单来讲即对于一系列样本【转载】简单易学的机器学习算法——EM算法Logistic回归问题属于监督型学习问题,样本中含有训练的特征【转载】简单易学的机器学习算法——EM算法以及标签【转载】简单易学的机器学习算法——EM算法,在Logistic回归的参数求解中,通过构造样本属于类别【转载】简单易学的机器学习算法——EM算法和类别【转载】简单易学的机器学习算法——EM算法的概率:

【转载】简单易学的机器学习算法——EM算法

【转载】简单易学的机器学习算法——EM算法

这样便能得到Logistic回归的属于不同类别的概率函数:

【转载】简单易学的机器学习算法——EM算法

此时,使用极大似然估计便能够估计出模型中的参数。但是,如果此时的标签【转载】简单易学的机器学习算法——EM算法是未知的,称为隐变量,如无监督的学习问题,典型的如K-Means聚类算法,此时不能直接通过极大似然估计估计出模型中的参数。

二、EM算法简介

    在上述存在隐变量的问题中,不能直接通过极大似然估计求出模型中的参数,EM算法是一种解决存在隐含变量优化问题的有效方法。EM算法是期望极大(Expectation Maximization)算法的简称,EM算法是一种迭代型的算法,在每一次的迭代过程中,主要分为两步:即求期望(Expectation)步骤和最大化(Maximization)步骤。

三、EM算法推导的准备

1、凸函数

    设【转载】简单易学的机器学习算法——EM算法是定义在实数域上的函数,如果对于任意的实数【转载】简单易学的机器学习算法——EM算法,都有

【转载】简单易学的机器学习算法——EM算法

那么【转载】简单易学的机器学习算法——EM算法是凸函数。若【转载】简单易学的机器学习算法——EM算法不是单个实数,而是由实数组成的向量,此时,如果函数【转载】简单易学的机器学习算法——EM算法Hesse矩阵【转载】简单易学的机器学习算法——EM算法是半正定的,即

【转载】简单易学的机器学习算法——EM算法

那么【转载】简单易学的机器学习算法——EM算法是凸函数。特别地,如果【转载】简单易学的机器学习算法——EM算法或者【转载】简单易学的机器学习算法——EM算法,那么称【转载】简单易学的机器学习算法——EM算法为严格凸函数。

2、Jensen不等式

    如果函数【转载】简单易学的机器学习算法——EM算法是凸函数,【转载】简单易学的机器学习算法——EM算法是随机变量,那么

【转载】简单易学的机器学习算法——EM算法

特别地,如果函数【转载】简单易学的机器学习算法——EM算法是严格凸函数,那么【转载】简单易学的机器学习算法——EM算法当且仅当

【转载】简单易学的机器学习算法——EM算法

即随机变量【转载】简单易学的机器学习算法——EM算法是常量。

【转载】简单易学的机器学习算法——EM算法

(图片来自参考文章1)

注:若函数【转载】简单易学的机器学习算法——EM算法是凹函数,上述的符号相反。

3、数学期望

3.1随机变量的期望

   设离散型随机变量【转载】简单易学的机器学习算法——EM算法的概率分布为:

【转载】简单易学的机器学习算法——EM算法

其中,【转载】简单易学的机器学习算法——EM算法,如果【转载】简单易学的机器学习算法——EM算法绝对收敛,则称【转载】简单易学的机器学习算法——EM算法【转载】简单易学的机器学习算法——EM算法的数学期望,记为【转载】简单易学的机器学习算法——EM算法,即:

【转载】简单易学的机器学习算法——EM算法

   若连续型随机变量【转载】简单易学的机器学习算法——EM算法的概率密度函数为【转载】简单易学的机器学习算法——EM算法,则数学期望为:

【转载】简单易学的机器学习算法——EM算法

3.2随机变量函数的数学期望

   设【转载】简单易学的机器学习算法——EM算法是随机变量【转载】简单易学的机器学习算法——EM算法的函数,即【转载】简单易学的机器学习算法——EM算法,若【转载】简单易学的机器学习算法——EM算法是离散型随机变量,概率分布为:

【转载】简单易学的机器学习算法——EM算法

则:

【转载】简单易学的机器学习算法——EM算法

   若【转载】简单易学的机器学习算法——EM算法是连续型随机变量,概率密度函数为【转载】简单易学的机器学习算法——EM算法,则

【转载】简单易学的机器学习算法——EM算法

四、EM算法的求解过程

    假设【转载】简单易学的机器学习算法——EM算法表示观测变量,【转载】简单易学的机器学习算法——EM算法表示潜变量,则此时【转载】简单易学的机器学习算法——EM算法即为完全数据,【转载】简单易学的机器学习算法——EM算法的似然函数为【转载】简单易学的机器学习算法——EM算法,其中,【转载】简单易学的机器学习算法——EM算法为需要估计的参数,那么对于完全数据,【转载】简单易学的机器学习算法——EM算法的似然函数为【转载】简单易学的机器学习算法——EM算法
    构建好似然函数,对于给定的观测数据,为了估计参数【转载】简单易学的机器学习算法——EM算法,我们可以使用极大似然估计的方法对其进行估计。因为变量【转载】简单易学的机器学习算法——EM算法是未知的,我们只能对【转载】简单易学的机器学习算法——EM算法的似然函数为【转载】简单易学的机器学习算法——EM算法进行极大似然估计,即需要极大化:
【转载】简单易学的机器学习算法——EM算法
上述式子中无法直接对【转载】简单易学的机器学习算法——EM算法求极大值,因为在函数中存在隐变量【转载】简单易学的机器学习算法——EM算法,即未知变量。若此时,我们能够确定隐变量【转载】简单易学的机器学习算法——EM算法的值,便能够求出【转载】简单易学的机器学习算法——EM算法的极大值,可以用过不断的修改隐变量【转载】简单易学的机器学习算法——EM算法的值,得到新的【转载】简单易学的机器学习算法——EM算法的极大值。这便是EM算法的思路。通过迭代的方式求出参数【转载】简单易学的机器学习算法——EM算法
    首先我们需要对参数【转载】简单易学的机器学习算法——EM算法赋初值,进行迭代运算,假设第【转载】简单易学的机器学习算法——EM算法次迭代后参数【转载】简单易学的机器学习算法——EM算法的值为【转载】简单易学的机器学习算法——EM算法,此时的log似然函数为【转载】简单易学的机器学习算法——EM算法,即:
【转载】简单易学的机器学习算法——EM算法
在上式中,第二行到第三行使用到了Jensen不等式,由于log函数是凹函数,由Jensen不等式得到:

【转载】简单易学的机器学习算法——EM算法

【转载】简单易学的机器学习算法——EM算法
表示的是【转载】简单易学的机器学习算法——EM算法的期望,其中,【转载】简单易学的机器学习算法——EM算法表示的是隐变量【转载】简单易学的机器学习算法——EM算法满足的某种分布。这样,上式【转载】简单易学的机器学习算法——EM算法的值取决于【转载】简单易学的机器学习算法——EM算法【转载】简单易学的机器学习算法——EM算法的概率。在迭代的过程中,调整这两个概率,使得下界不断的上升,这样就能求得【转载】简单易学的机器学习算法——EM算法的极大值。注意,当等式成立时,说明此时已经等价于【转载】简单易学的机器学习算法——EM算法。由Jensen不等式可知,等式成立的条件是随机变量是常数,即:
【转载】简单易学的机器学习算法——EM算法
已知:
【转载】简单易学的机器学习算法——EM算法
所以:
【转载】简单易学的机器学习算法——EM算法
则:
【转载】简单易学的机器学习算法——EM算法
至此,我们得出了隐变量【转载】简单易学的机器学习算法——EM算法满足的分布的形式【转载】简单易学的机器学习算法——EM算法。这就是EM算法中的E步。在确定了【转载】简单易学的机器学习算法——EM算法后,调整参数【转载】简单易学的机器学习算法——EM算法使得【转载】简单易学的机器学习算法——EM算法取得极大,这便是M步。EM算法的步骤为:
  1. 初始化参数【转载】简单易学的机器学习算法——EM算法,开始迭代;
  2. E步:假设【转载】简单易学的机器学习算法——EM算法为第【转载】简单易学的机器学习算法——EM算法次迭代参数【转载】简单易学的机器学习算法——EM算法的估计值,则在第【转载】简单易学的机器学习算法——EM算法次迭代中,计算【转载】简单易学的机器学习算法——EM算法【转载】简单易学的机器学习算法——EM算法
  3. M步:求使【转载】简单易学的机器学习算法——EM算法极大化的【转载】简单易学的机器学习算法——EM算法,确定【转载】简单易学的机器学习算法——EM算法次的参数的估计值【转载】简单易学的机器学习算法——EM算法【转载】简单易学的机器学习算法——EM算法

五、EM算法的收敛性保证

迭代的过程能否保证最后找到的就是最大的似然函数值呢?即需要证明在整个迭代的过程中,极大似然估计是单调增加的。假定【转载】简单易学的机器学习算法——EM算法【转载】简单易学的机器学习算法——EM算法是EM算法的第【转载】简单易学的机器学习算法——EM算法次和第【转载】简单易学的机器学习算法——EM算法次迭代后的结果,选定【转载】简单易学的机器学习算法——EM算法,进行迭代:
  1. E步:【转载】简单易学的机器学习算法——EM算法
  2. M步:【转载】简单易学的机器学习算法——EM算法
固定【转载】简单易学的机器学习算法——EM算法,将【转载】简单易学的机器学习算法——EM算法看成变量:
【转载】简单易学的机器学习算法——EM算法
上式中,第一个大于等于是因为:
【转载】简单易学的机器学习算法——EM算法

六、利用EM算法参数求解实例

    假设有有一批数据【转载】简单易学的机器学习算法——EM算法分别是由两个正态分布:

【转载】简单易学的机器学习算法——EM算法

【转载】简单易学的机器学习算法——EM算法

产生,其中,【转载】简单易学的机器学习算法——EM算法【转载】简单易学的机器学习算法——EM算法未知,【转载】简单易学的机器学习算法——EM算法。但是不知道具体的【转载】简单易学的机器学习算法——EM算法是第产生,即可以使用【转载】简单易学的机器学习算法——EM算法【转载】简单易学的机器学习算法——EM算法表示。这是一个典型的涉及到隐藏变量的例子,隐藏变量为【转载】简单易学的机器学习算法——EM算法【转载】简单易学的机器学习算法——EM算法。可以使用EM算法对参数进行估计。

  1. 首先是初始化【转载】简单易学的机器学习算法——EM算法【转载】简单易学的机器学习算法——EM算法
  2. E步:【转载】简单易学的机器学习算法——EM算法,即求数据【转载】简单易学的机器学习算法——EM算法是由第【转载】简单易学的机器学习算法——EM算法个分布产生的概率:【转载】简单易学的机器学习算法——EM算法
  3. M步:【转载】简单易学的机器学习算法——EM算法,即计算最大的期望值。然而我们要求的参数是均值,可以通过如下的方式估计:【转载】简单易学的机器学习算法——EM算法

相关文章: