EM算法
2018-03-19 本文已影响0人
茄子cheer
EM算法实际上是一个鸡生蛋,蛋生鸡的问题。
假设男生和女生的身高分布都服从正态分布。现在有一批身高数据,包含男生的数据和女生的数据,要求求出男生和女生各自的身高的正态分布的模型。
当我们知道了每个人是男生还是女生,我们可以很容易利用最大似然对男女各自的身高的分布进行估计。
反过来,当我们知道了男女身高的分布参数我们才能知道每一个人更有可能是男生还是女生。例如我们已知男生的身高分布为N(μ1=172,σ1^2=25), 女生的身高分布为N(μ2=162,σ2^2=25), 一个学生的身高为180,我们可以推断出这个学生为男生的可能性更大。
但是现在我们既不知道每个学生是男生还是女生,也不知道男生和女生的身高分布。这就成了一个先有鸡还是先有蛋的问题了。
EM的意思是“Expectation Maximization”,具体方法为:
1、先设定男生和女生的身高分布参数(初始值),例如男生的身高分布为N(μ1=172,σ1^2=25), 女生的身高分N(μ2=162,σ2^2=25)布为 ,当然了,刚开始肯定没那么准;
2、然后计算出每个人更可能属于第一个还是第二个正态分布中的(例如,这个人的身高是180,那很明显,他最大可能属于男生的那个分布),这个是属于Expectation 一步。
3、我们已经大概地按上面的方法将这200个人分为男生和女生两部分,我们就可以根据之前说的最大似然估计分别对男生和女生的身高分布参数进行估计。这个是 Maximization;
4、然后,当我们更新这两个分布的时候,每一个学生属于女生还是男生的概率又变了,那么我们就再需要调整E步;
5、……如此往复,直到参数基本不再发生变化为止。