最大似然估计和贝叶斯估计区别

来源:互联网 发布:在淘宝上开店货源怎么办 编辑:程序博客网 时间:2024/06/05 07:38

1.为什么要有参数估计(parameter estimation)

研究一个课题的时候,博主的第一反应一般都是”why”。为什么会有这个东东?这个东东到底能解决什么实际问题? 
OK,那我们为什么要采用参数估计的方法呢?举个很简单的实际例子,我们国家每隔一段时间需要进行人口普查,但是因为我国国土面积太大,人口太多,不太可能真正挨个人口进行统计,所以可以统计部分人口样本,然后根据这部分样本的参数去描述人口的总体分布情况。那为什么我们可以这么干?因为我们对整体分布的形式是知晓的,比如我们知道全国人民的身高体重服从正态分布,这样我们只需要取得部分样本的数据,然后估计正态分布的均值与方差即可。否则,我们就需要借助非参数的方法了。 
再用一句简单的话来总结参数估计:模型已定,参数未知!

2.最大似然估计(Maximum Likehood Estimation MLE)

最大似然估计的核心思想是:找到参数θ的一个估计值,使得当前样本出现的可能性最大。用当年博主老板的一句话来说就是:谁大像谁!

假设有一组独立同分布(i.i.d)的随机变量X,给定一个概率分布D,假设其概率密度函数为f,以及一个分布的参数θ,从这组样本中抽出x1,x2,,xn,那么通过参数θ的模型f产生上面样本的概率为: 

f(x1,x2,,xn|θ)=f(x1|θ)×f(x2|θ)×f(xn|θ)

最大似然估计会寻找关于θ 的最可能的值,即在所有可能的 θ 取值中,寻找一个值使这个采样的“可能性”最大化! 
因为是”模型已定,参数未知”,此时我们是根据样本采样x1,x2,,xn取估计参数θ,定义似然函数为: 
L(θ|x1,x2,,xn)=f(x1,x2,,xn|θ)=f(xi|θ)

实际使用中,因为f(xi|θ)一般比较小,而且n往往会比较大,连乘容易造成浮点运算下溢。所以一般我们用对数似然函数: 

lnL(θ|x1,x2,,xn)=i=1nf(xi|θ)

lˆ=1nlnL

那最终θ的估计值为: 
θˆMLE=argmaxθlˆ(θ|x1,x2,,xn)

根据前面的描述,总结一下求最大释然估计值的步骤: 
1.写似然函数 
2.一般对似然函数取对数,并将对数似然函数整理 
3.对数似然函数求导,令导数为0,求得似然方程 
4.根据似然方程求解,得到的参数即为所求估计值

3.对数似然求解实例

下面给大家举个别人文章中简单的小例子,看看对数似然的具体求解过程。 
假如有一个罐子,里面有黑白两种颜色的球,数目多少不知,两种颜色的比例也不知。我 们想知道罐中白球和黑球的比例,但我们不能把罐中的球全部拿出来数。现在我们可以每次任意从已经摇匀的罐中拿一个球出来,记录球的颜色,然后把拿出来的球 再放回罐中。这个过程可以重复,我们可以用记录的球的颜色来估计罐中黑白球的比例。假如在前面的一百次重复记录中,有七十次是白球,请问罐中白球所占的比例最有可能是多少? 
估计大家很快能反应出来答案是70%。但是如果让推导一下具体过程呢? 
我们假设罐中白球的比例是p,那么黑球的比例就是1p。因为每抽一个球出来,在记录颜色之后,我们把抽出的球放回了罐中并摇匀,所以每次抽出来的球的颜 色服从同一独立分布。这里我们把一次抽出来球的颜色称为一次抽样。题目中在一百次抽样中,七十次是白球的概率是p(x|θ),这里x是所有的抽样,θ是所给出的模型参数,表示每次抽出来的球是白色的概率为p。 
按照第二部分提到的似然估计求解过程,先写出似然函数: 

p(x|θ)=p(x1,x2,,xn|θ)=p(x1|θ)p(x2|θ)p(xn|θ)=p70(1p)30

接下来对似然函数对数化: 
lnp(x|θ)=ln(p70(1p)30)=70lnp+30ln(1p)

然后求似然方程:

lnp(x|θ)=70p301p

最后求解似然方程,得:p=0.7

以上就是最大似然估计的详细完整过程!

4.贝叶斯估计

