一起学西瓜书07 贝尔斯分类器

(六)EM算法

对于EM算法,我会先给出书上的流程,再结合一个容易懂的案例来理解
EM 算法 (Expectation Maximization)

大致流程

隐变量就是我们看不见的,比如下图中的根蒂属性
一起学西瓜书07 贝尔斯分类器(六)EM算法
一起学西瓜书07 贝尔斯分类器(六)EM算法
一起学西瓜书07 贝尔斯分类器(六)EM算法

案例

我们抽取了一个学校两百名学生的身高,但粗心的忘记了统计男女
在这里我们假设男生和女生的身高分别服从不同参数的正态分布,那么对于这个问题我们该如何实验EM算法最后确定出合理的参数

问题很简单,我们需要估计的问题有2个

  • 学生是男生还是女生
  • 男生和女生对应的身高正态分布参数是什么

很明显,这两个问题是相互依赖的

  • 如果我们事先知道了人的性别, 那么我们可以利用极大似然法 分别对男生身高数据集和女生身高数据集来估计
  • 如果我们事先知道了两种数据集的正态分布参数 ,比如男生服从N(175,52)N\sim(175,5^2) 女生服从N(160,52)N\sim(160,5^2) ,在这个时候,对于一个180的数据,我们就认为他是男生的概率更大一些

而我们这边为什么要采用EM算法呢,就是因为要估计的两个问题我们都不知道, 如果我们知道其中一个, 另一个就很简单了,这就有点类似鸡生蛋还是蛋生鸡的问题
EM算法在这里的解决办法就是 先估计其中一个的值,然后再通过迭代(类似坐标下降的算法)来优化参数
EM算法一个就两个步骤, 也很形象 一个是E步,一个是M步

  • E步 Expectation
    • 说的白一点 就是我们先假定男生和女生的身高分布参数,例如男生服从N(175,52)N\sim(175,5^2) 女生服从N(160,52)N\sim(160,5^2)
    • 在这个时候,对于200个数据集的每个数据,我们都可以通过身高来估计它属于男生还是女生,最后得到一个新的带男女标签的身高数据集
  • M步 Maximization
    • 对于新的带标签的数据集,我们就可以根据之前说的极大似然估计法分别对男生和女生的身高分布参数进行估计,也就更新了我们在E步估计的参数
  • 经过M步之后,因为参数已经更新过了,这个时候我们就需要重新对数据集的身高进行男女估计 ...... 然后就开始重复之前的步骤
  • 这样一轮轮的E和M下来,知道最终参数变化不再明显,就达到了我们最终的目的

这就是EM算法的流程与原理,对于详细的数学推导,建议去下面知乎的文章里面看,写的比较详细

人人都懂EM算法
EM算法存在的意义是什么?

相关文章: