• 机器学习中的贝叶斯方法---当后验分布无法计算时如何求得预测模型?


    在前面两篇文章中:

    我们以抛硬币作为示例,介绍了如何使用概率论的方法来构造机器学习中的预测模型---通过概率论理论来求解模型参数。

    用到的概率论知识主要是贝叶斯理论:要想求出预测模型中的参数r(比如抛硬币出现正面的概率r),在求解之前,我们对模型有一定的了解,比如认为出现正面和反面的概率是相同的(r=0.5)。但根据我们的样本数据,比如有10个样本数据,即抛了10次硬币,出现了9次正面,那我们还有多大的把握相信模型参数r真的是0.5?

    如果r=0.5的话,抛10次硬币,抛硬币是独立重复事件,服从二项分布,那么出现9次正面的概率是:

    但是,r=0.5真的合理吗?我们之所以相信r=0.5,是根据我们的日常生活中硬币只有正反两面,出现正面和反面的机率是一样的

    然而,现实是,我们拥有的样本数据表明:抛10次硬币,有9次是正面。也即,我们做实验得出的结果却在一定程度上说明出现正面和反面的机率是不一样的。不然的话,为什么不是5次正面,5次反面呢?或者6次正面,4次反面也行啊.....

    因此,根据样本数据,我们有理由怀疑,r=0.5不是合理的值,或者说不是一个好的模型参数。我们需要 根据 实际观察到的结果(样本数据)我们日常生活对硬币的理解,重新为 r 寻找一个更合理的值。

    比如取 r=0.9,即抛一次硬币出现正面的概率是0.9,那么抛10次硬币出现9次正面的概率就是:

       

    而这个概率是要远远大于r=0.5时的情形的

        

    而既然抛10次硬币,出现了9次正面,这件事情已经铁板钉钉地发生了。根据这10次抛硬币的数据,我们应该寻找一个更合适的r,使得这件事情发生的概率最大:

    而这就是最大化似然函数的原理。也就是说,如果r=0.9,那么抛10次硬币,出现9次正面发生的可能性 要远大于 r=0.5的情形。

    因此,通过最大化似然函数求得的r,就比 单纯地依赖先验信息r=0.5 更好。

    综上所述,在上面的问题描述中:

    • 在求解模型参数之前,我们对模型有一定的了解,这在概率论中称为先验信息
    • 在(拿到)分析样本数据时,抛10次硬币,出现9次正面。我们应该为这些数据选择一个合理的参数r,当r 取某个值时,这个值对应的概率密度函数最大。这在概率论中称为最大化似然函数。(也许不太严谨)

    而贝叶斯公式呢,则是将 先验分布信息 和 似然函数 结合起来,从而求得合理的模型参数,得到后验分布,并使用后验分布(的期望)作为 预测模型。

    可是,在概率论中,求解后验分布是一件很难的事情,给出了先验分布和似然函数后,并不一定能把后验分布求解出来(比如要进行积分,而这个积分积不出)

    只有在一些特殊情况下,能够把后验分布求出来,比如:在机器学习中的贝叶斯方法---先验概率、似然函数、后验概率的理解及如何使用贝叶斯进行模型预测(2)提到的当先验分布与似然函数“共轭”时,求解后验分布就容易了。

    那么当先验分布与似然函数“不共轭”时,后验分布无法直接计算得到时,怎么办?

    一种合理的想法就是对后验分布进行近似,既然求不出“精确表达式”,那就用“近似表达式”呗。这里,主要有三种近似的策略:

    ①后验分布中包含了模型参数,使用 点估计(point estimate--the MAP solution) 方法对模型参数进行估计。这方法用到了牛顿法,首先选择一个初始点,然后通过偏导数不断选择下一个点更新初始点,直到偏导数等于0,最终得到极值。当样本的特征是多维的时,就是使用Hessian矩阵来更新了。

    显然,这是一种不断迭代的思路。因此,该方法需要考虑“收敛性”问题---最终能不能得到最值(极值)?要迭代多少次才能收敛?收敛得快不快?

    能不能收敛到最优值,可以根据Hessian矩阵的正定性(负定性)来判断,收敛得快不快则需要根据实际情况具体分析了。

    ②在“点估计”近似方法中,是直接针对模型的参数进行点估计,没有牵涉到 后验分布函数,而Laplace近似方法就是对后验分布函数进行近似。

    前面提到,我们无法精确求得后验分布函数,那可以找一个 与 后验分布 相似的函数,用它来作为我们的后验分布函数就行了。这称为Laplace approximation.

    这里的Laplace近似的基本思路就是,先将后验分布表示成Log函数的形式,然后使用泰勒展开对Log函数展开到二阶,由于我们需要最大化后验分布函数,那么一阶泰勒展开项为0,而二阶展开项,则使用高斯分布来近似表示。对于高斯分布而言,需要选择一个合理的均值和方差,具体如何选择的细节就不说了。(我也不知道)

    ③Sample techniques,该方法的思路是使用Metropolis-Hastings算法 直接对原样本数据进行近似。与方法②的区别是:方法②是对描述样本数据的分布函数进行近似,这Sample Techniques是直接对数据进行近似。

     关于上述三种“近似方法”的具体示例讲解,可参考《A First Course in Machine Learning》

    总结:本系列文章记录的是为什么使用贝叶斯进行推断?先验分布、最大化似然函数、后验分布的意义。为什么要最大化似然函数?为什么使用后验分布进行模型预测?

    在使用贝叶斯公式时,当先验分布与似然函数“非共轭”时,贝叶斯公式的分母不好计算,导致不能直接计算出后验分布,从而出现了本文中介绍的三种近似方法。

    原文:http://www.cnblogs.com/hapjin/p/6664545.html

  • 相关阅读:
    Python中的函数介绍
    Python中对文件和目录的操作
    Centos7上vsftp脚本--> sh vsftp.sh 用户名 密码 --> sh vsftp.sh install
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '***' (2)
    re模块
    模块导入
    装饰器
    内置函数 Ⅱ
    内置函数 Ⅰ
    迭代器、生成器
  • 原文地址:https://www.cnblogs.com/hapjin/p/6664545.html
Copyright © 2020-2023  润新知