Skip to content

元数据卡

  • 前置知识:第6章 组合数学
  • 预计时间:50 分钟
  • 核心难度:进阶
  • 完成标志:理解概率空间、条件概率、贝叶斯定理,掌握随机变量与期望的概念

你的进度

组合塔的第三间墙上挂着骰子和转盘。馆长从口袋中取出一枚硬币抛向空中——"正面还是反面?你不能确定。但抛一万次呢?"

你的任务

概率论是计算机科学中理解不确定性的数学框架。为什么缓存命中率是 90% 而不是 100%?AB 测试中,观察到的差异有多大概率不是巧合?机器学习模型输出的置信度怎么理解?——你无法避开概率。

本章分层

  • 必读:概率空间,条件概率,贝叶斯定理,随机变量
  • 选读:大数定律,中心极限定理

破局 · 溯源

你线上巡检发现某个接口的响应时间 95% 情况下 < 200ms,但偶尔有 5% 的请求超过 2 秒。你应该焦虑吗?从频繁的维度看,"2 秒"比"200ms"大了一个数量级,但从概率的维度看,它只影响 5% 的请求。概率给了你一个度量"不确定性"的语言,让你能把"偶尔变慢"量化。

概率空间的三要素:

  1. 样本空间 Ω:所有可能结果的集合。抛硬币的 Ω = {正面, 反面}。掷骰子的 Ω = {1, 2, 3, 4, 5, 6}。
  2. 事件:Ω 的子集。"点数为偶数" = {2, 4, 6}。
  3. 概率 P:给每个事件分配 0 到 1 之间的数字,满足 P(Ω) = 1, P(∅) = 0, 互斥事件概率可加。

P(掷骰子点数为偶数) = 3/6 = 1/2。

条件概率:已知某些信息后,重新评估概率。

P(A|B) = P(A ∩ B) / P(B)

"已知今天是阴天,下雨的概率是多少"——条件概率就是这个公式。

贝叶斯定理是条件概率的逆:

P(A|B) = P(B|A) × P(A) / P(B)

它让你能从"结果"反推"原因"。一个经典应用:疾病检测。

假设某种罕见病发病率 P(病) = 0.1%。检测准确率:有病时 99% 显示阳性,无病时 2% 显示假阳性。如果你检测出阳性,实际患病的概率是多少?

P(病|阳) = P(阳|病) × P(病) / P(阳)
         = 0.99 × 0.001 / (0.99 × 0.001 + 0.02 × 0.999)
         ≈ 0.047

只有 4.7%。这个反直觉的结果——阳性但大概率没病——就是"假阳性"在低发生率场景下的膨胀效应。在垃圾邮件过滤、异常检测、ML 分类器中,这个原理反复出现。

随机变量:给每个样本空间的结果分配一个数值。它不是"变量"而是从 Ω 到实数的函数。

  • 抛硬币:X(正面) = 1, X(反面) = 0
  • 掷骰子:X(点数为 6) = 1(命中),否则 = 0

期望 E[X] 是随机变量的概率加权平均。抛硬币的期望 = 1 × 0.5 + 0 × 0.5 = 0.5。掷一次骰子的期望 = (1+2+3+4+5+6) / 6 = 3.5。

期望在工程中经常以"平均响应时间"(Average Latency)的形式出现。但请注意,平均值掩盖了长尾分布。你的接口 P99 可能是平均值的 10 倍——这就是为什么运维用 P99 而不是平均值。

大数定律:实验次数越多,样本均值越接近期望。抛 10 次硬币可能 7 次正面,但抛 10000 次一定接近 5000 次正面。

常见陷阱

  • 忽视先验概率。贝叶斯定理中 P(A) 是"先验",很多人只看似然 P(B|A) 就下结论。
  • 混淆 P(A|B) 和 P(B|A)。"如果发烧则大概率是感冒" ≠ "如果是感冒则大概率发烧"——你的 AI 模型输出"80% 概率是猫"≠ "80% 的猫图片被正确分类"。
  • 期望值不代表典型值。掷一次骰子的期望是 3.5,但你永远掷不出 3.5。平均请求耗时 200ms 不代表大部分请求都接近 200ms。

通关挑战

  • 一个袋子里有 3 个红球、2 个蓝球。先取一个不放回,再取一个。求第二个球是红色的概率。
  • 写一个模拟程序:抛硬币 100 次,记录正面比例,并观察随次数增加该比例如何趋近 0.5。
  • 在垃圾邮件分类场景中,"免费"一词在垃圾邮件中出现概率 40%,在正常邮件中 1%。垃圾邮件占比 20%。请用贝叶斯定理计算含"免费"的邮件是垃圾邮件的概率。

旅人笔记

概率是"不确定性的度量"。条件概率让你利用新信息更新判断,贝叶斯定理让你从结果反推原因,期望告诉你"平均而言"——但不告诉你全部。

下一站预告:有些问题必须用整数和模运算。下一章我们进入数论——从时钟算术到 RSA 加密。

Built with VitePress | Software Systems Atlas