前面讨论的极大似然估计方法是一种常用的参数估计方法,它是假设分布的形式,然后用训练样本来估计分布的参数。但实际任务中,我们遇到一个很大的问题就是训练样本不完整。这时就需要用到EM(Expectation-Maximization)算法了。

    所谓不完整的样本,说的是这个样本某些属性的值缺失了。将每个属性的取值看为一个变量,那么缺失的就可以看作“未观测”变量,比方说有的西瓜根蒂脱落了,没办法看出根蒂是“蜷缩”还是“硬挺”,那么这个西瓜样本的根蒂属性取值就是一个“未观测”变量,更准确地说,称作隐变量(latent variable)

    整个训练集可以划分为已观测变量集 EM算法 - 图1 和隐变量集 EM算法 - 图2 两部分。按照极大似然的思路,我们依然是想找出令训练集被观测到的概率最大的参数 EM算法 - 图3。也即最大化对数似然:

    EM算法 - 图4%20%3D%20%5Cln%20P(X%2CZ%5C%20%7C%5C%20%5CTheta)%0A#card=math&code=LL%28%5CTheta%5C%20%7C%5C%20X%2CZ%29%20%3D%20%5Cln%20P%28X%2CZ%5C%20%7C%5C%20%5CTheta%29%0A&id=UqiIR)

    但是,由于 EM算法 - 图5 是隐变量,我们没办法观测到,所以上面这个式子实际是没法求的。

    怎么办呢?EM算法的思路很简单,步骤如下:

    1. 设定一个初始的 EM算法 - 图6
    2. 按当前的 EM算法 - 图7 推断隐变量 EM算法 - 图8 的(期望)值
    3. 基于已观测变量 EM算法 - 图9 和 步骤2得到的 EM算法 - 图10EM算法 - 图11 做最大似然估计得到新的 EM算法 - 图12
    4. 若未收敛(比方说新的 EM算法 - 图13 与旧的 EM算法 - 图14 相差仍大于阈值),就回到步骤2,否则停止迭代

    EM算法可以看作是用坐标下降(coordinate descent)法来最大化对数似然下界的过程,每次固定 EM算法 - 图15 或者 EM算法 - 图16 中的一个去优化另一个,直到最后收敛到局部最优解。

    理论上,用梯度下降也能求解带隐变量的参数估计问题,但按我的理解,由于隐变量的加入,使得求导这个步骤非常困难,计算也会随着隐变量数目上升而更加复杂,EM算法避免了这些麻烦。

    朴素贝叶斯分类器的属性条件独立性假设在现实中很难成立,但事实上它在大多数情形下都有不错的性能。关于这点,有以下两种解释:

    1. 对分类任务来说,只需各类别的条件概率排序正确,即使概率值不准确,也可以产生正确的分类结果;
    2. 若属性间的相互依赖对所有类别影响都相同,或者依赖关系互相抵消,则属性条件独立性假设在降低开销的同时不会给性能带来负面影响;

    注意,本章讨论的贝叶斯分类器和一般意义上的贝叶斯学习(Bayesian learning)是有很大差别的,本章讨论的贝叶斯分类器只是通过最大化后验概率来进行单点估计,获得的仅仅是一个数值;而贝叶斯学习则是进行分布估计或者说区间估计,获得的是一个分布。