投稿问答最小化  关闭

万维书刊APP下载

几个预测模型评价指标的缺点及注意问题

2023/3/29 10:41:53  阅读:102 发布者:

以下文章来源于小白学统计 ,作者小白学统计

最近审稿,看到关于预测建模的文章越来越多,模型构建过程有时在文章中体现不明显,然而评价指标的使用却是一目了然。不少文章尽管也列出了一些评价指标,却不一定合适。因此特撰此文,以期为临床医师提供一些参考。

预测模型评价指标很多,医学中比较常用的是灵敏度(sensitivity)、特异度(specificity)、准确度(accuracy)等,机器学习领域中常喜欢用精准率(precision)、召回率(recall)、F1 score等术语。这是非常实用的几个指标。本文主要介绍这几个简单指标的使用场景及缺点(ROCNRI等相对复杂的指标以后再说),希望大家使用时谨慎。最后简单介绍一个好像在医学中很少使用但很有效的指标MCC

这几个指标的概念都非常容易理解,尽管绝大多数文章或书中都有说明,但这里还是先列出这个随处可见的混淆矩阵表格,方便大家对照着看。

在上面的表格中,准确度很容易定义,就是正确预测的人占总人数的比例,也就是(TP+TN)/N。这个指标很受欢迎,因为非常符合我们的直观印象。然而它在非平衡数据中会有很大偏倚,很容易造成盲目乐观。所谓非平衡数据,也就是结局中某一类占比太低,如构建胃癌发生的预测模型,胃癌占比很低,大多数人是非胃癌,这种就是非平衡数据。

举个例子,假定夏季的100天中有5天会有特大暴雨(相当于只有5%的阳性率),我在这100天中每天预测没有特大暴雨,最后算一下我的预测准确度怎么样,95/100=95%,听起来我好像也可以呼风唤雨了,而实际上我对观天象一窍不通。回到专业上来,如果某一预测结局阳性占比非常低,这时候使用准确度要十分谨慎,不要被表面看起来很高的值所迷惑。

召回率=TP/(TP+FN),也就是医学中的灵敏度;精准率=TP/(TP+FP),也就是医学中的阳性预测值。这两个指标分别从各自角度评价了模型的预测效果,召回率以实际的阳性人数为分母,精准率以预测的阳性人数为分母,对比一下不难理解它们各自的侧重。而且这两个经常会出现矛盾,有可能一个高而另一个低。这在非平衡数据中体现很明显。

例如上面这一表格,阳性率为5%50/1000),典型的非平衡数据。召回率(灵敏度)为40/50=0.8,看起来不错,然而精准率(阳性预测值)仅为40/80=0.5。也就是说,你用这个模型预测了80例阳性,尽管这里面包含了80%的真正患者,但真正是阳性的仅有40人,也就是说,假阳性太高了。这要是癌症预测的话,另外40人估计也被吓个半死。

F1 score是精准率和召回率的调和平均:

F1 score一开始就是考虑到这两个指标的矛盾问题,所以把二者进行了调和,也就是说,一个模型不能只召回率(灵敏度)高而精准率(阳性预测值)对,或者反过来。这么一调和,保证了从两个方面都得高才算是一个好的预测模型。

事实上,F1确实也实现这一初衷,在上面表格中,F1值为0.62,说明尽管灵敏度不错,但总体而言仍算不上很好。

事实上,F score有一个更广义的公式,可以体现对召回率(灵敏度)或精准率(阳性预测值)的侧重。公式如下:

式中的beta值反映了召回率(灵敏度)对精准率(阳性预测值)的重要程度。例如,在某疾病的预测中,我更侧重灵敏度,认为灵敏度的重要性是阳性预测值的2倍,那我就可以把beta值设为2。我们常用的F1就是把beta设为1,也就是认为二者同等重要,但实际中往往我们会有所侧重。

尽管F1实际中很常用,也很好用,但它也有一个缺陷,那就是它主要侧重阳性预测,因为召回率(灵敏度)和精准率(阳性预测值)这两个指标主要就是侧重阳性预测(看看公式就明白了)。所以如果同时考虑到阴性预测的时候,F1有时也会产生很大偏倚。例如下面数据:

这是一个总数100人的群体,召回率(灵敏度)和精准率(阳性预测值)都不错,分别为0.990.92,相应的F1必然也不错,为0.95。然而,如果考虑到阴性预测效果,我们心里还得存疑。这里共9例阴性,只有1例预测正确,也就是说,特异度仅为0.11。尽管F1值很高,但很难说模型预测性能很好。

为了解决F1的这一问题,MCCMatthews correlation coefficient)不失为一个较好的替代指标。

MCC指标综合考虑了阳性和阴性的预测效果,而且考虑到了非平衡数据所带来的的盲目乐观问题。例如,上表中MCC值仅为0.2,提示模型的综合预测能力还是有待提高。

当然,如果阳性和阴性都比较好的话,MCCF1的结果就非常近似。如第二个表格中计算的MCC0.61,十分近似于F1 score值。

MCC实际上反映的预测结果与实际结果的相关系数,也就是我们常用的phi系数,只不过把它移植到了预测模型评价中,发现还挺好使。有作者提出(Davide C2020),鉴于F1 score的缺点,建议用MCC来替代F1 score,因为MCCF1的优点而无其缺点。

当预测模型是完美的(FP = FN = 0),MCC的值为1,表示完全正相关。而如果预测模型完全分类错误(TP = TN = 0),得到的数值是-1,代表完美的负相关。因此MCC的值介于-11之间,MCC=0意味着预测模型不比随机猜测更好(也就是没什么用处)。此外,MCC是完全对称的,把阳性和阴性同等看待,从不认为哪个类别比另外类别更重要,如果把阳性和阴性两个类别互换一下,其值仍然相同。

最后小结一下:

1)如果你的数据很明显非均衡,阳性率很低,建议别用准确率这样的指标,很容易让你陷入盲目乐观之中。我在不少文章中看到这个指标,一旦0.8以上,就开始说模型很好,却未发现自己的数据是非平衡数据,只是虚高而已。

2)灵敏度和阳性预测值从不同角度说明预测性能,其使用应结合应用场景、预测什么样的结局等。比如预测是否肺癌与预测是否肺炎,假阳性造成的后果完全不同。或者反过来说,漏诊肺癌和漏诊肺炎所造成的后果也是完全不同。到底哪个重要,需要具体问题具体分析,建议大家在使用时仔细考虑一下场景和侧重。

3)如果对灵敏度和阳性预测值同样侧重,那可以考虑用F1 score,对二者进行了调和折中;如果更看重灵敏度或阳性预测值的其中之一,那可以用Fβ,指定β值以确定谁更重要。

4)如果模型主要侧重阳性结局,可以用F1 score;但如果模型并无明显侧重,而是想考量对两类的综合预测效果,这时F1可能会出问题,建议使用MCC指标更为稳妥。

转自:“医学论文与统计分析”微信公众号

如有侵权,请联系本站删除!


  • 万维QQ投稿交流群    招募志愿者

    版权所有 Copyright@2009-2015豫ICP证合字09037080号

     纯自助论文投稿平台    E-mail:eshukan@163.com