The EM algorithm个人笔记(一)

平时机器学习学的比较杂,一不小心其中的细节容易忘,因此将部分内容记录下来权且当个烂笔头供日后翻阅。学到什么记什么,且以EM算法为始,主要参考CS229 Lecture notes7b The EM algorithm章节。

EM算法是Expectation-Maximization算法,中文翻译为期望最大化算法,按字面意思可以知道与期望和最大值有关,可以理解为计算每个样本的某种期望,然后改变一些参数最大化某种概率,继而又可重新计算每个样本的某种期望,如此反复,直到觉得差不多了。

那EM算法一般用来干什么?比如我有一堆数据需要模拟,如果这个数据很理想(如下图中第一个图所示),那么一个标准的二维高斯分布就能模拟出来。然后现实中往往还存在下图中的其他情况(不同颜色表示不同参数的高斯模型模拟出来的点),此时若强行用一个标准的高斯分布显然无法得到精确的效果。因此我们可以引入一类潜变量,利用这类潜变量就可以获得更好的模型来模拟这些数据了。EM算法可以确定出这些潜变量从而得到最优模型(不排除局部最优)。

The EM algorithm个人笔记(一)_第1张图片

那什么是潜变量(latent variables)?维基百科上的解释是“无法直接观测到但可以由可观察变量推断得出的变量”[1]。在上图中表示各个点来自于哪个颜色的高斯分布。但如果仅仅给定一堆数据,我们是无法直接得到这些变量及其参数,甚至有几个这样的分布都不知道,所以要先做一些“”猜测,比如我们假定这堆点其实是有“3”个二维的高斯分布产生的。这里就有点像K-means算法了,K-means也是上来先假定这里有几类,然后开始对数据分类。在实际应用中,潜变量的参数也不一定都是高斯分布,这里仅以高斯分布为例来介绍下EM算法的主要思路。

那EM算法怎么干?现在看着手头上这批数据,我们希望利用联合概率分布来为其建模,并引入潜变量z(i),然后让联合概率p(x(i), z(i)) 最大,而p(x(i),z(i)) =p(x(i)|z(i))p(z(i)) 。直接求这个联合概率几乎是不可能的,因为我们不知道哪些点属于哪个高斯分布,即不知道z(i)的值。但是,如果要是知道了z(i)的值呢,以上图最右为例,我们就可以求出点属于各个颜色的概率(p(z(i)=j),j∈{1,2,3},三种颜色也就是三种高斯分布),,并且也可求出当前颜色条件下其高斯分布的两个参数(μ,Σ),然后这个这个联合概率模型也就定了。当然,知道 这三个参数(p(z(i)=j),μ,Σ),也可以计算出每个点属于各个高斯分布的概率p(z(i) = j|x(i))。EM算法就是这样一个流程,1)根据经验初始化这三个参数,求出p(z(i)=j);2)利用p(z(i)=j)的值再求出三个参数。第1步是E-step,求出每个点属于每个分布的期望(Expectation);第2步是M-step,求出参数,最大化(Maximization)联合概率分布p(x(i), z(i))。对比一下K-means算法,越发觉得相似,E-step对应求各个点到各个聚类中心的位置的距离,M-step对应重新计算聚类中心的位置,使距离最短(某种意义是也就是概率最大)。具体的公式不想直接截图,感觉那样太low,但第一次写博客又不会用MarkDown编辑器,以后再补上吧。此外凭什么EM就能收敛找到最优值,数学上也有一套证明。下次再写一篇补上。




[1] https://en.wikipedia.org/wiki/Latent_variable

你可能感兴趣的:(The EM algorithm个人笔记(一))