思想海洋的远航分享 http://blog.sciencenet.cn/u/xying 系统科学与数学水手札记

博文

预测混淆与贝叶斯公式 精选

已有 21510 次阅读 2017-4-24 07:32 |个人分类:科普|系统分类:观点评述| 预测, 概率, 贝叶斯公式, 辨识, 混淆矩阵

张老师科普概率悖论,以王宏血捡为例谈患病的概率【1】。科学网热议时,我正在智利、阿根廷旅游。高同学亢声惊人【2】,被围殴抱头而去【3】。后来多人谈贝叶斯,很是娱乐,高空论剑,云遮雾绕,惘者益惘,不信者仍然不服,待我到家,已是笑渐不闻声渐消了。

科学网博文中贝叶斯科普确实不错。但是高同学咭言,从检查结果得到患病概率不必用贝叶斯公式计算,直接从混淆矩阵统计就可得出,这个知识点被大家忽略了。这既怪他理解模糊,也怪围殴者把混淆打成了糊涂,其实这矩阵表达的是辨识混淆的状态分布,是可以直接从中得到王宏得病概率的。

自从1998Ron KohaviFosterProvost用混淆矩阵(confusion matrix)来说明预测误差与分类辨识的关系,得以厘清识别训练追求的目标,它已成为机器学习以及数据科学的基本知识。以此来解释各种误差指标和预测的效用,远比通过概率和贝叶斯公式来得直观清晰。下面普及混淆矩阵这个知识点,不从主观概率角度,只用统计比例来谈王宏患病的可能性。

混淆矩阵可以用于多类的辨识,最基本的辨识是二值分类,它与实际分类的组合有真阳性(TP),假阳性(FP),假阴性(FN),真阴性(TN),即辨识正确和错误混淆的四种情况。把检验辨识正误结果的样本数量分别放在这四种情况的表中,称为混淆矩阵。通常它是在测试机器辨识功能时,统计结果得到的。

在王宏的故事里,血检对有这病和无这病分别有1%的误判率,有这病只占0.1%的人口,下面是一个模拟符合这分布数据的混淆矩阵例子。它具有100000个测试样本。

实际情况 辨识结论

阳性 B

阴性 ~B

有病 A

TP =99

FN = 1

无病 ~A

FP = 999

TN = 98901

1  

