• 机器学习2-极大似然估计与贝叶斯估计


    参数估计:最大似然、贝叶斯与最大后验

    为什么会有参数估计呢?这要源于我们对所研究问题的简化和假设。我们在看待一个问题的时候,经常会使用一些我们所熟知的经典的模型去简化问题,就像我们看一个房子,我们想到是不是可以把它看成是方形一样。如果我们已经知道这个房子是三间平房,那么大体上我们就可以用长方体去描述它的轮廓。这个画房子的问题就从无数的可能性中,基于方圆多少里大家都住平房的经验,我们可以假设它是长方体,剩下的问题就是确定长宽高这三个参数了,问题被简化了。再如学生考试的成绩,根据既往的经验,我们可以假设学生的成绩是正态分布的,那么剩下的问题就是确定分布的期望和方差。所以,之所以要估计参数,是因为我们希望用较少的参数去描述数据的总体分布。而可以这样做的前提是我们对总体分布的形式是知晓的,只需要估计其中参数的值;否则我们要借助非参数的方法了。

    参数估计的方法有多种,这里我们分析三种基于概率的方法,分别是最大似然估计(Maximum Likelihood)、贝叶斯估计(Bayes)和最大后验估计(Maximum a posteriori)。我们假设我们观察的变量是x,观察的变量取值(样本)为mathcal{D}={x_1, ...,x_N},要估计的参数是	hetax的分布函数是p(x|	heta)(我们用条件概率来显式地说明这个分布是依赖于	heta取值的)。实际中,x	heta都可以是几个变量的向量,这里我们不妨认为它们都是标量。

    • 最大似然估计 Maximum Likelihood (ML)

    “似然”的意思就是“事情(即观察数据)发生的可能性”,最大似然估计就是要找到	heta的一个估计值,使“事情发生的可能性”最大,也就是使p(mathcal{D}|	heta)最大。一般来说,我们认为多次取样得到的x独立同分布的(iid)(假设样本之间都是相对独立的),这样

     p(mathcal{D}|	heta)=prod_{substack{i=1}}^{N}{p(x_i|	heta)}

    由于p(x_i)一般都比较小,且N一般都比较大,因此连乘容易造成浮点运算下溢,所以通常我们都去最大化对应的对数形式

    	heta_{ML}^{*}=argmax_{	heta}{Sigma_{i=1}^{N}{log{p(x_i|	heta)}}}

    具体求解释时,可对右式对	heta求导数,然后令为0,求出	heta值即为	heta_{ML}^{*}

    最大似然估计属于点估计,只能得到待估计参数的一个值。(1) 但是在有的时候我们不仅仅希望知道	heta_{ML}^{*},我们还希望知道	heta取其它值得概率,即我们希望知道整个	heta在获得观察数据mathcal{D}后的分布情况p(	heta|mathcal{D}). (2) 最大似然估计仅仅根据(有限的)观察数据对总体分布进行估计,在数据量不大的情况下,可能不准确。例如我们要估计人的平均体重,但是抽样的人都是小孩,这样我们得到的平均体重就不能反映总体的分布,而我们应该把“小孩之占总人口20%”的先验考虑进去。这时我们可以用贝叶斯方法。

    • 贝叶斯估计 Bayes

    使用Bayes公式,我们可以把我们关于	heta的先验知识以及在观察数据结合起来,用以确定	heta的后验概率p(	heta|mathcal{D})

    p(	heta|mathcal{D})=frac{1}{Z_D}p(mathcal{D}|	heta)p(	heta)

    其中Z_D=int_{	heta} {p(mathcal{D}|	heta)p(	heta)}\,mathrm{d}	heta是累积因子,以保证p(	heta|mathcal{D})和为1。要使用Bayes方法,我们需有关于	heta的先验知识,即不同取值的概率p(	heta)。比如	heta=1表示下雨,	heta=0表示不下雨,根据以往的经验我们大体上有P(	heta=1)=0.01P(	heta=0)=0.99,在这种知识不足的时候,可以假设	heta是均匀分布的,即取各值的概率相等。

    在某个确定的	heta取值下,事件x的概率就是p(x|	heta),这是关于	heta的函数,比如一元正态分布p(x|	heta)=frac{1}{sqrt{2pi}}exp(-frac{(x-	heta)^2}{2})。与上一节中的一样,我们认为各次取样是独立的,p(mathcal{D}|	heta)可以分开来写,这样我们就可以得到p(	heta|mathcal{D})的一个表达式,不同的	heta对应不同的值。

    根据获得的p(	heta|mathcal{D}),我们边可以取使其最大化的那个	heta取值,记为	heta_{B}^{*}。可能有人已经看出问题来了:我们做了很多额外功,为了求得一个	heta_{B}^{*},我们把	heta取其它值的情况也考虑了。当然在有的时候p(	heta|mathcal{D})分布是有用的,但是有的时候我们取并不需要知道p(	heta|mathcal{D}),我们只要那个	heta_{B}^{*}。最大后验估计这个时候就上场了。

    • 最大后验估计 MAP

    最大后验估计运用了贝叶斯估计的思想,但是它并不去求解p(	heta|mathcal{D}),而是直接获得	heta_{B}^{*}。从贝叶斯估计的公式可以看出,Z_D是与	heta无关的,要求得使p(	heta|mathcal{D})最的的	heta,等价于求解下面的式子:

    	heta_{MAP}^{*}={argmax}_{	heta}{ p(	heta|x)}=argmax_{	heta}{p(x|	heta)p(	heta)}

    与最大似然估计中一样,我们通常最大化对应的对数形式:

    	heta_{MAP}^{*}=argmax_{	heta}{log{p(x|	heta)}+log{p(	heta)}}

    这样,我们便无需去计算Z_{mathcal{D}},也不需要求得具体的p(	heta|mathcal{D})部分,便可以得到想要的	heta_{MAP}^{*}

    总结一下:三种方法各有千秋,使用于不同的场合。当对先验概率p(	heta)的估计没有信心,可以使用最大似然估计(当然也可以使用其它两种)。贝叶斯估计得到了后验概率的分布,最大似然估计适用于只需要知道使后验概率最大的那个	heta

    另外一方面,我们可以感觉到,最大似然估计和Bayes/MAP有很大的不同,原因在于后两种估计方法利用了先验知识p(	heta),如果利用恰当,可以得到更好的结果。其实这也是两大派别(Frequentists and Bayesians)的一个区别。

    其他区别:

    在先验概率能保证问题有解的情况下,最大似然估计和贝叶斯估计在训练样本趋近于无穷时得到的结果是一样的!但是实际的模式识别问题中,训练样本总是有限的,我们应如何选择使用哪种模型呢?下面简单分析分析:

    (1) 计算复杂度:就实现的复杂度来说,肯定是有限选择最大似然估计,最大似然估计中只需要使用到简单的微分运算即可,而在贝叶斯估计中则需要用到非常复杂的多重积分,不仅如此,贝叶斯估计相对来说也更难理解;

    (2)准确性:当采用的样本数据很有限时,贝叶斯估计误差更小,毕竟在理论上,贝叶斯估计有很强的理论和算法基础。

    参数化估计的缺点: 
    贝叶斯估计和最大似然估计都是属于参数化估计,那么二者存在着一个共同的缺点:参数化估计虽然使得类条件概率密度变得相对简单,但估计结果的准确性严重依赖于所假设的概率分布形式是否符合潜在的真实数据分布。在现实应用中,与做出能较好的接近潜在真实分布中的假设,往往需要一定程度上利用关于应用任务本身的经验知识,否则若仅凭“猜测”来假设概率分布形式,很可能产生误导性的结果!所以没有什么算法是十全十美的啦!

    参考文献:

    https://www.cnblogs.com/stevenbush/articles/3357803.html

    http://blog.csdn.net/feilong_csdn/article/details/61633180

  • 相关阅读:
    蒙特卡罗算法之素数测试
    蒙特卡罗算法之主元素问题
    拉斯维加斯随机化算法求解整数因子分解
    拉斯维加斯算法之n后问题
    舍伍德算法之跳跃表问题
    舍伍德算法之线性时间选择问题
    X oracle 11g 旧的归档日志无法清理
    问题 C: B C++时间类的运算符重载
    设有三个进程A、B、C,其中A与B构成一对生产者与消费者(A为生产者,B为消费者),共享一个由n个缓冲块组成的缓冲池;B与C也构成一对生产者与消费者(此时B为生产者,C为消费者)共享另一个由m个缓冲块组成的缓冲池。用P、V操作描述它们之间的同步关系。
    某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用。水缸可容10桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为3个。每次入、取缸水仅为1桶,且不可以同时进行。试用P、V操作给出小和尚、老和尚动作的算法描述。
  • 原文地址:https://www.cnblogs.com/W-Yentl/p/8290071.html
Copyright © 2020-2023  润新知