条件概率公式
请允许我引入条件概率公式作为预备知识。试想有一个矩形,一个球可以随机地掉到该矩形的任意位置。那么球掉上去的概率是 1。现在我给这个矩形划出一块区域 A,记球掉进 A 的概率是 P(A),显然 P(A) 取决于 A 的面积大小。再画一块区域 B,对应概率 P(B)。如果要算球掉入 A 和 B 相交区域的概率,那么就是这两个集合的交集:P(AB)。
示意图那么请问,如果已知掉入了B,但是不知道掉到具体哪个位置,问恰好掉到 A 和 B相交处的概率?用符号 P(A|B) 表示这个概率,那么有:
这就是条件概率公式。反之,已知掉入 A,求恰好掉入A、B相交区域的概率也差不多,只需要换个字母。
全概率公式
假设有一个样本空间 被分成事件,也就是下图中的扇形,它们之间两两不相交,它们的交集记为。阴影部分表示事件。其含义是,各个 B 的子事件共同决定了 A 事件。 表示 事件和 事件同时发生,也就是其中一块阴影扇形。
样本空间于是我们有(阴影部分的拼接):
假如是在组成的样本空间的任意位置,比如只是在某两个子空间里,如,那么显然就成立了。而其他所有显然都是空集相加,得到0。因此这里的全概率公式是普遍成立的。只要你的在里面就满足条件。为了方便,我们把这类事件叫做完备事件组。
此外,结合条件概率公式,我们有:
此即全概率公式,它的意义在于,一个事件的概率不好求时,可以转化为在一系列条件下发生概率的和。
贝叶斯公式
根据条件概率公式:
(1) 和 (2) 联立有:
此即大名鼎鼎的贝叶斯公式(Bayes' Theorem)。
现在从另一个更直观的视角来看贝叶斯公式,其实是一回事。如图:
贝叶斯韦恩图
的概率是交集C部分占整个B的比例。因为已经确定B事件发生了,所以再求A事件的概率,要以B事件发生的概率作为分母,两者交集作为分子。
贝叶斯公式应用
假设有一种罕见病,在人群中的发病概率是 0.1%,记为 P(E),这是一个基于统计结果的先验概率。有一个医生,他能正确检测出这种病的概率是 99%,现在小明被医生检测出有病,那么小明实际有病的概率是多少?
仔细审题,“医生能正确检测出这种病的概率是 99%”,其含义是,当一个人确有此病,医生有 99% 的把握检测出来。因此 99% 不能表示小明实际得病的概率。因此这里的前提条件就是此人有病(记为事件H),我们把它记为 P(E|H),表示确实有病的条件下,检测结果也是有病的概率。
现在我们要计算的是检测有病,那么实际有病的概率。也就是 P(H|E)。根据贝叶斯公式有:
P(E) 表示检测出有病的概率。它其实分两种情况,有病并正确检测,以及没病但是检测错误,其实也就是全概率公式:
联立得:
朴素贝叶斯公式
考察这样一组数据。其中挂科是结果,其他行为是自变量。1 表示 True,0 表示 False。
挂科() | 喝酒() | 逛街() | 学习() |
---|---|---|---|
1 | 1 | 1 | 0 |
0 | 0 | 0 | 1 |
0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 |
1 | 0 | 1 | 0 |
0 | 0 | 1 | 1 |
0 | 0 | 1 | 0 |
1 | 0 | 0 | 1 |
引入一个独立性假设(independence assumption),这就是朴素贝叶斯之所以叫“朴素”(naive)的原因。其含义是:每个“喝酒-挂科”,“不学习-挂科”等等组合都是独立的,我们可以直接根据发生次数来计算概率。
为了方便计算,把整个样本表转化成“频数表”,统计每个事件发生的次数。
喝酒 | 不喝酒 | 逛街 | 不逛街 | 学习 | 不学习 | 总数 | |
---|---|---|---|---|---|---|---|
挂科 | 2 | 2 | 2 | 2 | 1 | 3 | 4 |
不挂科 | 1 | 3 | 2 | 2 | 3 | 1 | 4 |
合计 | 3 | 5 | 4 | 4 | 4 | 4 | 8 (样本数) |
这个小小的数据集能给我们带来很多信息。
挂科的概率:
这是根据样本得来的先验概率。在不知道一个人是否喝酒、逛街、学习的情况下,也就是没有任何证据(evidence)的情况下,我们只能盲猜,因为挂科和不挂科的概率都是 1/2。假如挂科的情况多了10个,那我们肯定猜这个人挂科,毕竟概率更大。
喝酒的概率:
由于我们假设每个事件都是独立的,那么 8 个样本中,喝酒的有三个,我们就说喝酒发生的概率是 3/8。
已知一个人挂科,他不学习的概率:
挂科一共发生了 4 次,其中 1 次是学习的,3 次是不学习的。于是已知一个人挂科了,那么他不学习的概率就是 3/4。
此外,根据独立性假设我们可以知道:
举个具体的例子:在挂科的情况下,喝酒、逛街、不学习的概率,是三个事件在挂科的情况下的概率之积,因为我们假定它们是独立事件。
可以看成一个事件,根据贝叶斯公式,我们有:
于是 (3),(4) 两式联立有:
现在我们来计算不喝酒、不逛街,只学习的人,是挂科概率大,还是不挂科概率大。我们用符号 k 表示 :
k 是个正数,我们不用管它,之需要比较 和 ,P(挂科):P(不挂科)=2:9,所以我们推测这个人不挂科。
“公式化”
现在把前面的描述转化成数学语言。为了体现“函数”的一面,用 表示三个特征向量 (feature vector),用 表示类别变量 (class variable)。根据贝叶斯公式有:
现在引入独立性假设,那么有:
两式联立:
并推广到 n 个特征向量:
由于只需要比较分子,那么我们求使得分子值为最大的那个,就是我们对一组输入的预测结果。用表示预测值,写成公式:
参考资料
- 【官方双语】【Veritasium真理元素】贝叶斯陷阱
- Naive Bayes - scikit-learn documentation
-
朴素贝叶斯分类器 (Naive Bayes Classifier)
tip: 引用了资料 3 的例子,但是它的部分叙述有误,请谨慎观看
网友评论