贝叶斯公式:从先验到后验的直观理解
贝叶斯公式不难记,证明也不复杂,但只看公式,往往不够直观:
P(A∣B)=P(B)P(A)P(B∣A),P(B)>0.
这里,P(A∣B) 表示:在已经知道 B 发生的条件下,A 发生的概率。概率的取值范围是 [0,1]。
这个公式来自同一个联合事件的两种写法:
P(A∩B)=P(A)P(B∣A)=P(B)P(A∣B).
受 3Blue1Brown 对贝叶斯公式的直观解释启发,我更喜欢从“实际是什么”和“被判断成什么”的区别来理解它。
先把事实和判断分开
考虑一个二分类问题。用 A 表示实际属于目标类别,用 ¬A 表示实际不属于目标类别;用 + 表示模型判断为正类,用 − 表示模型判断为负类。
| 模型判断 | 实际为正类 A | 实际为负类 ¬A |
|---|
| 正类 + | 真阳性 TP | 假阳性 FP |
| 负类 − | 假阴性 FN | 真阴性 TN |
“实际为正类的样本有多少被找到了”和“找出来的样本有多少真的是正类”,是两个不同的问题。
第一个问题对应召回率,也叫灵敏度或真阳性率:
TPR=P(+∣A)=TP+FNTP.
第二个问题对应精确率:
P(A∣+)=TP+FPTP.
还需要考虑假阳性率:
FPR=P(+∣¬A)=FP+TNFP.
特异性则是 P(−∣¬A)=1−FPR。这些指标不能笼统地都叫“准确率”。通常所说的 accuracy,是全部样本中判断正确的比例:
Accuracy=TP+FP+FN+TNTP+TN.
用比率理解更新
令 p=P(A),它是观察模型判断之前,目标类别在总体中的比例,也就是先验概率。
在所有被判为正类的样本中,真正的正类和误判的负类分别占总体的 pTPR 和 (1−p)FPR。因此:
P(A∣+)=pTPR+(1−p)FPRpTPR.
如果把概率换成正反两种情况的比率,也就是几率(odds),式子会更容易记。在 0<p<1 且 FPR>0 时:
P(¬A∣+)P(A∣+)=1−pp×FPRTPR.
也就是:后验几率 = 先验几率 × 似然比。3Blue1Brown 关于 odds 的解释展示了这种写法。
它更新的是正反两种情况的比率,不能把先验概率直接乘上似然比,当成后验概率。若更新后的比率为 a:b,对应的概率是 a/(a+b)。
一个具体例子
假设有 1,000 个样本:
- 实际正类占 10%,即 100 个;实际负类有 900 个。
- 模型的召回率为 90%。
- 模型的假阳性率为 30%。
按这些比例,分类结果如下:
| 模型判断 | 实际正类 | 实际负类 | 合计 |
|---|
| 正类 | 90 | 270 | 360 |
| 负类 | 10 | 630 | 640 |
| 合计 | 100 | 900 | 1,000 |
在模型判为正类的 360 个样本中,真正的正类只有 90 个:
P(A∣+)=90+27090=25%.
用几率算也一样。先验几率为 1:9,似然比为 90/30=3,所以后验几率是 3:9=1:3,对应概率为 1/(1+3)=25%。
找出了九成的正类,不等于找出来的样本有九成是正类。 负类数量较多时,即使只有一部分被误判,也可能超过真正检出的正类数量。
边界条件和小结
如果假阳性率为零,就不能再使用包含除以 FPR 的有限几率表达式。但仍然可以回到概率公式:只要 pTPR>0,模型给出的正类判断就全部是真阳性,P(A∣+)=1。如果模型根本不会给出正类判断,则这个条件概率没有定义。
类似地,如果召回率为 100%,就没有假阴性;在负类判断可能出现的前提下,被判为负类的样本确实属于负类。
判断一个分类器的结果是否可信,需要把三个量放在一起:目标类别的先验比例、召回率,以及假阳性率。只看召回率,不能回答“这一次判断有多大概率是对的”。
参考资料
- 3Blue1Brown. Bayes’ theorem.
- 3Blue1Brown. The medical test paradox: Can redesigning Bayes’ rule help?.
整理自我的《贝叶斯公式》笔记,沿用源文件最后编辑日期:2023 年 9 月 16 日。本次整理统一了概率符号与分类指标名称。