最大期望算法(EM)
K均值算法很easy(可參见之前公布的博文),相信读者都能够轻松地理解它。
但以下将要介绍的EM算法就要困难很多了。它与极大似然预计密切相关。
1 算法原理
最好还是从一个样例開始我们的讨论。如果如今有100个人的身高数据,并且这100条数据是随机抽取的。
一个常识性的看法是。男性身高满足一定的分布(比如正态分布),女性身高也满足一定的分布。但这两个分布的參数不同。
我们如今不仅不知道男女身高分布的參数,甚至不知道这100条数据哪些是来自男性。哪些是来自女性。这正符合聚类问题的如果,除了数据本身以外,并不知道其它不论什么信息。而我们的目的正是判断每一个数据应该属于哪个分类。所以对于每一个样本,都有两个须要被预计的项,一个就是它究竟是来自男性身高的分布。还是来自女性身高的分布。另外一个就是,男女身高分布的參数各是多少。
既然我们要预计知道A和B两组參数,在開始状态下二者都是未知的。但如果知道了A的信息就能够得到B的信息,反过来知道了B也就得到了A。
所以可能想到的一种方法就是考虑首先赋予A某种初值,以此得到B的预计。然后从B的当前值出发。又一次预计A的取值,这个过程一直持续到收敛为止。你是否隐约想到了什么?是的。这恰恰是K均值算法的本质。所以说K均值算法中事实上蕴含了EM算法的本质。
EM算法,又称期望最大化(Expectation Maximization)算法。在男女身高的问题里面,能够先随便猜一下男生身高的正态分布參数:比方能够如果男生身高的均值是1.7米,方差是0.1米。当然。这不过我们的一个推測,最開始肯定不会太准确。
但基于这个推測,便可计算出每一个人更可能属于男性分布还是属于女性分布。比如有个人的身高是1.75米,显然它更可能属于男性身高这个分布。据此,我们为每条数据都划定了一个归属。
接下来就能够依据最大似然法,通过这些被大概觉得是男性的若干条数据来又一次预计男性身高正态分布的參数,女性的那个分布相同方法又一次预计。然后,当更新了这两个分布的时候,每一个属于这两个分布的概率又发生了改变,那么就再须要调整參数。如此迭代,直到參数基本不再发生变化为止。
在正式介绍EM算法的原理和运行过程之前,此处首先对边缘分布的概念稍作补充。
2. 收敛探讨
在下一篇中我们将讨论高斯混合模型(GMM),相当于是EM的一种实现。并给出在R中进行数据挖掘的实例。
未完,待续...
-----------------------------------------------------------------
本文參考文献:
1、斯坦福的公开课——机器学习 。由Andrew Ng主讲
2、JerryLead的博客
3、数据挖掘导论,Pang-Ning Tan,Michael Steinbach,Vipin Kumar 著