根据上一篇贝叶斯分类器(1)贝叶斯决策论概述、贝叶斯和频率、概率和似然,我们对贝叶斯分类器所要解决的问题、问题的求解方法做了概述,将贝叶斯分类问题转化成了求解的问题,并提出了第一个求解方法:极大似然估计,也对似然的概念做了一定的理解,在本篇中,我们来介绍极大似然估计的原理、使用方法及其与最大后验估计MAP的区别。
1 极大似然估计
1.1 极大似然估计的步骤
我们已经知道,似然即参数的似然,表示给定样本下,参数为真值的可能性,所以,极大似然估计就是以最大化参数的似然值的方法来估计参数的真值的算法。
极大似然函数估计值的一般步骤:
- 假设概率服从某种确定的概率分布(或者分布已知);
- 写出似然函数:;
- 对似然函数取对数,并整理;
- 求导数;
- 解似然方程,得到极大似然的参数;
对于一批样本,共有M个属性值和N个类别,那么就是一个M维向量,要求得,其实就是要求,因为对不同的类别,类条件概率应该是不同的分布,所以应该有N个不同的分布假设和似然函数。
我们按极大似然估计的步骤来看看怎样计算
- 假设分布:假设具有确定的形式并且被参数向量唯一确定,则我们的任务就是利用训练集估计参数。我们将假设的分布记为;
- 似然函数,取对数:表示训练集中第类样本组成的集合,假设这些样本是独立同分布的,则参数对于数据集的似然函数是:
取对数得到对数似然函数,连乘转换为累加,求导之类的计算更加方便:
- 求导数:当似然函数取得极大值时,自变量的导数应该为0,所以可以得到针对参数向量中每个参数求偏导之后的方程组:
- 解似然方程:求解方程组得到参数向量,确定所假设的分布,根据的取值得到其概率。
注意:
- 当属性值的个数时,属于假设的分布是单个属性的分布,还比较好计算;
- 当属性值的个数时,多个属性的分布是多维随机变量分布,需要计算其多个属性的联合分布概率,这个计算方法是比较困难的。
1.2 从散度的角度解读极大似然估计
知乎上大神详细介绍了从散度的角度解读极大似然估计:知乎 - 微调的回答,跟随大神的脚步学习一下(原回答了引入了期望,我觉得其实不用期望也没问题):
MLE的第一步是假设分布(或者已有一个分布),接下来就是通过最大化发生的概率来求得分布参数,认为这就是最可能真实的分布,这个思路其实还是有一点绕的,凭什么说发生的概率最大的参数就是真的参数呢?我们的目的是求出真实分布,最直观的思路应该是看我们算出来的分布跟真实分布的相似程度,这刚好可以通过散度来解释。
这里的散度是机器学习的散度,也就是信息论中的散度,与物理上的散度不太一样。机器学习中我们常用的散度是KL散度(KL-Divergence)。信息论中,可以理解为:用来衡量在同一份数据P下,使用P的编码方案和Q的编码方案的平均编码长度的差异,如果我们把真实的分布和计算得到的分布看做样本数据的编码方案,那么我们就可以用KL散度来计算两种分布之间的相似程度:
注意上面两个分布的顺序是不能变的,因为定义中的P必须是真实分布,数据就是由P产生的。我们的目标是人是让最小,注意到式中是定值,所以:
看上面的推导,再看看极大似然的公式:
是不是根本就是一样的?所以其实如果我们正向考虑极大似然估计,当模型是条件概率分布,损失函数是对数损失函数时,极大似然估计就是做经验风险最小化;如果我们反过来考虑,即上面从散度推导的过程,MLE就是在寻找最接近真实分布的分布。
1.3 极大似然估计实例
以上一篇提到的西瓜好坏分类为例:
西瓜数据集如下图:
显然样本共有个属性值和个类别,首先根据样本估计类先验概率,然后为每个属性估计条件概率,要求,应该假设两个六维概率分布,比如我们假设样本为6元正态分布:
均值向量为6维向量,协方差矩阵是一个6*6的正定矩阵。
然后分别写出似然函数的对数形式:
最后再求偏导解方程即可,多元正态分布求导计算还是挺复杂的,本篇主要讲极大似然估计,具体计算过程就不写了,大家明白是怎么做的就好。
讲完了极大似然估计的理论和操作,再来看看它和一个跟它很像的算法最大后验估计MAP的关系。
2 MLE和MAP的区别和联系
极大似然估计MLE是频率学派的参数估计方法,最大后验估计MAP是贝叶斯学派的参数估计方法。因此,同样是参数估计的问题,MLE中参数是确定值,故定义为;MAP中参数是一个随机变量,故定义为,是一个后验概率,受到先验和样本的共同作用,这就是他们最本质的区别了,由此可得到其计算过程的区别:
极大似然估计MLE对参数的估计是:
最大后验估计MAP对参数的估计是:
我们发现原来MAP与MLE在计算上的不同就是多了一个先验概率项,因此如果有一个合理的先验的话,MAP会比MLE对样本数据的依赖更小一些,如果数据量很大的话他们基本就是一样的了,以我们上一篇中的抛硬币例子来说:
有一个硬币,它有的概率会正面向上,有的概率反面向上。现有正反序列:。无论的值是多少,这个序列的概率值为
如果按极大似然估计计算,取对数求导后计算得到,这似乎不太符合我们的常识,如果是用MAP呢?对抛硬币问题,我们先验是(注意MAP中的是随机变量,先验是一个分布,不能是一个数值哦,如果给一个数值的话,样本就不起作用了),因此:
正态分布的概率密度函数:
因此:
在MAP中使用一个高斯分布的先验的效果就类似于在MLE中采用L2正则,相当于结构风险最小化,可以说,当模型是条件概率分布、损失函数是对数损失函数、模型复杂度由模型的先验概率表示时,结构风险最小化就等价于最大后验估计。
回到的计算上来,进行取对数、求导,可得,结果受到了先验和样本共同的作用。
显然MAP的计算要麻烦的多,现实中很多问题都要比我们的例子复杂的多,其求解通常不会像我们的例子这样求导计算。
总结一下:
- MLE是频率学派的参数估计方法,MAP是贝叶斯学派的参数估计方法,基本思想不同;
- MLE是一种经验风险最小化,MAP是一种结构风险最小化;
- 在计算上,MAP比MLE多了一个先验概率项,随着数据量的增加,先验的影响力会越来越小;
- MAP对先验的假设比较依赖,需要有好的先验假设。
3 极大似然估计求解总结
我们将贝叶斯分类器转化为了求解的问题,使用极大似然估计是我们介绍的第一个求解方法,它还存在一些不足:
- 对分布的假设强依赖,所假设的概率分布形式需要符合潜在的真实数据分布,这个比较难;
- 对于多个属性值的样本,使用极大似然估计计算比较困难。
在下一篇中,我们来看看求解问题的另一个方法:朴素贝叶斯。
主要参考资料
《机器学习》周志华
《统计学习方法》 李航
知乎 - 微调的回答
聊一聊机器学习的MLE和MAP:最大似然估计和最大后验估计
最大后验估计MAP