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

简介:

在前面两篇文章中:

 

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

用到的概率论知识主要是贝叶斯理论:要想求出预测模型中的参数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》

 

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

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

 本文转自hapjin博客园博客,原文链接:http://www.cnblogs.com/hapjin/p/6664545.html,如需转载请自行联系原作者

相关文章
|
1月前
|
机器学习/深度学习 数据采集 人工智能
Machine Learning机器学习之贝叶斯网络(BayesianNetwork)
Machine Learning机器学习之贝叶斯网络(BayesianNetwork)
|
2天前
|
机器学习/深度学习 人工智能 数据挖掘
【机器学习】贝叶斯统计中,“先验概率”和“后验概率”的区别?
【5月更文挑战第11天】【机器学习】贝叶斯统计中,“先验概率”和“后验概率”的区别?
|
2天前
|
机器学习/深度学习
【机器学习】贝叶斯统计中,“似然”和“后验概率”有什么区别?
【5月更文挑战第11天】【机器学习】贝叶斯统计中,“似然”和“后验概率”有什么区别?
|
2天前
|
机器学习/深度学习 存储 算法
【机器学习】使用贝叶斯模型做分类时,可能会碰到什么问题?怎么解决?
【5月更文挑战第11天】【机器学习】使用贝叶斯模型做分类时,可能会碰到什么问题?怎么解决?
|
2天前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】什么是贝叶斯网络?
【5月更文挑战第10天】【机器学习】什么是贝叶斯网络?
|
3天前
|
机器学习/深度学习
【机器学习】噪声数据对贝叶斯模型有什么样的影响?
【5月更文挑战第10天】【机器学习】噪声数据对贝叶斯模型有什么样的影响?
|
7天前
|
数据可视化
R语言机器学习方法分析二手车价格影响因素
R语言机器学习方法分析二手车价格影响因素
|
13天前
|
机器学习/深度学习 数据可视化 前端开发
【Python机器学习专栏】机器学习模型评估的实用方法
【4月更文挑战第30天】本文介绍了机器学习模型评估的关键方法,包括评估指标(如准确率、精确率、召回率、F1分数、MSE、RMSE、MAE及ROC曲线)和交叉验证技术(如K折交叉验证、留一交叉验证、自助法)。混淆矩阵提供了一种可视化分类模型性能的方式,而Python的scikit-learn库则方便实现这些评估。选择适合的指标和验证方法能有效优化模型性能。
|
13天前
|
机器学习/深度学习 算法 Python
【Python机器学习专栏】Python中的特征选择方法
【4月更文挑战第30天】本文介绍了机器学习中特征选择的重要性,包括提高模型性能、减少计算成本和增强可解释性。特征选择方法主要包括过滤法(如相关系数、卡方检验和互信息)、包装法(如递归特征消除和顺序特征选择)和嵌入法(如L1正则化和决策树)。在Python中,可利用`sklearn`库的`feature_selection`模块实现这些方法。通过有效的特征选择,能构建更优的模型并深入理解数据。
|
13天前
|
机器学习/深度学习 数据采集 数据可视化
【Python 机器学习专栏】数据缺失值处理与插补方法
【4月更文挑战第30天】本文探讨了Python中处理数据缺失值的方法。缺失值影响数据分析和模型训练,可能导致模型偏差、准确性降低和干扰分析。检测缺失值可使用Pandas的`isnull()`和`notnull()`,或通过可视化。处理方法包括删除含缺失值的行/列及填充:固定值、均值/中位数、众数或最近邻。Scikit-learn提供了SimpleImputer和IterativeImputer类进行插补。选择方法要考虑数据特点、缺失值比例和模型需求。注意过度插补和验证评估。处理缺失值是提升数据质量和模型准确性关键步骤。