贝叶斯推理:基本概念

《贝叶斯方法的高级用法》介绍了概率统计在人工智能中的作用,特别是贝叶斯推理。书中通过实例解释了贝叶斯推理的基本概念,如先验概率、后验概率和贝叶斯定理。一个例子是通过王强的职业判断,展示了在有限证据下,贝叶斯推理如何评估他是农民还是图书管理员的概率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

贝叶斯推理:基本概念

最近在读这本书,《Bayesian Methods for Hackers : Probabilistic Programming and Bayesian Inference》,即《贝叶斯方法的高级用法:概率编程和贝叶斯推理》,作者是 Cameron Davidson-Pilon。

概率统计是机器学习、深度学习等人工智能技术的基础理论之一;贝叶斯推理是概率统计实用价值最大的组成部分之一。

本书用代码和图表实例化、形象化地阐释贝叶斯推理,避开了数学公式的生硬呆板、繁难枯燥的说教,使得人们能看懂代码和图表就能理解贝叶斯推理的具体方法。

感觉书写得不错,能读懂、受启发、有收获,所以把一些心得体会记下来、说出去,但愿对别人也有用。

先把本书阐述贝叶斯推理的基本观点罗列如下:
1. 贝叶斯方法是数据专家(data scientist)使用的诸多工具之一。它可用于预测、分类、分级、推理、识别垃圾邮件,等等。
2. 贝叶斯学派认为概率是对某一事件的发生相信的程度,是对这一信念强弱的度量。
3. 为了兼容传统概率论,贝叶斯学派把对事件AA 的信念记作P(A) ,并称作先验概率
4. 新的证据XX出现后,对事件A 的信念记作P(A|X)P(A|X) ,并称作后验概率
5. 贝叶斯推理的结果有2个值:事件AA 为真和假两个概率(例如,分别为0.8与0.2)。传统概率学派的频率方法只有事件A 为真的一个值。
6. 在证据较少时,贝叶斯推理优于依赖大数据集的频率方法

贝叶斯定理是这般模样:

P(A|X)=P(X|A)P(A)P(X)(1)(1)P(A|X)=P(X|A)P(A)P(X)
近似于
P(A|X)=P(X|A)P(A)(2)(2)P(A|X)=P(X|A)P(A)

这一公式用数学描述了客观事实,并非只供贝叶斯推理专用。贝叶斯推理只是将先验概率 P(A)P(A) 与更新了的后验概率 P(A|X)P(A|X) 联系在一起。

用法示例:他是农民还是图书管理员

假定某地的男性农民与男性图书管理员的比例为 20:1。王强是当地的一名男性,从平时的行为举止看,他像是图书管理员,但从统计学上看,他更可能是农民。真相如何,可用贝叶斯推理来分析。

假定当地只有农民和图书管理员这两种职业。

AA 表示王强是图书管理员。如果没有关于王强的其他信息,则 P(A)=1/21=0.047 。这是先验概率。

假定有邻居提供了关于王强的信息 XX 。我们关心的则是后验概率P(A|X)

回到上述的贝叶斯定理。我们已经知道了 P(A)P(A) 的值,还需确定 P(X|A)P(X|A)P(X)P(X) 的值。

若邻居说王强是图书管理员,P(X|A)P(X|A) 表示的是这个说法为真的概率。它的值接近 1.0,比如 0.95。

邻居可能说王强是图书管理员,也可能说不是。P(X)P(X) 表示的是邻居提供信息,说王强是或不是图书管理员的概率。

P(X)P(X) 的计算公式是:

P(X)P(X and A)+P(X and A)=P(X|A)P(A)+P(X|A)P(A)(3)(4)(3)P(X)=P(X and A)+P(X and ∼A)(4)=P(X|A)P(A)+P(X|∼A)P(∼A)

A∼A 表示王强不是图书管理员,而是农民。我们已知 P(X|A)P(X|A)P(A)P(A)P(A)=1P(A)=20/21P(∼A)=1−P(A)=20/21 ,现在只需弄清 P(X|A)P(X|∼A),即邻居说王强是农民的概率。假设它的值为 0.5,于是,P(X)=0.95(1/21)+(0.5)(20/21)=0.52P(X)=0.95∗(1/21)+(0.5)∗(20/21)=0.52

把上述各项值代入贝叶斯定理:

P(A|X)=0.95/210.52=0.087P(A|X)=0.95/210.52=0.087

结果,王强是图书管理员的后验概率为 0.087。这个估值不算太高,但考虑到一个人是图书管理员的先验概率是 1/20,或 0.0476,后验概率也是合乎逻辑的。但是,王强是农民的可能,依然远大于是图书管理员的可能。

下面的代码,把以上文字描述转成可视化图形,对于王强是农民或图书管理员的先验概率与后验概率作出对照比较。

%matplotlib inline
from IPython.core.pylabtools import figsize
import numpy as np
from matplotlib import pyplot as plt
figsize(12.5, 4)
plt.rcParams['savefig.dpi'] = 300
plt.rcParams['figure.dpi'] = 300
colors = ["#348ABD", "#A60628"]
prior = [1/21., 20/21.]
posterior = [0.087,1-0.087]
plt.bar([0, .7], prior, alpha=0.70, width=0.25,
    color=colors[0], label="prior distribution",
    lw="3", edgecolor="#348ABD")
plt.bar([0+0.25, .7+0.25], posterior, alpha=0.7,
    width=0.25, color=colors[1],
    label="posterior distribution",
    lw="3", edgecolor="#A60628")
plt.xticks([0.20, 0.95], ["Librarian", "Farmer"])
plt.title(
    "Prior and posterior probabilities 
    of Steve’s occupation"
)
plt.ylabel("Probability")
plt.legend(loc="upper left");

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值