近年来,在大数据分析领域,机器学习领域,概率论大放异彩,尤其是贝叶斯分析,更是所有算法中不可不知的一个重点算法。
回到基础,很多人尽管学过,并没有真正理解贝叶斯概率的本质,所以应用的时候,看不出实际中哪些问题能归纳成贝叶斯概率问题,就失去了解决问题的能力。
我一直觉得,再难的数学题也怕举个例子。今天我们看图说话,可以更加直观的理解贝叶斯概率,把问题模型在脑子里树立起来,就算是透彻理解了。
我们通过一个故事引出贝叶斯公式:
小明去医院做常规体检,在小护士的忽悠下,增加了一项罕见的病的检查。结果,非常的不行,三天后小明被告知检查结果呈阳性。小明悲痛欲绝,觉得自己下半生没了希望,非常痛苦的发了朋友圈。
幸好,对门的老张是个教概率论的老师,他看到朋友圈吓了一跳,立刻找到小明了解情况。待小明将情况说出后,老张立刻告诉他,情况没那么糟糕。
小明问道:“检查结果呈阳性了,难道还不能说明问题?”
老张回答说:“问题就在这里,他医院的机子就不会检查出错吗?”
小明说:“人家说了,这是最新德国进口的机器,检查出错的概率是千分之一,基本上没错的。”
老张笑了一下说:“千分之一就说明还是有错的嘛,还不能下结论。”
小明说:“都千分之一了,也就是说我得病的可能性是百分之九十九点九。”
老张说:“你的病的可能性并不是百分之九十九点九。”
小明立刻来了精神,问道:“难道还有别的可能?”
老张说:“当然了,要知道你真的得这种病的可能性,还需要知道人群中患有这个疾病的概率”。
小明说:“我查过了,是万分之五,这是一种罕见的病。”
老张又说:“还有件事情必须搞清楚,就是所有人中,不管得病的不得病的,检查结果呈阳性的是多少啊?”
小明说:“什么意思?”
老张解释说:“这很简单,这个机器既有可能把好人检测呈阳性,也有可能把病人检测成阴性,对吧?虽然可能性很低,但是有可能的。”
小明点点头:“这跟我有什么关系?我已经是阳性了。机器那么准,难道我还能是那千分之一吗?”
老张立刻说:“问题就在这里,你这种情况不是千分之一。”
小明听完给医院打了个电话,医生告诉他,人群中呈阳性的人数占所有检查过的总人数的比值是千分之一,老张听后哈哈大笑,这机子太破了,你八成没事儿。
小明睁大眼睛问到:“真的吗?”
老张严肃地说:“你听说过贝叶斯公式吗?下面我给你来分析一下,像 你这个情况就是检查结果呈阳性,但是不知道是不是真得了这个病,对吧?”
小明点点头。
老张接着说:“现在情况是这样,检查结果阳性,这是前提条件,我们需要知道的是在阳性的条件下,真正的的病概率,就是 P(病|阳),后面表示已经发生的条件(呈阳性),竖杠前面表示在阳性前提下,得病的概率。其实我们真正关心的是有没有得病,而不是结果是不是阳性,对吧?”
小明表示听懂了,点头示意老张继续说。
老张接着说:“要知道这个概率,我们需要知道人群中所有检查呈阳性的概率,也就是P(阳),刚才你问过了是千分之一,也就是 P(阳)=0.001;然后呢,你还查过这个病在人群中发病的概率为万分之五,也就是P(病)=0.0005; 对吧?
再根据你的说的这机器的准确度,它把患病的人检测成为阳性的概率是百分之0.999, 请注意,这又是一个条件概率(见后注附加阅读),条件就是确认患病的情况下,结果呈阳性的概率;换句话说就是有一千个确实得了病的,跑来让这个机子来查,它会测出999个阳性,还有一个阴性,这就是你觉得机器很准的原因。
我们把这个条件概率记为:P(阳|病)=0.999,那么我们要知道的是P(病|阳),也就是你的情况,我肯定告诉你,P(病|阳)绝对不等于P(阳|病),我给你画个图你就明白了。”
接着,老张就花了下面这张图,小明一看就明白了:
“所以呢,你做为检测结果呈阳性里的一员,也就是所有红框内的2000人,真实发病的只有999人,好人1001个,你得病的概率连一半都不到。”老张指着图说。
小明大松一口气,:“这个破机器这么不准啊,那为什么他告诉我准确率是99.9%,这不是骗人吗?“
老张说:"倒也不能说是骗人,他们只是没告诉你前提条件,前提条件是你真要是得病了,检测结果呈阳性的几率是99.9%,这还算可以啦。"
小明说:”我都快被吓死了,多亏你来帮我分析。你怎么这么聪明啊,这么难转的弯儿都能绕明白,不愧是大学老师啊。“
老张说:”其实这是概率论里的一个著名公式,就是贝叶斯公式。但我直接给你说公式怕讲不明白,但我只要一画图你就明白了,下面就是这个公式。你看看。“
小明看了半天,又回去对着图看,才明白。”这公式真够别扭的。“
老张说:”没错,很多学生理解不了,就是因为这公式表达的不够直观。所以我推荐画图来说话:
第一步:画出一个长方形黑色方框代表总的人群数,取个好算的数字,这里取200万,后面你会明白。
第二步:在黑色长方形里面,分成两部分:绿色代表健康人,橘色代表发病的人。这是真实的统计概率,是再次验证过真的得病的那些人。在这里,P(病)=0.0005,1000人,而健康人是199000,这的确是个比较低的概率了。
第三步:在橘色框内,画一个红色的框,代表检测呈阳性的那些人,这里是99.9%,也就是999人,含义是:有一千个病人,送到机器前检查,机器会告诉你999个阳性,一个阴性。它搞错了1个。
第四步:很重要,别漏了!在绿色框内画一个红框,代表在健康人里面检测结果呈阳性的人,这一部分和刚才橘色内部的红框内的
人数总和 代表在200万人中,所有的检测结果呈阳性的人。这个数据就是P(阳)=0.001,即2000人。刚才说了,这里面真正有病的才999人,这个机器它把1001误诊了,给出了阳性的结果。所以,这个机器最大的问题不是在于有病的人检测不出来,而是会把许多健康的人检测成阳性。
第五步:特别简单了,所有的阳性为2000人,有病的才999人,那么你得病的概率是P(病|阳)=999/2000*100%=49.5%,还不到一半呢。
这也就是从所有呈阳性的结果里挑出得病的那些,道理其实特别简单的。其实找出所有呈阳性的人才是这个问题背后隐藏的真正信息。”
老张说完,小明就彻底明白了:“我要立刻去另一家医院再查一遍,这机器太不靠谱了。“
”对的,应该复查一下!即使在最坏的情况下,也不要轻易下悲观结论,概率问题隐藏着许多的猫腻,一不小心就会被他骗了。这里最重要的就是一定要搞清楚一件事情发生的前提条件才行。“老张最后又强调了一下。
结尾:小明又去医院复查了一次,他这次结果是阴性,那么最后的问题是:
检测结果为隐性的人,患病的概率多大呢?P(病|阴)结果就在图里哦!
算对的回复一下哈,证明你学会了。
再来个例题:
设某公路经过的货车与客车的数量之比为1:2,货车中途停车修车的概率为0.02,客车为0.01,今有一辆汽车中途停车修理,则该车是货车的概率是多少?
欢迎关注我,一起讨论!
附加阅读:
条件概率:
设A, B是两个事件,且P(B)>0, 则在事件B发生的条件下,事件A发生的条件概率(conditional probability)为:
P(A|B)=P(AB)/P(B)
P(AB) = P(B)·P(A|B) = P(A)·P(B|A)
全概率公式(formula of total probability)
将事件A分解成若干个小事件,通过求每个小事件的概率,然后相加从而求得事件A的概率。
这个A也就是贝叶斯公式后面隐藏的全部信息了。