EM算法理解——从朴素贝叶斯角度出发

来源:互联网 发布:烟台大学官网网络教学 编辑:程序博客网 时间:2024/05/22 05:28

参考资料:
http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html

其实虽然说看了一天的EM算法,但是当初是没有理解这个问题的,但是今天看完了朴素贝叶斯,突然之间就理解了这个算法。
也许是个巧合。

先来回顾一下朴素贝叶斯:

类别的概率 p(y1) p(y2) 特征\类别 y1 y2 a1 distribution(a1|y1) distribution(a1|y2) a2 distribution(a2|y1) distribution(a2|y2) a3 distribution(a3|y1) distribution(a3|y2) a4 distribution(a4|y1) distribution(a4|y2)

对于朴素贝叶斯来说,关键的一点就是,类别是知道的,于是可以很容易的就计算出来不同的类别对应的不同特征的分布情况,于是可以推断出来未知样本的类别。

但是和EM算法的一个差别就是,EM算法实际上是不知道类别的,类别这一维度需要自己去构建。。

于是,在朴素贝叶斯的基础上,我们需要调换两个维度。

按照我画的朴素贝叶斯的表格来看,可以看出来的是横轴是类别,这在EM算法中是不变的。朴素贝叶斯中纵轴是特征的编号,每一个元素是根据样本来进行的分布的计算。纵轴在EM算法中就变成了不同的样本,而每一个元素就是对应的一个概率的计算。这就意味着,其实原本表格中包含的三个维度——类别、特征、样本只不过是从不同的角度去观察,然后压缩成了二维。

压缩了样本这一维度,剩下的特征、类别构成了朴素贝叶斯。

压缩了特征这一维度,剩下的样本、类别构成了EM算法。

所以其实我认为二者还是有内在联系的。

EM算法矩阵:

类别的概率 p(y1) p(y2) 特征\类别 y1 y2 x1 prob(x1|y1) prob(x1|y2) x2 prob(x2|y1) prob(x2|y2) x3 prob(x3|y1) prob(x3|y2) x4 prob(x4|y1) prob(x4|y2)

当然,计算prob或者说计算一个概率通常都是有自己的计算方法的,这个可以是自己定义的函数,毕竟样本的特征可以随便表示,而矩阵中需要表示的只是最后的计算结果。换句话说prob(xi|yj) = f(xi,yj)这个f函数是可以任意表示的。

EM算法其实就是一个迭代的过程。(请先阅读reference[1])。

目标——theta,也就是对于不同的样本进行自动分类的一个结果,可以看作是这个矩阵。
隐变量——类别,或者说是聚类中心,其实我认为都是没什么问题的,就是为了增强区分性的一个中心点y。

E步骤是计算最大期望,也就是在当前的theta分布的情况下,什么样的一个y的分布能够最好的拟合样本,根据Jensen不等式(看reference[1]),可以看出来,如果是单个元素,只要y和xi的分布相同即可,但是从整体的角度考虑,还是需要和整体的样本分布相同。

M步骤就是重新计算矩阵的分布。

那么为什么说E步骤是建立下界呢?因为当y的分布基本和数据的整体分布相同的时候,好了,我的最大拟合的目标已经达成。

为什么说M步骤是优化下界呢?如果theta分布不变,好,y就完成了。但是因为上一个计算的y是在上一个theta下效果最好。但是由于整体的当前的最好分布变了,使得元素的分布也会相应改变。

Reference:
http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html

0 0