贝叶斯定理是以下文章的主题 一篇详细的文章。这篇文章写得很好,但超过15,000字——以下是像我这样的贝叶斯新手的浓缩版:
测试本身并非事件。 我们有一个癌症 测试,与实际患有癌症的事件分开。我们有一个 测试 用于垃圾邮件,与实际收到垃圾邮件的事件分开。
测试是有缺陷的。 测试检测到不存在的东西(假阳性),并遗漏了存在的东西(假阴性)。人们经常使用测试结果而不调整测试误差。
假阳性会扭曲结果。 假设你在寻找非常罕见的东西(百万分之一)。即使测试很好,阳性结果很可能是 假阳性 在999,999中的某人身上。
人们更喜欢自然数。 说“10,000中有100”而不是“1%”有助于人们以更少的错误处理数字,特别是当有多个百分比时(“这100人中有80人会检测为阳性”而不是“1%的80%会检测为阳性”)。
甚至科学也是一种测试。从哲学层面来说,科学实验是“潜在有缺陷的测试”,需要相应地对待。有一个 测试 用于一种化学品或现象,并且有 事件 现象本身。我们的测试和测量设备有一个误差率需要考虑。
贝叶斯定理将测试结果转化为事件的真实概率。 例如,你可以:
纠正测量误差。如果你知道真实概率以及假阳性和假阴性的概率,你可以纠正测量误差。
将实际概率与测量的测试概率联系起来。 给定钼靶检查结果和已知的误差率,你可以预测阳性检测下实际患癌的概率。用专业术语来说,你可以从 Pr(E|H)(假设为真时出现证据的概率)出发,求出 Pr(H|E)(给定证据 E 时假设 H 为真的概率)。
测试剖析
文章描述了一个癌症检测场景:
- 1%的女性患有乳腺癌(因此99%没有)。
- 80%的钼靶检查能在乳腺癌存在时检测到(因此20%漏诊)。
- 9.6%的钼靶检查在乳腺癌 不 不存在时检测到它(因此90.4%正确返回阴性结果)。
放在一个表格中,概率看起来是这样的:

我们如何解读它?
- 1%的人患有癌症
- 如果你已经患有癌症,你就在第一列。你有80%的概率检测为阳性,20%的概率检测为阴性。
- 如果你没有癌症,你就在第二列。你有9.6%的概率检测为阳性,90.4%的概率检测为阴性。
测试有多准确?
现在假设你得到了一个阳性检测结果。你患癌的概率是多少?80%?99%?1%?
以下是我的思考方式:
- 好的,我们得到了阳性结果。这意味着我们在表格的顶行。我们不做任何假设——它可能是真阳性或假阳性。
- 真阳性的概率 = 患癌概率 * 检测捕捉到的概率 = 1% * 80% = 0.008
- 假阳性的概率 = 未患癌概率 * 检测仍误报的概率 = 99% * 9.6% = 0.09504
表格看起来是这样的:

刚才的问题是什么来着?哦对了:如果检测呈阳性,我们真正患癌的概率是多少?事件的概率等于它可能发生的方式数除以所有可能的结果:
![]()
获得真实阳性结果的概率是0.008。获得任何类型阳性结果的概率是真阳性概率加上假阳性概率(0.008 + 0.09504 = 0.10304)。
所以,我们患癌的概率是0.008 / 0.10304 = 0.0776,约7.8%。
有意思——钼靶检查阳性只意味着你有7.8%的患癌概率,而不是80%(测试的所谓准确率)。一开始可能觉得奇怪,但其实很有道理:该测试有9.6%的假阳性率(相当高),所以在给定人群中会有很多假阳性。对于一种罕见疾病,大多数阳性检测结果都是错误的。
让我们通过目测表格来检验一下直觉。如果取100人,只有1人会患癌(1%),而且他们很可能会检测为阳性(80%的概率)。在其余99人中,大约10%会检测为阳性,所以我们会有大约10个假阳性。考虑到所有阳性检测结果,11个中只有1个是正确的,所以阳性检测下患癌的概率是1/11。实际数字是7.8%(接近上面的1/13),但我们不用计算器就得到了一个合理的估算。
贝叶斯定理(Bayes' Theorem)
我们可以把上述过程转化为一个方程,这就是贝叶斯定理。它让你利用检测结果,纠正由假阳性引入的"偏差"。你得到事件发生的真实概率。公式如下:

以下是解读它的对照表:
- Pr(H|E) = 在阳性检测(E)条件下患癌(H)的概率。这正是我们想知道的:阳性结果下患癌的可能性有多大?在我们的例子中为7.8%。
- Pr(E|H) = 在患癌(H)条件下阳性检测(E)的概率。这是真阳性的概率,在我们的例子中为80%。
- Pr(H) = 患癌概率(1%)
- Pr(not H) = 未患癌概率(99%)
- Pr(E|not H) = 在未患癌(not H)条件下阳性检测(E)的概率。这是假阳性,在我们的例子中为9.6%。
试试任何数字:
归根结底,就是真阳性概率除以任意阳性概率。我们可以将公式简化为:
![]()
Pr(E)告诉我们获得任意阳性结果的概率,无论是在患癌人群(1%)中的真阳性,还是在未患癌人群(99%)中的假阳性。它像一个权重因子,将概率调整到更可能的结果方向。
忘记考虑假阳性(False Positive)正是使得(在检测呈阳性时)仅7.8%的患癌概率显得反直觉的原因。感谢归一化常数(Normalizing Constant),为我们拨正方向!
直观理解:照亮光芒
文章提到了一个直观的理解:用光照射真实人群并得到测试人群。这个比喻说得通,但需要几千字才能讲明白:)。
考虑一个真实人群。你进行一些检测,这些检测“照亮”了真实人群并产生了一些测试结果。如果光完全准确,测试概率和真实概率就匹配。每个检测呈阳性的人实际上都是“阳性”。每个检测呈阴性的人实际上都是“阴性”。
但这是现实世界。检测会出错。有时患有癌症的人无法在检测中被发现,反之亦然。
贝叶斯定理(Bayes' Theorem)让我们能够审视偏斜的测试结果并纠正误差,还原出原始人群,找到真正阳性结果的真实概率。
贝叶斯垃圾邮件过滤
贝叶斯定理的一个巧妙应用是在 垃圾邮件过滤我们有
- 事件A:消息是垃圾邮件。
- 测试X:消息包含某些词语(X)
代入一个更易于阅读的公式(来自维基百科):
![]()
贝叶斯过滤(Bayesian Filtering)使我们能够根据“测试结果”(某些词语的出现)预测一条消息真的是垃圾邮件的概率。显然,像“viagra”这样的词在垃圾邮件中出现的概率比在正常邮件中要高。
基于黑名单的垃圾邮件过滤是有缺陷的——它过于严格,且假阳性太多。但贝叶斯过滤提供了一个中间地带——我们使用 概率。当我们分析消息中的词语时,可以计算它是垃圾邮件的概率(而不是做出是/否的判断)。如果一条消息有99.9%的概率是垃圾邮件,那么它很可能就是。随着过滤器被越来越多的消息训练,它会更新某些词语导致垃圾邮件的概率。高级的贝叶斯过滤器可以连续检查多个词语,作为另一个数据点。
延伸阅读
关于贝叶斯,有很多讨论:
玩得开心!