参考资料:
http://blog.csdn.net/zouxy09/article/details/8537620
我的数据挖掘算法代码实现:
https://github.com/linyiqun/DataMiningAlgorithm
介绍
em算法是一种迭代算法,用于含有隐变量的参数模型的最大似然估计或极大后验概率估计。EM算法,作为一个框架思想,它可以应用在很多领域,比如说数据聚类领域----模糊聚类的处理,待会儿也会给出一个这样的实现例子。
EM算法原理
EM算法从名称上就能看出他可以被分成2个部分,E-Step和M-Step。E-Step叫做期望化步骤,M-Step为最大化步骤。
整体算法的步骤如下所示:
1、初始化分布参数。
2、(E-Step)计算期望E,利用对隐藏变量的现有估计值,计算其最大似然估计值,以此实现期望化的过程。
3、(M-Step)最大化在E-步骤上的最大似然估计值来计算参数的值
4、重复2,3步骤直到收敛。
以上就是EM算法的核心原理,也许您会想,真的这么简单,其实事实是我省略了其中复杂的数据推导的过程,因为如果不理解EM的算法原理,去看其中的数据公式的推导,会让人更加晕的。好,下面给出数据的推导过程,本人数学也不好,于是用了别人的推导过程,人家已经写得非常详细了。
EM算法的推导过程
jensen不等式
在介绍推导过程的时候,需要明白jensen不等式,他是一个关于凸函数的一个定理,直接上公式定义;
如果f是凸函数,X是随机变量,那么