贝叶斯公式

贝叶斯定理是关于随机事件A和B的条件概率(或边缘概率)的一则定理。其中P(A|B)是在B发生的情况下A发生的可能性。

 

贝叶斯公式与两个概率有关系,一个是先验概率(基础概率),一个是现象概率(观察到的条件)

仍然是熊猫给出的例子:某城市发生了一起汽车撞人逃跑事件,该城市只有两种颜色的车,蓝色15%,绿色85%,事发时有一个人在现场看见了,他指证是蓝车。但是根据专家在现场分析,当时那种条件能看正确的可能性是80%。那么,肇事的车是蓝车的概率到底是多少?

令B是城市里车为蓝色的事件,G为车子是绿色的事件,E为观察到车子为蓝色的事件。则由已知条件可以得出P(B)=0.15,P(G)=P(~B)=0.85,至于P(E)我们一会儿再说。

好了,现在,如果没有证人看到肇事者车的话,那么我们只能盲猜,因此肇事者的车子为蓝色的概率只能是整个城市里面车为蓝色的概率,也就是先验概率P(B)=0.15,因为这时我们还没有其他证据介入,只能做个粗略的估算。

接下来,当当当当,有证人了。证人说他看到了车子,并且说是蓝色的,注意,这分两种情况,…………重要的事情说两遍:贝叶斯里面现象(新的证据)部分总是分两种情况出现的:一是车子的确是蓝色的,并且证人也正确的分辨出车是蓝色的来了,概率为 P(E,B)=P(B)xP(E|B)=0.15×0.8=0.12,二是车子根本就是绿色的,只是证人看成蓝色的了,概率为P(E,~B)=P(~B)xP(E|~B)=P(~B)x(1 – P(~E|~B))=0.85x(1-0.8)=0.17(此处原本计算有误,感谢

提醒),所以P(E)=P(E,B)+P(E,~B)=0.12+0.17=0.29然后,我们要求解的其实是在有证人的条件下车子为蓝色的概率,也就是P(B|E)=P(E,B)/P(E)=0.12/0.29=0.41

你看,P(B|E)根本就是P(B)的加强版本,条件概率跟先验概率描述的根本就是同一件事。那么当当当当,又一个结论来了:当有新的证据出现时,P(B|E)会替代原来P(B)的角色。换句话说,现在警察找到了一个新的证人,他也觉得这辆肇事车是蓝色的,这时在新一轮的贝叶斯概率计算中,基础概率P(B)=0.41,而不是原先的0.15,大家可以算一下,新的P(B|E)=0.73,换句话说,当有两个人看见肇事车辆为蓝色的时候,对比只有一个人看到肇事车辆为蓝色的时候,该车实际为蓝色的概率大大增加

关于贝叶斯,写过一篇文章专门详述了相关的内容,可以参考链接:

在概率论与数理统计中,有两个相当重要的公式——全概率公式与贝叶斯公式。然而很多人对这两个公式感到非常迷茫。一来不知道公式背后的意义所在,二来不知道这些冰冷的公式能有什么现实应用。

1. 全概率公式

在讲全概率公式之前,首先要理解什么是“完备事件群”。
我们将满足

这样的一组事件称为一个“完备事件群”。简而言之,就是事件之间两两互斥,所有事件的并集是整个样本空间(必然事件)。

假设我们要研究事件A。我们希望能够求出P(A),但是经过一番探索,却发现P(A)本身很难直接求出,不过却能够比较容易地求出各个P(Bi),以及相应的条件概率P(A|Bi)
能不能根据这些信息,间接地求出P(A)呢?
这当然是可以的。

我们不要忘记,Bi两两互斥的。

显然,AB1AB2AB3也是两两互斥的。1
一说到两两互斥,我们就想到了概率的加法定理2

这样费了一番周折,我们总算得到了所求的P(A)。可以发现,虽然P(A)本身不好求,但我们可以根据它散落的“碎片”间接地将其求出。但不是所有情况都是能这样求出的——我们必须保证B1B2B3是一个完备事件群。这个其实也很好理解,假如你想将一个碎掉的花瓶重新还原,碎片如果不全,或者碎片之间出现了多余的“重叠”,还原工作都将以失败告终。