用此可以统计各种误差指标的比率。有病情况下检查出阳性的比率,称为敏感度(sensitivity),P(B|A) = TP/(TP+FN) = 99%;无病查出阴性的比率,称为特异度(specificity),P(~B|~A) =TN/(FP+TN) = 99%;有病样本的比率P(A) = (TP+FN)/All = 0.1%All = TP+FN +FP+TN;被检查出阳性被证实有病的比率(准确度 precisionP(A|B) = TP/(TP+FP) = 99/(99+999) = 9%,与讨论中用贝叶斯公式算出来的一样。这些都是直接从混淆矩阵中得到的统计结果。这里P是比率的意思,不涉及到概率的概念,仅是用相同的符号表达矩阵中测试结果统计出的比率值。注意到在检测中样本阳性的比率 P(B) = (TP+FP)/All,不难从它们定义中得出P(A|B)=P(B|A)P(A)/P(B)的关系。

如果这些样本的取样,符合实际人群的分布,那么这些统计的比率就可以解释成概率,个体如果不是自外于统计群体中的芸芸众生,这些概率便是预测的可能性。表中得出的比率关系P(A|B)=P(B|A)P(A)/P(B)便是贝叶斯公式。根据检查出阳性的信息B,可以把王宏患病的估计P(A),改进到P(A|B),贝叶斯公式联系起它们。所谓的先验概率是指在得到B知识之前,对A的估计P(A),后验概率指之后的估计P(A|B)。从表中可以很清晰地看到这后验之于先验估计,其实是限于阳性B,把原来涉及到全表四个变数的估计,排除到只需要阳性B这一列的两个变数。信息改善了估计,这便是贝叶斯公式的哲学含义,如此而已。

为什么不用人们熟悉的精确度来估量预测的功效?因为通常精确度(accuracy)指的是正确辨识的比率Acc = (TP+TN)/All,它用于分类预测中会引起很大的误解。例如这个例子中精确度Acc = 99%,如果机器坏了,血检总是给出阴性平安无事的报告,因为有病的人只占0.1%,它的辨识精确度达到Acc = 99.9%,比机器没坏前还高。人们习惯误用熟悉的指标,所以平庸无为往往比勇于任事有更好的考绩。

混淆矩阵可以让你清晰地了解分类辨识中混淆的可能,以此可以定义不同预测效用的指标,让机器学习在训练中追求,以形成合适的辨识智能。例如保安系统的异常检测,要求敏感度很高,机场检测门,机器宁可误响让人随后搜身,也不希望错过。高同学也属敏感度很高的学术异见者,尽管误报率也很高,对促进科学网讨论还是很有贡献的。分类预测常用的更好指标是F1 = 2/(1/P(A|B)+1/P(B|A)) = 2TP/(2TP+FP+FN) ,它追求有均衡敏感度和准确率。例如上面例子的F1=99%,机器坏了时F1=0. 有兴趣可以阅读【4】及机器学习有关的课文。

对于预测的准确率P(A|B),人们感到不解的是:分类辨识检测的是样本模式,验血查王宏血样的模式,查的就是所有可能模式中的哪一种,这跟世界人民多少得病有毛关系?

比如说王宏故事中血样有200种模式,机器把其中100种归结为阳性,对了99种,又错失了1种,即有1%的假阳性和1%的假阴性,把它们列为混淆矩阵如下:

所有模式 辨识结论

阳性 B

阴性 ~B

有病模式 A

TP =99

FN = 1

无病模式 ~A

FP = 1

TN = 99

2  

验血查的是王宏不是世界人民,他的阳性指标说明他的血样符合99个真的有病模式和1个误判的模式之一,按此,有病的可能性P(A|B) = 99%,干嘛还要扯上世界人民来个贝叶斯?

这是高同学、黄同学的主张。请不翻书,别往下看,沿着他们的思路认真想一想,这有错吗?

1计算王宏是9%概率有病,表299%,两个混淆矩阵对预测的准确率P(A|B)计算出的数值不同,它们的差异在于,表1是按照人群患病的比例来取样统计的,而表2是按照血样的模式来统计的。到底该用哪一种来计算预测的准确率?

机器检测查的是给定的样本,其敏感度P(B|A)和特异度P(~B|~A)只辨识模式,确实与其他人患病率无关。用这两个表计算结果都是一样的。但计算预测的准确率,却不能将论域中所有的模式的出现视为均等。这准确率指的是,到底有多少个(而不是多少种)真正有病的模式被机器认为是有病的。在表2中,有病和无病模式各有100种,但从统计得知有病只占0.1%,也就是说这100种的无病模式出现个数的频率是有病模式的999倍,检查为假阳性的那个误测模式个数出现的比率也比表2增大了999倍。王宏的患病可能性与其他人无关,但他血样各种模式的出现频率却可以由人群中统计得知。这时就需要用贝叶斯公式的计算来修正。而表1中的样本已经直接反映了这些模式的个数分布,在这例子中血检阳性说明,王宏的血样是99个不同有病模式和999个同一种误判模式之一的情况,所以这时不需要贝叶斯公式,便能直接得出预测的准确率是99/(99+999)=9%.

王宏血检阳性后有9%可能患病,马上再做一次血检,用贝叶斯公式有助于改进概率估计吗?不必深究条件概率的理解,模式辨识的混淆矩阵告诉你这不可能。两次概率完全是一样的,除非你考究人为和噪音的误差。

检测报告讲概率找抽吗?你落后了。我每次做检查都要一份报告自己看,美国血检报告异常项的确有时附上统计患何病的比率,提醒进一步检查。它贴心告诉的是预测准确率,而不是给出敏感度,让你纠结怎么去计算。

【参考资料】

  1. 张天蓉博文,概率论悖论http://blog.sciencenet.cn/blog-677221-1042909.html  

  2. 高山博文,我用公式说明科学网一个概率问题的错误http://blog.sciencenet.cn/blog-907017-1043262.html

  3. 杨正瓴博文,概率论-统计学学派:袁贤讯、高山、徐晓、张天蓉…http://blog.sciencenet.cn/blog-107667-1048435.html

  4. WikipediaConfusionmatrix  https://en.wikipedia.org/wiki/Confusion_matrix




概率问题与贝叶斯定理
https://blog.sciencenet.cn/blog-826653-1050746.html

上一篇:重修线性代数10——计算
下一篇:检测诊断与贝叶斯公式
收藏 IP: 50.185.163.*| 热度|

29 刘全慧 张天蓉 戎可 田云川 魏焱明 徐令予 文克玲 武夷山 康建 杨正瓴 王春艳 宁利中 陆绮 付福友 袁贤讯 徐绍辉 徐晓 李天成 苏德辰 惠小强 xlsd zjzhaokeqin sunjian1016 icgwang gaoshannankai haipengzhangdr yangb919 xqhuang yunmu

该博文允许注册用户评论 请点击登录 评论 (135 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-21 22:55

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部