统计学里有两个大的流派,一个是频率派,一个是贝叶斯派。时至今日,这两派还未就各自的观点达成统一。我们前面提到的最大似然估计就是频率派的典型思路,接下来再看看贝叶斯派的思路,到底跟频率派估计有何不同。 
先来看几个相关的小公式: 
两个随机变量x,y的联合概率p(x,y)的乘法公式: 

p(x,y)=p(x|y)p(y)=p(y|x)p(x)

如果x,y是独立随机变量,上面的式子可以表示为: 
p(x,y)=p(x)p(y)=p(y)p(x)

那么条件概率就可以表示为: 
p(x|y)=p(x,y)p(y),p(y|x)=p(x,y)p(x)

对于一个完备事件组y1,y2,,yn,可以使用全概率公式: 
p(x)=i=1np(yi)p(x|yi),i=1np(yi)=1

由以上这些,可以得出贝叶斯公式: 

p(yi|x)=p(x,yi)p(x)=p(yi)p(x|yi)p(x)

其中,p(yi|x)是后验概率。p(x|yi)是条件概率,或者说似然概率,这个概率一般都可以通过历史数据统计得出。而p(yi)是先验概率,一般也是根据历史数据统计得出或者认为给定的,贝叶斯里的先验概率,就是指p(yi)。对于p(x),我们前面提到可以用全概率公式计算得出,但是在贝叶斯公式里面我们一般不care这个概率,因为我们往往只需要求出最大后验概率而不需要求出最大后验的具体值。

5.MLE与Bayes的区别

细心的同学通过观察MLE与Bayes的公式,发现Bayes公式比MLE公式里就多了一项p(yi)(咱们先抛开p(x)不考虑),而条件概率或者说似然概率的表达式是一致的。从数学表达式的角度来说,两者最大的区别就在这里:贝叶斯估计引入了先验概率,通过先验概率与似然概率来求解后验概率。而最大似然估计是直接通过最大化似然概率来求解得出的。

换句话说,最大似然估计没有考虑模型本身的概率,或者说认为模型出现的概率都相等。而贝叶斯估计将模型出现的概率用先验概率的方式在计算过程中有所体现。

举个大家上学时候就遇到的例子: 
假如人们会感染一种病毒,有一种测试方法,在被测试者已感染这个病毒时,测试结果 为阳性的概率为95%。在被测试者没有感染这个病毒时,测试结果为阳性的概率为2%。现在,有一个人的测试结果为阳性,问这个人感染了病毒吗? 
如果用最大似然估计的方法,既然感染了病毒出现阳性的概率为95%,没感染出现阳性的概率为2%,本着谁大像谁的原则,那我就认为这个人已经感染了病毒。 
但是如果用贝叶斯方法进行估计,如果我们得知有一个先验概率,比如整体人群中只有1%的人会感染此种病毒,那么由贝叶斯公式: 

p(|)=p()p(|)p()p(|)+p()p(|)=0.01×0.950.01×0.95+0.99×0.02=0.324

其中,p(|)为后验概率,即我们通过检测出为阳性可以判断为真阳性的概率;p()为先验概率,p(|)为条件概率,p()p(|)+p()p(|)为全概率,检测出为阳性是由一个完备事件组构成的:这个人要么是真阳性,要么是真阴性。 
由此可见,在贝叶斯估计中,先验概率对结果的影响很大。在这种场景下,采用贝叶斯估计似乎更为合理一些。

最后来个总结:从本质上来说,最大似然是对点估计,贝叶斯推断是对分布估计。即,假设求解参数θ,最大似然是求出最有可能的θ值,而贝叶斯推断则是求解θ的分布。

6.一些tips

MLE简单又客观,但是过分的客观有时会导致过拟合(Over fitting)。在样本点很少的情况下,MLE的效果并不好。比如我们前面举的病毒的例子。在这种情况下,我们可以通过加入先验,用贝叶斯估计进行计算。 
贝叶斯估计最要命的问题是,实际应用场景中的先验概率不是那么好求,很多都是拍脑袋决定的。一旦是拍脑袋决定的,这玩意自然就不准;更有甚者,很多时候是为了方便求解生造出来一个先验。那既然这样,要这个先验还有什么卵用呢?所以频率派的支持者就揪住这点不放攻击贝叶斯派。 
在现在看来,Frequentist与Bayesian这两派还将长期并存,在各自适合的领域发挥自己的作用。