条件概率与贝叶斯:从证据反推原因
手算医学检测与朴素贝叶斯两个完整数字例,搞懂先验、似然、后验与独立性
- 能在联合分布上求边缘概率与条件概率,写出乘法公式与链式法则
- 用贝叶斯定理手算出后验概率,就能识别和纠正基率忽视的问题
- 区分独立、互斥与条件独立,说清朴素贝叶斯的「朴素」假设
- 能手算一个最小朴素贝叶斯分类器,并说清相关为何不等于因果
你观察到的是结果,想知道的是原因——贝叶斯定理就是反向推理的公式
模型上线后看到用户点了广告,你想知道他到底是不是目标用户;检测呈阳性,你想知道真患病的概率。正向概率 P(证据|原因) 往往好估,反向的 P(原因|证据) 才是决策所需。这一节建立联合、边缘、条件三种概率的换算,推出贝叶斯定理,并亲手算两个反直觉但极其重要的数字例。因果链:联合分布包含全部信息 → 条件概率固定已知信息 → 乘法与链式拆联合概率 → 贝叶斯反转为后验 → 独立性简化计算、朴素贝叶斯落地分类。
2.1 联合、边缘与条件:一张概率表的三种看法
联合概率 P(A,B) 是两件事同时发生的概率。边缘概率是把不关心的维度求和消掉:P(A)=Σb P(A,B=b),这个求和过程叫边缘化。条件概率是已知 B 发生的世界里重新归一的概率:P(A|B)=P(A,B)/P(B),分母 P(B) 是条件世界的总概率。三者由乘法公式连起来:P(A,B)=P(A|B)·P(B)=P(B|A)·P(A),多个变量时推广为链式法则 P(A,B,C)=P(A)P(B|A)P(C|A,B)。
条件概率的关键是换了一个样本空间:P(A|B)只在B发生的那些情形里计数,所以要除以P(B)重新归一。最常见的错误是以为P(A|B)=P(B|A)——二者数值通常差很远,比如「下雨时天上有云」接近1,「有云时下雨」很小。这两个方向的混淆有专门名字:检察官谬误或基率忽视,2.2用数字让你看到差距能有多大。
由联合概率求条件概率的正确公式是?
2.2 贝叶斯定理与全概率:后验 = 似然 × 先验 / 证据
把两条乘法公式联立就得到贝叶斯定理:P(A|B)=P(B|A)·P(A)/P(B)。其中 P(A) 是先验(看到证据前的信念),P(B|A) 是似然(在该原因下出现此证据的可能),P(A|B) 是后验(看到证据后更新的信念),分母 P(B) 是归一化常数,用全概率公式展开 P(B)=ΣₐP(B|A=a)P(A=a),即把所有可能原因下产生该证据的概率加权求和。
手算经典的医学检测。患病率P(D)=0.01,灵敏度P(+|D)=0.99(真患病查阳),假阳性率P(+|¬D)=0.05。先算证据:P(+)=0.99×0.01+0.05×0.99=0.0099+0.0495=0.0594。于是P(D|+)=0.0099/0.0594≈0.167——即便检测看似很准,一次阳性后真患病概率只有约16.7%,因为病太罕见(先验极低),绝大多数阳性来自健康人的5%假阳。这就是忽视基率会严重高估风险的现场。
再看「重复检验如何累积证据」。若两次检测条件独立,P(++|D)=0.99²≈0.9801,P(++|¬D)=0.05²=0.0025,后验 P(D|++)=0.9801×0.01/(0.9801×0.01+0.0025×0.99)=0.009801/0.012276≈0.798,升到约 80%。贝叶斯更新是迭代的:这一次的后验就是下一次的先验,证据一条条进来,信念一步步收敛。
2.3 独立性与条件独立:朴素贝叶斯的「朴素」所在
两事件独立,指一个发生与否不改变另一个的概率,等价于 P(A,B)=P(A)P(B),也等价于 P(A|B)=P(A)。别搞混独立和互斥:互斥是 P(A,B)=0,不能同时发生。如果两个概率都为正的事件互斥,知道 A 发生就确定 B 不发生,反而强烈相关,所以「互斥且正概率」必然不独立。条件独立是给定 C 后 A、B 独立:P(A,B|C)=P(A|C)P(B|C)。注意:它不要求 A、B 边际独立。
朴素贝叶斯分类器的「朴素」,指的是一个强条件独立假设:给定类别 y,各特征 x₁…xd 彼此独立,所以 P(x₁…xd|y)=∏ⱼP(xⱼ|y),把指数级的联合概率估计,降成了逐个一维的估计。现实里特征几乎不可能真独立——比如一封垃圾邮件里的「中奖」和「免费」,明显是相关的。但这个「错误」假设,因为估计稳定、计算极快,在文本分类上长期好用,是偏差换方差的典型。
事件A、B的概率都大于0,且不能同时发生,它们的关系是互斥事件。
把上例患病率提高到 P(D)=0.1(灵敏度 0.99、假阳 0.05 不变),一次阳性后 P(D|+) 约等于多少(保留三位小数)?2.4 手算一个最小朴素贝叶斯分类器
走一遍朴素贝叶斯的完整计算。先设先验:P(垃圾)=0.4,P(正常)=0.6;词条件概率:P(中奖|垃圾)=0.7,P(中奖|正常)=0.1,P(免费|垃圾)=0.6,P(免费|正常)=0.2。有一封邮件同时带「中奖」「免费」,按条件独立假设,似然乘先验:垃圾方向是0.7×0.6×0.4=0.168,正常方向是0.1×0.2×0.6=0.012。归一化后P(垃圾|词)=0.168/(0.168+0.012)=0.933,约93.3%,判为垃圾邮件。
工程上不会真的连乘很多小概率——几十个0.0x相乘会下溢成0,而是取对数变连加:log P(y|x)∝log P(y)+Σⱼlog P(xⱼ|y),加法不改变大小比较。还要做拉普拉斯平滑:若某词在训练集某类中从没出现,P=0会一票否决整封邮件,给计数统一加1(分子加1、分母加词表大小),避免零概率。
概率是长期重复试验的频率,参数是固定未知常数;用似然和大样本估计它,谈置信区间与显著性,见 m3 的 MLE。
2.5 相关不等于因果,以及贝叶斯更新的纪律
两个变量相关,可能是A导致B、B导致A、第三个变量C同时导致两者(混杂),或纯属巧合。经典例子是冰淇淋销量与溺水人数正相关,共同原因是气温升高。辛普森悖论更进一步:整体上A组更好,分层到每个子群体却都是B组更好,正是混杂在改变结论。因果推断需要干预或随机实验,仅靠观测条件概率无法确定方向。
贝叶斯更新是一台「信念校准机」
贝叶斯定理真正的力量是给出一条可重复的更新纪律:先验×似然→后验,后验再当下一条证据的先验。它有三个性质值得记住。其一,证据按「似然比」P(B|A)/P(B|¬A) 放大或压低信念,似然比为 1 的证据毫无信息量。其二,无论两个人先验差多远,只要都按贝叶斯更新且看到足够多相同证据,后验会趋同——数据压过先入为主。其三,极端先验(0 或 1)永远无法被任何证据更新,这正是贝叶斯告诫不要对任何假设赋予绝对概率的原因,也是工程上做平滑、避免零概率的理论依据。
朴素贝叶斯文本分类与风控规则;正则化可解释为先验(L2≈高斯先验、L1≈拉普拉斯先验,l3 推导);贝叶斯优化调参与 Thompson 采样、VAE 的后验近似。理解「先验—似然—后验」这套语言,很多看似无关的算法会连成一张网。
P(匹配|无辜) 很小绝不等于 P(无辜|匹配) 很小,后者还要乘上无辜者的庞大基率——这正是冤案和假阳性恐慌的数学根源。任何「这个检验很准所以阳性就基本确诊」的推理,都要先回头看先验有多低。
给定 C 后 A、B 独立,并不代表去掉 C 后仍独立。比如「洒水器开」和「下雨」,给定「地湿」这个条件后,依赖方向会变——这就是对撞结构。朴素贝叶斯只要求给定类别的条件独立,不要求特征忽略类别时也独立,这一点常被考到。
贝叶斯题先列所有原因分支,每条路径写「先验×似然」,分子是目标路径,分母是所有路径之和。医学检测、垃圾邮件、A/B转化都能套这棵树,比死套公式更不容易漏分支。
朴素贝叶斯分类器「朴素」在何处?
本节小结
一条因果链:联合分布经求和得边缘、经「除以条件」得条件概率,乘法公式与链式法则把它们连起来 → 贝叶斯定理 P(A|B)=P(B|A)P(A)/P(B) 用全概率归一,把似然和先验变成后验,低先验下检测阳性真病率仅 16.7%、重复独立证据可累积到 80% → 独立是 P(A,B)=P(A)P(B),互斥正概率必不独立,朴素贝叶斯靠给定类别的条件独立把联合降维(手算垃圾邮件后验 93.3%)→ 相关不等于因果,需警惕混杂与辛普森悖论。
资深工程师加餐
底层原理 · 大厂视角 · 工程经验,点卡片展开
信息熵度量一个分布的不确定程度,越随机熵越大。交叉熵衡量「用模型预测的分布去编码真实分布」所需的平均代价:模型预测越接近真实标签,交叉熵越小。因此多分类任务用交叉熵做损失不是拍脑袋,而是有严格信息论依据的最大似然等价形式。