贝叶斯推理:基本概念

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

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

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

先把本书阐述贝叶斯推理的基本观点罗列如下:
1. 贝叶斯方法是数据专家(data scientist)使用的诸多工具之一。它可用于预测、分类、分级、推理、识别垃圾邮件,等等。
2. 贝叶斯学派认为概率是对某一事件的发生相信的程度,是对这一信念强弱的度量。
3. 为了兼容传统概率论,贝叶斯学派把对事件A A 的信念记作P(A)P(A) ,并称作先验概率
4. 新的证据X X 出现后,对事件AA 的信念记作P(A|X) P ( A | X ) ,并称作后验概率
5. 贝叶斯推理的结果有2个值:事件A A 为真和假两个概率(例如,分别为0.8与0.2)。传统概率学派的频率方法只有事件AA 为真的一个值。
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。王强是当地的一名男性,从平时的行为举止看,他像是图书管理员,但从统计学上看,他更可能是农民。真相如何,可用贝叶斯推理来分析。

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

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

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

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

若邻居说王强是图书管理员,P(X|A) P ( X | A )

邻居可能说王强是图书管理员,也可能说不是。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   a n d   A ) + P ( X   a n d   ∼ 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)=1−P(A)=20/21 P ( ∼ 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.52 P ( X ) = 0.95 ∗ ( 1 / 21 ) + ( 0.5 ) ∗ ( 20 / 21 ) = 0.52 。

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


P(A|X)=0.95/210.52=0.087 P ( A | X ) = 0.95 / 21 0.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");

贝叶斯推理与机器学习 pdf 论述贝叶斯推理_后验概率