EM算法

来源:互联网 发布:现在windows哪个版本好 编辑:程序博客网 时间:2024/05/07 18:35

    问题描述:EM算法用来描述含有隐藏变量的估计问题;在作出某些假设时,训练数据中的一些变量可能从未出现。举个简单的例子:

    假设h:明天去campfire

    训练数据集合D={d1,d2,....dn},di包含的变量有storm,lightning,thunder,forestfire,这四个观测数据可能只有一个子集能在训练集中观测到。这时候的任务就是根据这些残缺的训练数据区做一个最大似然假设。

    用EM算法来估计K个高斯分布的均值:

    数据D是个实例集合,每个实例Xi生成包含两个步骤1.随机选择K个正态分布中的一个;2.随机变量Xi按照此选择的分布生成。假设这K个分布都有相同的方差。

    学习任务是输出一个假设h={u1,u2,.....,uk};它描述了K个分布中每个分布的均值。我们希望对这些均值找到一个极大似然假设,即一个使P(D|h)最大化的假设。

    当给定从一个正态分布中得到的实例数据X1,X2,……Xm时,它的均值的极大似然假设是:

     而我们这里的问题涉及到K个正态分布,并且不知道每个样例Xi来自于哪个分布,因此这是一个涉及隐藏变量的例子。假设K=2,可以把每个样例描述成(Xi,Zi1,Zi2)的形式,Zi1在Xi由第一个正态分布生成时为1,否则为0;这里使用EM算法来解决这个隐含变量问题,具体算法步骤如下:

     1.初始化假设h={u1,u2},其中u1,u2为任意的初始值;

     2.计算当前每个隐藏变量Zij的期望值E[Zij],假定当前假设h成立;

         其中E[Zij]正是实例是由第j个正态分布生成的概率:

     3.根据第2步计算得到一个新的极大似然假设h',

重复循环2.3步

原创粉丝点击