![](https://i-blog.csdnimg.cn/blog_migrate/71d9f5e131a4586f37d9721c0d9291fd.png)
一、引言
在《统计学习的分类概述》中介绍了贝叶斯学习的概念和计算公式,可以看到这个公式就是概率统计理论中的贝叶斯公式,但在机器学习中这个公式与概率统计中的理解要复杂得多。
二、贝叶斯学习公式及各组成因子的含义
要理解贝叶斯学习公式,需要对这个公式的每个组成因子结合机器学习的背景进行解释,下面老猿就此展开说明。
2.1、公式及构成
贝叶斯学习的公式如下:
P
(
θ
∣
D
)
=
P
(
θ
)
⋅
P
(
D
∣
θ
)
P
(
D
)
P(θ|D) = \frac{P(θ) \cdot P(D|θ)}{P(D)}
P(θ∣D)=P(D)P(θ)⋅P(D∣θ)
其中D表示训练数据,θ表示模型参数,P(θ)是先验概率,P(θ|D)是后验概率,P(D|θ)是似然函数。
2.2、公式组成因子理解
- P(D) 表示数据 D出现的边际概率(Marginal Probability,也称为边缘概率,指的是在多个随机变量的联合概率分布中,只考虑单个或部分随机变量的概率分布,而忽略其他变量的影响),也就是数据在所有可能参数值下出现的总概率。在实际应用中,P(D) 通常很难直接计算,因为它涉及到对所有可能参数值的积分。P(D) 在贝叶斯模型比较中非常重要,因为它允许评估不同模型对数据的相对拟合程度;
- P(θ) 为 θ 的先验概率,代表了在观测到任何数据 D 之前,对参数 θ 可能取值的信念或知识的量化表达。先验概率是基于以往的经验、历史数据、理论知识或其他信息源得出的,它反映了对参数 θ 的初始不确定性和可能分布的假设。先验概率可以有多种形式,取决于对参数 θ 的了解程度和可用信息。例如,如果对参数没有任何先验知识,可能会选择一个非信息性先验(即与数据和信息无关,如均匀分布),如果有一些关于参数 θ 的先验信息,可以选择一个更具信息性的先验分布,这表明对参数可能值的初始估计和不确定性。先验概率是贝叶斯学习中的一个关键组成部分,它允许将先前的知识与新的观测数据结合起来,进行更加准确和合理的推断。通过这种方式,贝叶斯方法提供了一种强大的框架,用于在不确定性下进行决策和预测。
- P(D∣θ) 被称为似然函数(Likelihood),它表示的是在给定参数 θ 的条件下,观测到数据 D 的概率,这个概率反映了参数 θ 对数据 D 的拟合程度。在贝叶斯学习中,通常假设参数θ 是固定的,而数据 D 是随机变量。似然函数表示在特定参数值下,观测到当前数据的可能性有多大;
- P(θ∣D)为后验概率,表示在给定观测数据 D 的条件下,模型参数 θ 的概率。它是贝叶斯学习中的核心概念,反映了在考虑了数据 D 之后对参数 θ 的最新认识。这个后验概率不仅考虑了数据对参数的影响,还考虑了对参数的先验知识或信念(因为P(θ)是事件θ的先验概率)。在统计学习中,通常关注的是如何根据观测数据 D来估计模型参数 θ 的分布,以及如何利用这个分布来进行预测或决策。
2.3、使用贝叶斯学习的举例
2.3.1、案例
为了理解贝叶斯学习公式,老猿结合举个抛硬币的例子来说明:
假设有一个简单的硬币投掷实验,硬币有两面:正面(H)和反面(T),想要估计硬币正面出现的概率 p。
对应贝叶斯学习公式的各个组成因子如下:
- θ:θ是模型的参数,对于基于随机事件出现的概率分布表示的模型,参数就是其概率分布函数中非固定常数部分,如对于正态分布,模型参数是均值μ 和标准差σ,对于白努力分布,模型参数是成功概率 p。抛掷硬币的概率公式符合白努力分布,因此在这个例子中,θ 就是硬币正面出现的概率,比如 θ 可以是 0.5(表示公平的硬币)
- 数据 D:假设进行了 10 次投掷,观察到的数据集 D 是 6 次正面(H),4 次反面(T)
- 先验概率 P(θ):假设没有投掷硬币正反面出现的概率的先验知识,可以选择一个均匀分布作为先验概率, θ 在区间 [0, 1] 的所有值P(θ)=1 (均匀分布意味着在没有任何额外信息的情况下,认为 p 取区间 [0, 1] 内任何值的可能性都是相同的,其概率密度函数(对于连续均匀分布)可以表示为: P ( θ ) = 1 b − a P(\theta) = \frac{1}{b - a} P(θ)=b−a1,其中 a 和 b 是 θ 的取值范围的下界和上界。对于硬币正面出现的概率 p,这个范围是 [0, 1],因此: P ( p ) = 1 1 − 0 = 1 P(p) = \frac{1}{1 - 0} = 1 P(p)=1−01=1,对于 p 在区间 [0, 1] 上的任何值,这个概率密度函数都是 1)
- 似然函数 P(D∣θ):假设每次投掷是独立的,那么在参数 θ 给定的情况下,观测到特定数据集 D 的概率是 θ 的成功次数乘以 1−θ 的失败次数。在这个例子中,似然函数为 P ( D ∣ θ ) = θ 6 ( 1 − θ ) 4 P(D|\theta) = \theta^6 (1-\theta)^4 P(D∣θ)=θ6(1−θ)4
- 后验概率 P(θ∣D):在使用贝叶斯定理来更新对 θ 的认识,由于 θ 是一个概率值,可以假设它的范围是 [0, 1],并且 P(D) 是所有可能 θ 值下 D 出现概率的总和。在实际操作中,P(D) 可以通过对所有可能 θ 值的似然函数乘以先验概率后求和来计算。
P ( θ ∣ D ) = P ( θ ) ⋅ P ( D ∣ θ ) P ( D ) P(\theta|D) = \frac{P(\theta) \cdot P(D|\theta)}{P(D)} P(θ∣D)=P(D)P(θ)⋅P(D∣θ)
在这个简单的例子中,由于先验概率是均匀分布,P(θ)=1,因此后验概率主要由似然函数 P(D∣θ)决定。在例子中,后验概率 P(θ∣D) 将会在θ 接近 0.6 时达到最大值,这表示根据观测到的数据,硬币正面出现的概率大约是 0.6。 - 预测新数据 P(x∣D):要预测下一次投掷的结果,可以计算新样本 x(正面或反面)在给定数据 D 的条件下的概率。由于硬币的每次投掷是独立的,可以直接使用后验概率 P(θ∣D) 来预测下一次正面出现的概率,即 P ( x = H ∣ D ) = θ M A P ,其中 θ M A P P(x=H|D) = \theta_{MAP} ,其中 \theta_{MAP} P(x=H∣D)=θMAP,其中θMAP 是后验概率的模式(最大值所在的位置),在这个例子中, θ M A P \theta_{MAP} θMAP 接近 0.6。
这个简单的例子展示了如何使用贝叶斯学习来更新对参数 θ 的认识,并如何利用这个认识来进行预测。在实际应用中,参数 θ 和数据 D 可能更加复杂,但基本原理是相同的。
2.3.2、后验概率 P(θ∣D) 将会在θ 接近 0.6 时达到最大值的推导说明
对于硬币投掷的例子,似然函数 P ( D ∣ θ ) = θ 6 ( 1 − θ ) 4 P(D|\theta) = \theta^6 (1-\theta)^4 P(D∣θ)=θ6(1−θ)4 是基于观测到的数据 D来计算在给定参数 θ 下观测到这一系列结果的概率。
要进行最大似然估计,首先需要对似然函数取对数,然后求导使得函数取值为0,相关知识请参考《人工智能基础概念4:似然函数、最大似然估计案例详解》。
对数似然函数 ℓ(θ) 定义为:
ℓ
(
θ
)
=
log
P
(
D
∣
θ
)
\ell(\theta) = \log P(D|\theta)
ℓ(θ)=logP(D∣θ)
对于
P
(
D
∣
θ
)
=
θ
6
(
1
−
θ
)
4
P
P(D|\theta) = \theta^6 (1-\theta)^4P
P(D∣θ)=θ6(1−θ)4P ,对数似然函数为:
ℓ
(
θ
)
=
log
(
θ
6
(
1
−
θ
)
4
)
=
6
log
(
θ
)
+
4
log
(
1
−
θ
)
\ell(\theta) = \log(\theta^6 (1-\theta)^4)= 6 \log(\theta) + 4 \log(1-\theta)
ℓ(θ)=log(θ6(1−θ)4)=6log(θ)+4log(1−θ)
接下来,我们对ℓ(θ) 关于 θ 求导,并找到导数等于零的点,这个点就是 θ 的最大似然估计值
θ
^
M
L
E
\hat{\theta}_{MLE}
θ^MLE,对 ℓ(θ) 求导得:
d
ℓ
(
θ
)
d
θ
=
6
θ
−
4
1
−
θ
\frac{d\ell(\theta)}{d\theta} = \frac{6}{\theta} - \frac{4}{1-\theta}
dθdℓ(θ)=θ6−1−θ4
令导数等于零,解方程:
0
=
6
θ
−
4
1
−
θ
0 = \frac{6}{\theta} - \frac{4}{1-\theta}
0=θ6−1−θ4
解这个方程可以得到 \thetaθ 的最大似然估计值
θ
^
M
L
E
\hat{\theta}_{MLE}
θ^MLE :
6
(
1
−
θ
)
θ
=
4
θ
1
−
θ
\frac{6(1-\theta)}{\theta} = \frac{4\theta}{1-\theta}
θ6(1−θ)=1−θ4θ
所以,根据最大似然估计,硬币正面出现的概率
θ
^
M
L
E
\hat{\theta}_{MLE}
θ^MLE 是 0.6。
三、关于贝叶斯学习的预测
使用贝叶斯学习预测新数据点 x 的概率 P(x∣D) 时,实际上是在计算所有可能的 θ 值对新数据点 x出现概率的贡献。每个 θ 值都会根据其后验概率 P(θ∣D) 来加权这个贡献。这就需要使用积分形式的后验概率期望值来计算 P(x∣D):
P
(
x
∣
D
)
=
∫
P
(
x
∣
θ
,
D
)
P
(
θ
∣
D
)
d
θ
P(x|D)=∫P(x|θ,D)P(θ|D)dθ
P(x∣D)=∫P(x∣θ,D)P(θ∣D)dθ
这里x是新样本,P(x∣D) 表示在给定训练数据 D 的条件下,新样本 x 出现的概率。这是对新数据点的预测概率,它反映了基于已有数据对新观测结果的不确定性的量化。
公式相关组成部分进一步解释如下:
- P(x|D)表示在给定数据 D的条件下,新样本 x 出现的概率,这个概率是关于模型参数θ 的函数,但在贝叶斯推断中,通常不对 θ 进行明确的估计,而是考虑其整个后验分布P(θ∣D)。由于后验分布 P(θ∣D) 描述了在观测到数据 D 后,参数 θ 的概率分布,因此需要对这个分布进行积分,以计算在所有可能的 θ 值下 x 出现的概率。在这个积分过程中,每个参数值 θ 对最终结果的贡献是不同的,这个贡献就是由其在后验分布中的相对概率决定的,因此可看做是权重;
- P(x∣θ,D) 是在给定 θ 和 D 的条件下,新样本 x 出现的概率,这通常被称为条件概率密度函数(对于连续随机变量),这个函数描述了在特定参数值下观测到新数据的概率。然而,由于不知道真实的θ 值,不能直接计算P(x∣D),因此需要考虑所有可能的 θ 值, 对于每一个参数值 θ,计算在该参数值下观测到新样本 x 的条件概率 P(x∣θ,D)。然后将这个条件概率乘以该参数值的后验概率 P(θ∣D),这样就得到了该参数值对新样本 x 出现概率的贡献。最后,将所有可能的 θ 值的贡献加总起来(计算时是求积分),得到整个后验分布对 x 出现概率的总贡献,即P(x∣D)
通过这种积分,我们实际上是在计算所有可能的参数值对新样本 x出现概率的贡献,并将这些贡献加总起来,得到一个总体的预测概率。这个预测概率 P(x∣D) 不依赖于任何特定的参数值,而是考虑了参数的整个后验分布,从而提供了一种在参数不确定性下进行预测的方法。
三、小结
本文详细介绍了贝叶斯学习(Bayesian Learning)计算公式的各个组成因子的含义及所代表的意义,贝叶斯学习基于贝叶斯定理和概率论的原理计算在给定数据条件下模型的后验概率,并应用这个原理进行模型的估计以及对数据的预测。
更多统计学习基础知识请参考专栏《统计学习基础知识》。
更多人工智能基础知识请参考专栏《人工智能基础知识》。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
关于老猿的付费专栏
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。
前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。
如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。