Statement:本文大部分内容为《一文搞懂贝叶斯定理(原理篇)》的内容,本人在看完后觉得不错,有一些自己的理解,所以“copy”过来加上一些自己的扩充以便更符合自己的“口味”。
为了搞明白贝叶斯定理究竟要解决什么问题,我们先看一个现实生活的例子:
已知有一种疾病,发病率是 0.1%。针对这种疾病的测试非常准确:
如果有病,则准确率是99%(即有1%未检出阳性);
如果没有病,则误报率是2%(即有2%误报为阳性)。
如果我们用混淆矩阵来表述上看的内容,将该疾病的检测结果作为我们熟悉的预测结果,真实的有/无 该疾病作为真实标签,可以得到如下diffsion matrix:
现在,如果一个人测试显示阳性,请问他患病的概率是多少?
如果我们从大街上随便找一个人,那么他患病的概率就是0.1%,因为这个概率是基于历史统计数据的先验概率。
现在,他做了一次测试,结果为阳性,我们要计算他患病的概率,就是计算条件概率,即:在测试为阳性这一条件下,患病的概率是多少。从直觉上这个人患病的概率大于0.1%,但也肯定小于99%。究竟是多少,怎么计算,我们先放一放。
为了理解条件概率,我们换一个更简单的例子:掷两次骰子,一共可能出现的结果有6x6=36种:
这就是所谓的样本空间,每个样本的概率均为
1
/
36
1/36
1/36,这个很好理解。
如果我们定义事件 A 为:至少有一个骰子是2,那么事件 A 的样本空间如下图红色部分所示:
事件 A 一共有11种情况,我们计算事件 A 的概率
P
(
A
)
P(A)
P(A):
我们再定义事件 B :两个骰子之和为7,那么事件 B 的样本空间如下图绿色部分所示:
事件 B 一共有 6 种情况,我们计算事件 B 的概率
P
(
B
)
P(B)
P(B):
接下来我们用
P
(
A
∩
B
)
P(A∩B)
P(A∩B)表示 A 和 B 同时发生的概率(即联合概率),
A
∩
B
A∩B
A∩B就是 A 和 B 的交集,如下图蓝色部分所示:
显然
A
∩
B
A∩B
A∩B只有两种情况,因此,计算
P
(
A
∩
B
)
P(A∩B)
P(A∩B):
接下来我们就可以讨论条件概率了。我们用
P
(
A
∣
B
)
P(A|B)
P(A∣B)表示在 B 发生的条件下,A发生的概率。由于 B 已经发生,所以,样本空间就是 B 的样本数量为 6,而要发生 A 则只能是A、B同时发生,即
A
∩
B
A∩B
A∩B,有两种情况。因此,计算
P
(
A
∣
B
)
P(A|B)
P(A∣B)如下:
同理,我们用
P
(
B
∣
A
)
P(B|A)
P(B∣A)表示在A发生的条件下,B发生的概率。此时,分子仍然是
A
∩
B
A∩B
A∩B的样本数量,但分母变成A的样本数量:
可见,条件概率
P
(
A
∣
B
)
P(A|B)
P(A∣B)和
P
(
B
∣
A
)
P(B|A)
P(B∣A)是不同的。我们再回到A、B同时发生的概率,观察
P
(
A
∩
B
)
P(A∩B)
P(A∩B)可以改写为:
同理,
P
(
A
∩
B
)
P(A∩B)
P(A∩B)还可以改写为:
因此,根据上述两个等式,我们推导出下面的等式:
P
(
A
∩
B
)
=
P
(
A
∣
B
)
⋅
P
(
B
)
=
P
(
B
∣
A
)
⋅
P
(
A
)
\begin{equation}\begin{split} P(A∩B)=P(A|B)\cdot P(B)=P(B|A)\cdot P(A) \end{split}\end{equation}
P(A∩B)=P(A∣B)⋅P(B)=P(B∣A)⋅P(A)
把左边的
P
(
A
∩
B
)
P(A∩B)
P(A∩B)去掉,整理一下我们可以得到等式:
P
(
A
∣
B
)
=
P
(
B
∣
A
)
×
P
(
A
)
P
(
B
)
\begin{equation}\begin{split} P(A|B)=\frac{P(B|A)\times P(A)}{P(B)} \end{split}\end{equation}
P(A∣B)=P(B)P(B∣A)×P(A)
这就是著名的贝叶斯定理,它表示,当出现B时,如何计算A的概率。很多时候,我们把A
改写为H
,把B
改写为E
,上式可以改写为:
P
(
H
∣
E
)
=
P
(
H
,
E
)
P
(
E
)
=
P
(
E
∣
H
)
⋅
P
(
H
)
P
(
E
)
\begin{equation}\begin{split} P(H|E)=\frac{P(H,E)}{P(E)}=\frac{P(E|H)\cdot P(H)}{P(E)} \end{split}\end{equation}
P(H∣E)=P(E)P(H,E)=P(E)P(E∣H)⋅P(H)
H
表示Hypothesis(假设),E
表示Evidence(证据),贝叶斯定理的意义就在于,给定一个先验概率P(H)
,在出现了证据E
的情况下,计算后验概率P(H|E)
。
有了贝叶斯定理,我们就可以回到开头的问题:
已知有一种疾病,发病率是0.1%。针对这种疾病的测试非常准确:
如果有病,则准确率是99%(即有1%未检出阳性);
如果没有病,则误报率是2%(即有2%误报为阳性)。
现在,如果一个人测试显示阳性,请问他患病的概率是多少?
用 H
表示患病,E
表示测试为阳性,那么,我们要计算在测试为阳性的条件下,一个人患病的概率,就是计算
P
(
H
∣
E
)
P(H|E)
P(H∣E)。根据贝叶斯定理,计算如下:
P
(
H
∣
E
)
=
P
(
H
,
E
)
P
(
E
)
=
P
(
E
∣
H
)
⋅
P
(
H
)
P
(
E
)
\begin{equation}\begin{split} P(H|E)=\frac{P(H,E)}{P(E)}=\frac{P(E|H)\cdot P(H)}{P(E)} \end{split}\end{equation}
P(H∣E)=P(E)P(H,E)=P(E)P(E∣H)⋅P(H)
P(H)
表示患病的概率(在全样本空间内),根据发病率可知,P(H)=0.1%。
P(E|H)
表示在患病的情况下,测试为阳性的概率(有病预测为有病),根据“如果有病,则准确率是99%”可知,P(E|H)=99%;
P(E)
表示测试为阳性的概率(在全样本空间内)。这个概率就稍微复杂点,因为它是指对所有人(包含病人和健康人)进行测试,结果阳性的概率即P(E)
包括两个部分,一部分是真的有病的人里面的阳性,另一部分是隐藏在没病的人里面的阳性(即有病预测为没病的人群里的阳性),而且这是在全样本空间考虑的)。所以P(E)
满足下式:
P
(
E
)
=
P
(
E
∣
H
)
P
(
H
)
+
P
(
E
∣
H
~
)
P
(
H
~
)
=
P
(
E
,
H
)
+
P
(
E
,
H
~
)
\begin{equation}\begin{split} P(E)=P(E|H)P(H)+P(E|\widetilde{H})P(\widetilde{H})=P(E,H)+P(E,\widetilde{H}) \end{split}\end{equation}
P(E)=P(E∣H)P(H)+P(E∣H
)P(H
)=P(E,H)+P(E,H
)
我们可以把检测人数放大,例如放大到10万人,对10万人进行检测,根据发病率可知:
- 有100人是病人,另外99900是健康人;
- 对100个病人进行测试,有99人显示阳性,另有1人未检出(阴性);
- 对99900个健康人进行测试,有2%=1998人显示阳性(误报),另有98%=97902人为阴性。
下图显示了检测为阳性的结果的分布:
所以,对于10万人的样本空间来说,事件E
=显示阳性的概率为:(99+1998)/100000=2.097%。带入贝叶斯定理,计算P(H|E)
:
计算结果为患病的概率为 4.721%,这个概率远小于 99%,且与大多数人的直觉不同,原因在于庞大的健康人群导致的误报数量远多于病人,当出现“检测阳性”的证据时,患病的概率从先验概率 0.1% 提升到 4.721%,还远不足以确诊。
注意:P(E)
是在全样本空间考虑的,不满足下式:
P
(
E
)
=
P
(
E
∣
H
)
+
P
(
E
∣
H
~
)
\begin{equation}\begin{split} P(E)=P(E|H)+P(E|\widetilde{H}) \end{split}\end{equation}
P(E)=P(E∣H)+P(E∣H
)
因为上式中,
P
(
E
∣
H
)
P(E|H)
P(E∣H)的样本空间为H
的样本空间,
P
(
E
∣
H
~
)
P(E|\widetilde{H})
P(E∣H
)为
H
~
\widetilde{H}
H
的样本空间,相当于是两个不同样本空间中求的的概率值相加。虽然看来好像
P
(
E
∣
H
)
+
P
(
E
∣
H
~
)
P(E|H)+P(E|\widetilde{H})
P(E∣H)+P(E∣H
)表示的是患病的人里面检测为阳性的概率+没病的人里面检测为阳性的概率的和,但是其实这个概念和全样本空间里的测试为阳性的概率不相等。
上面的情况出现主要是条件概率和联合概率的样本空间是不一样的,对于条件概率
P
(
E
∣
H
)
P(E|H)
P(E∣H)来说,它的样本空间为事件H的样本空间,而对于联合概率
P
(
E
,
H
)
P(E,H)
P(E,H)来说它的样本空间为事件E的样本空间
∪
\cup
∪ 事件H的样本空间
在上述计算中,我们发现计算P(E)
是比较困难的,很多时候,甚至无法知道P(E)
。此时,我们需要贝叶斯定理的另一种表示形式。
我们用P(H)
表示H
发生的概率,用
H
‾
\overline{H}
H 表示H
不发生,
P
(
H
‾
P(\overline{H}
P(H)表示H
不发生的概率。显然
P
(
H
‾
)
=
1
−
P
(
H
)
P(\overline{H})=1-P(H)
P(H)=1−P(H)。下图红色部分表示H
,红色部分以外则表示
H
‾
\overline{H}
H:
事件 E
用绿色表示:
可见,P(E)
可以分为两部分,一部分是E
和H
的交集,另一部分是E
和
H
‾
\overline{H}
H 的交集:
根据上文的公式
P
(
A
∩
B
)
=
P
(
A
∣
B
)
x
P
(
B
)
P(A∩B)=P(A|B)xP(B)
P(A∩B)=P(A∣B)xP(B),代入可得:
把P(E)
替换掉,我们得到贝叶斯定理的另一种写法:
用这个公式来计算,我们就不必计算P(E)了。再次回到开头的问题:
已知有一种疾病,发病率是0.1%。针对这种疾病的测试非常准确:
如果有病,则准确率是99%(即有1%未检出阳性);
如果没有病,则误报率是2%(即有2%误报为阳性)。
现在,如果一个人测试显示阳性,请问他患病的概率是多少?
P(E|H)
表示患病时检测阳性的概率=99%;
P(H)
表示患病的概率=0.1%;
P(E|^H)
表示没有患病但检测阳性的概率=2%;
P(^H)
表示没有患病的概率=1-P(H)
=99.9%。
代入公式,计算:
检测为阳性这一证据使得患病的概率从0.1%提升到4.721%。假设这个人又做了一次检测,结果仍然是阳性,那么他患病的概率是多少?
注意:这个时候应该用,该人做了一次测试结果为阳性(即P(H|E)
作为先验概率了,因为这一轮的计算是在该人做了一次测试结果为阳性的基础上做的第二次测试。
我们仍然使用贝叶斯定理计算,只不过现在先验概率 P(H)
不再是0.1%,而是4.721%,P(E|H)
和P(E|^H)
仍保持不变,计算新的P(H|E)
:
结果为71%,两次检测为阳性的结果使得先验概率从0.1%提升到4.721%再提升到71%,继续第三次检测如果为阳性则概率将提升至99.18%。
可见,贝叶斯定理的核心思想就是不断根据新的证据 E
,用先验概率调整为后验概率,使之更接近客观事实。
acknowledgement:一文搞懂贝叶斯定理(原理篇)