全概率公式可以从另一个角度去理解,把Bi看作是事件A发生的一种“可能途径”,若采用了不同的途径,A发生的概率,也就是相应的条件概率P(A|Bi)也会不同。但是,我们事先却并不知道将会走哪条途径,换言之,途径的选择是随机的3,这样就导致了不同途径被选中的可能性也许也会存在差异,这就是P(Bi)所表达的含义。这样一来,我们最终所要求的P(A),实际上就是一个不同路径概率的加权平均
下面我们来举一个例子。
某地盗窃风气盛行,且偷窃者屡教不改。我们根据过往的案件记录,推断A今晚作案的概率是0.8,B今晚作案的概率是0.1,C今晚作案的概率是0.5,除此之外,还推断出A的得手率是0.1,B的得手率是1.0,C的得手率是0.5。那么,今晚村里有东西被偷的概率是多少?
通过阅读上述文字,我们大概对A、B、C三人有了一个初步的印象。首先,A的脑子可能有些问题,特别喜欢偷,但是技术相当烂。B看来是个江湖高手,一般不出手,一出手就绝不失手。C大概是追求中庸,各方面都很普通。
我们将文字描述转换为数学语言,根据作案频率可知

P(A)=0.8,P(B)=0.1,P(C)=0.5

将“村里有东西被偷”记为S,根据得手率可以得到

P(S|A)=0.1,P(S|B)=1.0,P(S|C)=0.5

很简单,所求得的就是

P(S)=P(A)P(S|A)+P(B)P(S|B)+P(C)P(S|C)=0.43

祝这个村晚上好运吧。

2. 贝叶斯公式

有了前面的基础,我们现在先直接抛出贝叶斯公式:

这个公式本身平平无奇,无非就是条件概率的定义加上全概率公式一起作出的一个推导而已。但它所表达的意义却非常深刻。
在全概率公式中,如果将A看成是“结果”,Bi看成是导致结果发生的诸多“原因”之一,那么全概率公式就是一个“原因推结果”的过程。但贝叶斯公式却恰恰相反。贝叶斯公式中,我们是知道结果A已经发生了,所要做的是反过来研究造成结果发生的原因,是XX原因造成的可能性有多大,即“结果推原因”。

举个例子:
假设某种病菌在人口中的带菌率为0.03,由于技术落后等等原因,使得带菌者有时也未被检出阳性反应(假阴性),不带菌者也可能会被检出阳性反应(假阳性)。有如下数据:

P(|)=0.99,P(|)=0.01,P(|)=0.05,P(|)=0.95

假如一个人被检出阳性,那么这个人带菌的概率是多少?

如果不用概率的思维,光凭感觉去想这个问题……误检率那么低,那这个带菌的可能性大概会很高吧?
我们用贝叶斯公式去实际计算一下。

结果竟然连40%都没到。
问题出在哪里?我们没有注意到,带菌率低到只有0.03,甚至比误检率还要低。也就是说,在一大批人里可以检查出一堆阳性的,而这堆阳性的人里面真正带菌的,也只是一小部分而已。

贝叶斯公式与机器学习

在机器学习中,我们经常遇到的一个问题就是分类。
我们看看维基百科上的“性别分类”问题(维基百科-朴素贝叶斯分类器)。
我们想要实现的是,通过知道一个人的身高、体重以及脚的尺寸,去判断这个人是男是女。
为了能够判断,我们当然需要一些参考数据,或者说,训练数据:

性别 身高(英尺) 体重(磅) 脚的尺寸(英寸)
6 180 12
5.92 190 11
5.58 170 12
5.92 165 10
5 100 6
5.5 150 8
5.42 130 7
5.75 150 9

问题来了:
现有一身高6英尺,体重130磅,脚尺寸为8英寸的人,这个人是男是女呢?

这个表格看起来不够直观,我们先做一点微小的数据可视化工作:

#!/usr/bin/python3

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 身高、体重、脚尺寸数据
x = [6, 5.92, 5.58, 5.92, 5, 5.5, 5.42, 5.75]
y = [180, 190, 170, 165, 100, 150, 130, 150]
z = [12, 11, 12, 10, 6, 8, 7, 9]

# 男性用红色园圈表示
ax.scatter(x[:4], y[:4], z[:4], c='r', marker='o', s=100)
# 女性用蓝色三角表示
ax.scatter(x[4:], y[4:], z[4:], c='b', marker='^', s=100)

ax.set_xlabel('Height (feet)')
ax.set_ylabel('Weight (lbs)')
ax.set_zlabel('Foot size (inches)')

# 显示散点图
plt.show()

旋转的散点图
尽管只有8组数据,但我们在图中也大概看了出来,似乎男女的数据点都有种“聚成一团”的感觉,这似乎是一种启示。


我们分析一下样本数据的数字特征:

性别 均值(身高) 方差(身高) 均值(体重) 方差(体重) 均值(脚的尺寸) 方差(脚的尺寸)
男性 5.855 3.5033e-02 176.25 1.2292e+02 11.25 9.1667e-01
女性 5.4175 9.7225e-02 132.5 5.5833e+02 7.5 1.6667e+00

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *