朴素贝叶斯定理的示例 郝伟 2021/04/26 [TOC]
1. 简介
先上公式:其中,$P(A|B)$指在事件B发生时事件A发生的几率。具体内容可以看这篇文章,写的非常好。
公式其实很简单,不难记忆。但是很多人都理解困难,其核心难点在于如何正确定义事件A和事件B,只要这两个事件定义正确了,注可以轻松地供稿公式计算以获得正确的结果。一般而言,P(A)或P(B)都是已知的,属于先验经验,而P(A|B) 或 P(B|A) 是未知的,属于后验经验。其中 P(A|B) 的值可能很大,甚至远比 P(A) 或 P(B) 要大。
举例来说,设事件A表示有某疾病,事件B是对此疾病的化验结果为阳性,则:
- P(A) = 0.0001, 有这个疾病的几率是万分之一;
- P(B) = 0.0002, 化验为阳性的几率是万分之二;
- P(A|B)=0.5, 在化验为阳性的情况下,确实有此疾病,即确诊几率是50%,也就是说有另外50%是误诊;
- P(B|A)=1,在有此疾病情况下去化验,化验结果100%为阳性。
下面让我们看几个示例,来深入理解这个公式。
2. 示例1:Surgue问题
问题:有白色和红色两个碗都随机放了Surgue和Choclate两种糖果,其数量分别如下:
- WriteBowl有30个Surgue10个Choclate;
- RedBowl有20个Surgue20个Choclate。
现在随机抽出一粒糖是Surgue,则其从WriteBowl来的几率有多大?
解:设事件A为抽取碗的颜色,则 $P(WriteBowl)=P(RedBowl)=50\%$。 设事件B为糖果的种类,则 $P(Surgue) = (30+20) / (30+10+20+20) = 62.5\%$. 在WriteBowl中 $P(Surgue|WriteBowl)=30/(30+10)=75\%,P(Choclate|WriteBowl)=10/(30+10)=25\%$。 在RedBowl中 $P(Surgue|RedBowl)=20/(20+20)=50\%,P(Choclate|RedBowl)=20/(20+20)=50\%$。 所以,。结果说明,从WriteBowl中取得Surgue的几率更大。这与我们的主观观察也一致,毕竟WriteBowl中的Surgue的比例75%比RedBowl中的50%更高,所以有更高的几率从WriteBowl中取得Surgue。
3. 示例2:主观经验
问题:已知某种疾病的发病率是0.0001,即1万人中会有1人得此疾病。现有一种试剂可以检验患者是否得病,其准确率为0.99,即对一个此疾病的患者进行检测,有99%的概率呈现阳性。但是对于正常人检测,它也有一定几率错误地显示为阳性,其误报率为5%。问题:现有一名化验者的检验结果呈阳性,那么他确诊的可能性有多大?
解:假定A事件表示有此疾病,事件B表示化验结果为阳性。 问题“现有一名化验者的检验结果呈阳性,那么他确诊的可能性有多大?”就是求在事件B发生的情况下,事件A发生的几率,即 $P(A|B)$。那么,下面先分析已知的条件: 根据“发病率是0.0001”,可得: 根据 “现有一种试剂可以检验患者是否得病,其准确率为0.99”,可得: 根据“现有一种试剂可以检验患者是否得病,其准确率为0.99”,可得: 根据“它也有一定几率错误地显示为阳性,其误报率为5%”,可得:
有了以上的三个条件后,根据全概率公式,可得:
再利用条件概率公式进行计算,可得:
由此可见,即使化验结果呈阳性,真正可以确诊的几率也只有0.1976%,有99.8024%的几率呈现为"假阳性",即阳性结果完全不足以说明病人得病。为什么会这样?为什么这种检验的准确率高达99%,但是可信度却不到0.2%?答案是与它的误报率太高有关(顺带提一句,如果误报率从5%降为1%,病人得病的概率会变为0.98%,即提升为原来的5倍)。有兴趣的朋友,还可以算一下"假阴性"问题,即检验结果为阴性,但是病人确实得病的概率有多大。其实,对于医学检测来说,"假阳性"不可怕,顶多带来些心理压力,大不了多化验几次即可。真正可怕的是"假阴性",即明明有病却检查不出来,结果贻误了治疗时机,结果往往可能是致命的。