Points of Significance: 贝叶斯公式
Points of Significance: 贝叶斯公式
简介
Nature methods从2013年9月开始发表月刊Points of Significance系列,该系列主要介绍统计在生物学中的应用,让读者可以更正确的理解及使用统计。有研究发现,在医学类期刊上发表的文章中,有接近半数的统计方法的使用都是不正确的,所以Nature methods推出该系列统计文章,以实用易懂的方式来介绍统计中的一些基本概念。
前言
学过统计或者做过数据分析,数据挖掘的人一定听说过贝叶斯,但是可能不一定都理解贝叶斯到底是怎么回事。本文将简单介绍贝叶斯理论的基本内容。为之后介绍贝叶斯相关知识打好基础,在说之前,我们先来思考三个简单的问题。
1.疾病诊断
我们每年会到医院体检,根据体检结果来调整我们的生活,调整我们的身体,甚至到医院再进行复查。假如说在中国得某种癌症(肺癌)的比例为1%,另外99%都是正常人,也就是说每100个人中只有1个得肺癌,其他的都不得肺癌。在我们的体检指标中,有一个指标A,98%的肺癌病人的指标A会检测出来是阳性,同时也有2%的病人检测不出来。但是对于一个正常人,有3%的人会被检测出来指标A阳性。好了,某天你去体检,检测出来指标A是阳性,就问你怕不怕!
2.检察官谬误
某城市总共有100万人,某天发生凶杀案,除了死者身上有凶手皮肤组织外,没有任何的证据。然后实验匹配结果匹配到小明与凶手皮肤匹配,而检察官平均每1000个才会有一个人符合,那么小明是凶手的概率是1000分之999。进而判定小明有罪,这样合理吗?
3.人脸识别
前两天比较火的《谷歌研究员两万字批驳上交大用深度学习推断犯罪分子》这批文章不知道大家有没有看到,我们这里不研究里面存在的合理性、不研究伦理问题,我们都不关心,我们就关心:假如研究报道的真阳率为90%,假阳率为6%是可以重复的,不受其他各种原因影响,那么这样“好”的结论可以用来为实际判断是罪犯与否提供参考吗?(仅考虑可信程度,不考虑伦理啊,种族啊,歧视啊等其他各种因素,我们是技术类公众号!)
贝叶斯公式
为了说明上面的问题,我们首先介绍相关的知识,然后再给出上面问题的结论。首先我们需要了解的就是今天的主角,贝叶斯公式。
1.条件概率
首先我们需要理解条件概率,概率我们都是知道的,可以比较直观的理解为可能性,比如得病的概率,扔骰子得到1的概率等等。如果我们把得病看成事件A,那么可以将得病的概率用P(A)表示,如果将扔骰子得到1点看成事件B,那么扔骰子得到1的概率可以用P(B)表示。
刚才我们的概率都是没有其他任何前提条件的,如果有其他前提条件的话概率就会改变,假如某人一年平均有3.65天会得病,那么他今天得病的概率P(A)是1%,那么如果我们知道另外一个事件B就是他今天一直在咳嗽,那么他得病的概率还是P(A)吗?我们定义条件概率如下:
上面的P(A|B)就是条件概率,表示在事件B发生的时候A发生的概率。可以由事件A和事件B同时发生的概率除以事件B发生的概率得到。此时可以理解先验概率和后验概率了。
2.先验概率、后验概率
先验概率:对事件A来说,如果我们不考虑其他事件比如B的影响,事件A发生的概率P(A)就是先验概率。例如某人在观测其表现得病的概率。
后验概率:对事件A来说,如果考虑其他事件比如B发生的影响,事情A在事件B发生时候的条件概率P(A|B)为事件A发生的后验概率。例如在观测到某人咳嗽后得病的概率。
同时我们可以得到下面公式:
该公式考虑的重心放到了事件B上,上面两个公式分别可以得到:
从而得到
转换后可到
上面这个公式就是贝叶斯公式,表明事件A的后验概率P(A|B)正比于事件A的先验概率P(A)。
疾病诊断解答
知道贝叶斯公式后,我们可以来看看在文章开头提到的疾病诊断问题了。我们需要计算某人被检测出来指标A是阳性的,那么他患病的概率为多大呢?问题再简单描述一下:
假如说在中国得某种癌症(肺癌)的比例为1%,在我们的体检指标中,有一个指标A,98%的肺癌病人的指标A会检测出来是阳性,有2%的病人检测不出来。但是对于一个正常人,也有3%的人会被检测出来指标A阳性。
所以我们想要知道的就是在指标A阳性的时候得癌症的概率P(癌症|指标A阳性),利用贝叶斯公式可以得到
我们知道,在所有人中有1%的人会得癌症,那么也就是说P(癌症)为1%,而得癌症的人有98%的人会被检测出来指标A阳性,所以P(指标A阳性|癌症)为98%,在所有人中,指标A阳性的概率为3%,即P(指标A阳性)为3%,根据贝叶斯公式,我们可以计算出指标A阳性然后得病的概率为:
也就是说,虽然指标A阳性,但是该人得癌症的概率也不到三分之一。所以说还是不得癌症的概率大67.3%。所以就算检测出来指标A样本,我们也不用这么害怕,但是相对于人群的1%的得病率还是需要引起足够的重视。
检察官谬误解答
先来回顾一下问题:
某城市总共有100万人,某天发生凶杀案,除了死者身上有凶手皮肤组织外,没有任何的证据。然后实验匹配结果匹配到小明与凶手皮肤匹配,而检察官平均每1000个才会有一个人符合,那么小明是凶手的概率是1000分之999。进而判定小明有罪,这样合理吗?
显然我们只需要计算小明犯罪的概率就可以了。由贝叶斯公式我们可以得到:
显然,如果某人是罪犯,那么他的皮肤一定是匹配的,所以P(皮肤匹配|犯罪)为1,条件中已经告诉我们皮肤匹配上的概率P(皮肤匹配)为0.1%,下面主要是要求小明是罪犯的先验概率P(犯罪),如果没有其他任何证据的情况下,我们认为小明是罪犯的概率和该城市所有100万人的概率是一样的,那么P(犯罪)为100万分之1,所以我们可以计算
所以小明是罪犯的概率只有0.1%,微乎其微。
在继续说我们的第三个例子之前需要介绍一些基本的概念。
分类模型衡量
在数据分析中,经常会遇到分类的问题,下面我们将简单介绍衡量二分类模型好坏的一些基本指标。下面的二联表以是否患病为例:
真阳性TP(True positive):
真实患病且被预测出来也患病的数量。
假阳性FP(False positive):
真实健康但是被预测出来患病的数量。
假阴性FN(False negative):
真实患病但是被预测出来不患病的数量。
真阴性TN(True negative):
真实健康且被预测出来也是健康的数量。
有了这几个标准,定义以下常用的衡量模型的指标:
真阳性率TPR(True positive rate):
真阳性样本数量与所有真实患者数量的比值,即
假阳性率FPR(False positive rate):
假阳性的样本数量与所有真实健康的数量的比值,即
还有比较常见的如准备度Accuracy,假发现率FDR等等,本文主要介绍上面两个指标。
模型评价
举两个简单的例子来说明贝叶斯在模型评价方面的应用。
如上面的图所示,假如有一种检测方式,使用方案A可以较为准确的检测出病人来,真阳性率为90%,假阳性率为10%,那么我们来看看在不同比例的病人情况下会有什么样的影响。
Case 1中,真实患病的人数为10%,健康人数为90%,如果某人用方案A被检测出来患病,那么他真实患病的概率为多少呢?
有题目中条件真阳性率为90%,所以P(被检测患病|真实患病)为90%,真实患病人数为10%,所以P(真实患病)为10%,那么被检测出来患病的概率为多少呢?显然包括两个部分,一是真实患病被检测出来患病的真阳性,二是健康人被检测出来患病的患病的假阳性,这里为10%*90% + 90% * 10% = 18%。所以其真实患病概率为
只有一半的正确率。也就是说,如果检测出来100人患病,那么只有约50%是真的患病。
对于Case 2来说,我们通过相同的方法可以计算
此时检测正确率就真的可以达到90%了。
预测罪犯问题解答
问题重述:
前两天比较火的《谷歌研究员两万字批驳上交大用深度学习推断犯罪分子》这批文章不知道大家有没有看到,我们这里不研究里面存在的合理性、不研究伦理问题,我们都不关心,我们就关心:假如研究报道的真阳率为90%,假阳率为6%是可以重复的,不受其他各种原因影响,那么这样“好”的结论可以用来为实际判断是罪犯与否提供参考吗?
对于这个问题,我们首先需要理解数据背后的真实结果。研究者所用的数据含有大量的罪犯样本,总共1856人,其中730人已知的罪犯,罪犯比例远远高于社会中真实罪犯比例。若是我们将这个精度的预测模型用到真实人群中,预测准确度有多少呢?
同样的使用贝叶斯公式我们计算如果被预测是罪犯,那么他真实是罪犯的概率:
根据上面描述知道P(被检测罪犯|真实罪犯)为90%,真实社会中的罪犯比例是很低的,我们假如为1%,那么P(真实罪犯)为1%。被检测出来是罪犯包括真阳性和假阳性的部分,计算为1%*90% + 99%*6% = 6.84%,所以由贝叶斯公式
也就是说,如果一个人被判定为罪犯,那么只有13.2%的概率是正确的,这样大小的概率是否真的有用呢?
总结
说了这么多,大家应该对贝叶斯公式有比较深入的了解了。当然这些知识基本在任何一本统计入门书籍里面都有提到,大家也可以去查看。希望本文能帮助大家更加深入的理解贝叶斯公式,通过贝叶斯公式去透析生活中的现象,也通过贝叶斯公式理解各个paper中的预测模型到底好不好,可以不可以实际的应用!
参考文献
某一本统计书
维基百科词条:贝叶斯定理,上面有三个例子,大家可以自行看看
《谷歌研究员两万字批驳上交大用深度学习推断犯罪分子》本文中的第三个问题中的真阳性90%,假阳性10%的数据来源。
声明:上述内容为NGSHotpot读文献整理写出,若有遗漏或错误,感谢您指出。
若有任何意见、建议、或对上述内容有疑问请发送邮件到:ngshotpot@126.com
扫描或识别下方二维码关注NGSHotpot