EM算法
最大期望算法(Expectation Maximization Algorithm,又译期望最大化算法),是一种迭代算法,用于含有隐变量(latent variable)的概率参数模型的最大似然估计或极大后验概率估计。来自百度百科的定义,不知道是不是就我一个没有看懂。反正我是没怎么看懂。那就让我 一一道来:O(∩_∩)O哈哈~
简单的算法思想:
小时候,老妈给一大袋糖果给你,叫你和你姐姐等分,然后你懒得去点糖果的个数,所以你也就不知道每个人到底该分多少个。咱们一般怎么做呢?先把一袋糖果目测的分为两袋,然后把两袋糖果拿在左右手,看哪个重,如果右手重,那很明显右手这代糖果多了,然后你再在右手这袋糖果中抓一把放到左手这袋,然后再感受下哪个重,然后再从重的那袋抓一小把放进轻的那一袋,继续下去,直到你感觉两袋糖果差不多相等了为止。
EM
算法就是这样,假设我们想估计知道
A
和
B
两个参数,在开始状态下二者都是未知的,但如果知道了
A
的信息就可以得到
B
的信息,反过来知道了
B
也就得到了
A
。可以考虑首先赋予
A
某种初值,以此得到
B
的估计值,然后从
B
的当前值出发,重新估计
A
的取值,这个过程一直持续到收敛为止。
首先我们先来举个例子,如果你想要调查一下 你们学校男女身高分布问题,你不会每个每个的去统计,去问吧 应该不会这么傻,那我们怎么做呢 假设 你现在混乱 随机的抽取了300个男女生,他们是混在一起的,你随机抽取一个,此时的你是不知道抽取的这个身高是从服从男生分布里抽的还是服从女生分布里的抽取的,换句话说:
抽取得到的每个样本都不知道是从哪个分布抽取的。
这个时候,对于每一个样本或者你抽取到的人,就有两个东西需要猜测或者估计的了,一是这个人是男的还是女的?二是男生和女生对应的身高的高斯分布的参数是多少?
只有当我们知道了哪些人属于同一个高斯分布的时候,我们才能够对这个分布的参数作出靠谱的预测,例如刚开始的最大似然所说的,但现在两种高斯分布的人混在一块了,我们又不知道哪些人属于第一个高斯分布,哪些属于第二个,所以就没法估计这两个分布的参数。反过来,只有当我们对这两个分布的参数作出了准确的估计的时候,才能知道到底哪些人属于第一个分布,那些人属于第二个分布。
EM
的意思是“
Expectation Maximization
”,在我们上面这个问题里面,我们是先随便猜一下男生(身高)的正态分布的参数:如均值和方差是多少。例如男生的均值是
1
米
7
,方差是
0.1
米(当然了,刚开始肯定没那么准),然后计算出每个人更可能属于第一个还是第二个正态分布中的(例如,这个人的身高是
1
米
8
,那很明显,他最大可能属于男生的那个分布),这个是属于
Expectation
一步。有了每个人的归属,或者说我们已经大概地按上面的方法将这
200
个人分为男生和女生两部分,我们就可以根据之前说的最大似然那样,通过这些被大概分为男生的
n
个人来重新估计第一个分布的参数,女生的那个分布同样方法重新估计。这个是
Maximization
。然后,当我们更新了这两个分布的时候,每一个属于这两个分布的概率又变了,那么我们就再需要调整
E
步……如此往复,直到参数基本不再发生变化为止。