avatar

机器学习(十三)EM算法

一、模型介绍

   EM(Expectation-Maximum)算法也称期望最大化算法,曾入选“数据挖掘十大算法”中。EM算法是最常见的隐变量估计方法,在机器学习中有极为广泛的用途,例如常被用来学习高斯混合模型(Gaussian mixture model,简称GMM)、贝叶斯模型的参数;隐式马尔科夫算法(HMM)、LDA主题模型的变分推断等等。

   EM算法是一种迭代优化策略,由于它的计算方法中每一次迭代都分两步,其中一个为期望步(E步),另一个为极大步(M步),所以算法被称为EM算法(Expectation-Maximization Algorithm)。EM算法受到缺失思想影响,最初是为了解决数据缺失情况下的参数估计问题

   其基本思想是:首先根据己经给出的观测数据,估计出模型参数的值;然后再依据上一步估计出的参数值估计缺失数据的值,再根据估计出的缺失数据加上之前己经观测到的数据重新再对参数值进行估计,然后反复迭代,直至最后收敛,迭代结束。


1、算法思想

   未观察变量的学名是”隐变量“,令$ X$ 表示已观测变量集,$ Z$ 表示隐变量集,$ \Theta$ 表示模型参数。若欲对$ \Theta$ 做极大似然估计,则应最大化对数似然:

   然而由于$ Z$ 是隐变量,上式无法直接求解。此时我们可通过对$ Z$ 计算期望,来最大化已观测数据的对数”边际似然”:

   EM算法是常用的估计参数因变量的利器,它是一种迭代式的算法,其基本思想是:若参数$ \Theta$ 已知,则可根据训练数据推断出最优隐变量$ Z$ 的值(E步);反之,若$ Z$ 的值已知,则可方便地对参数$ \Theta$ 做极大似然估计(M步)。

   于是,以初始值$ \Theta^0$ 为起点,对于上面的极大似然估计,我们可以迭代的执行以下步骤直至收敛:

  • 基于$ \Theta^t$ 推断隐变量$ Z$ 的期望,记为$ Z^t$ ;
  • 基于已观测变量$ X$ 和$ Z^t$ 对参数$ \Theta$ 做极大似然估计,记为$ \Theta^{t+1}$


   进一步,若我们不是取$ Z$ 的期望,而是基于$ \Theta^t$ 计算隐变量$ Z$ 的概率分布$ P(Z|X,\Theta^t)$ ,则EM算法的两个步骤是:

  • E步:以当前参数$ \Theta^t$ 推断隐变量分布$ P(Z|X,\Theta^t)$ ,并计算对数似然$ LL(\Theta|X,Z)$ 关于$ Z$ 的期望:
  • M步:寻找参数最大化期望似然,即:

2、算法示例—-三硬币模型

在以下的示例中观测数据记为$ Y$ (因为两个例子都是输出是观测数据),隐藏变量(未观测变量)记为$ z$,模型参数记为$ \theta$ 。

问题

   假设有三枚硬币A、B、C,每个硬币正面出现的概率是π、p、q。进行如下的掷硬币实验:先掷硬币A,正面向上选B,反面选C;然后掷选择的硬币,正面记1,反面记0。独立的进行10次实验,结果如下:1,1,0,1,0,0,1,0,1,1。假设只能观察最终的结果(0 or 1),而不能观测掷硬币的过程(不知道选的是B or C),问如何估计三硬币的正面出现的概率?

求解

   在该示例中,我们并不知道每次实验时掷的时B还是C,这些便是隐变量$ z$。我们需要在这些隐变量未知的情况下,求解$ \pi,p,q$ 。

   首先针对某个输出y值,它在参数$ \theta(\theta=\pi,p,q)$下的概率分布为:

   因此,针对观测数据$ Y=(y_1,y_2,…,y_n)^T$ 的似然函数为:

   本题的目标就是求解参数$ \theta$ ,使得上式最大。如果没有那些隐变量,我们完全可以通过极大似然估计的方法来求解参数,让对数似然求导等于0即可。但是隐变量的存在使得通过极大似然估计的方法及其复杂。下面根据EM算法来进行求解。

   E步:在这一步,需要计算为观测数据的条件概率分布,也就是每一个$ P(z|y_j,\theta)$ ,也就是我们需要知道每一步中掷B和掷C的概率。记$ \mu_j$ 是在已知模型参数$ \theta^i$ 下观测数据$ y_j$ 来自掷硬币$ B$ 的概率,相应的来自掷C的概率就是$ 1-\mu_j$ 。

   M步:针对Q函数求导,Q函数的表达式为:

   展开上面的式子,同时求导,得到$ \theta$ :

   令上式等于0,我们就可以得到$ \pi^{i+1} = \frac{1}{N}\sum_{j=1}^N \mu_j$

二、模型介绍

1、模型应用

   EM算法是一种求解隐含参数的一种方法,上面的示例是EM算法在极大似然估计或者说贝叶斯理论情况下的应用。

   K-means算法也是EM算法的思路,在E步,初始化K个质心;在M步,计算每个样本到质心的距离,并把样本聚类到最近的之心内。不断地重复E步、M步直到之心不再变化为止。

   EM算法还可以用在高斯混合模型(Gaussian mixture model,简称GMM)、隐式马尔科夫算法(HMM)等。

2、算法优缺点

  • 缺点
    • 所要优化的函数不是凸函数时,EM算法容易给出局部最佳解,而不是最优解。EM算法比K-means算法计算复杂,收敛也较慢,不适于大规模数据集和高维数据。

参考链接

文章作者: 白丁
文章链接: http://baidinghub.github.io/2020/04/03/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E5%8D%81%E4%B8%89%EF%BC%89EM%E7%AE%97%E6%B3%95/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BaiDing's blog
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论