幾個預測模型評價指標的缺點及注意問題
最近審稿,看到關于預測建模的文章越來越多,模型構建過程有時在文章中體現(xiàn)不明顯,然而評價指標的使用卻是一目了然。不少文章盡管也列出了一些評價指標,卻不一定合適。因此特撰此文,以期為臨床醫(yī)師提供一些參考。預測模型評價指標很多,醫(yī)學中比較常用的是靈敏度(sensitivity)、特異度(specificity)、準確度(accuracy)等,機器學習領域中常喜歡用精準率(precision)、召回率(recall)、F1 score等術語。這是非常實用的幾個指標。本文主要介紹這幾個簡單指標的使用場景及缺點(ROC、NRI等相對復雜的指標以后再說),希望大家使用時謹慎。最后簡單介紹一個好像在醫(yī)學中很少使用但很有效的指標MCC。
這幾個指標的概念都非常容易理解,盡管絕大多數(shù)文章或書中都有說明,但這里還是先列出這個隨處可見的混淆矩陣表格,方便大家對照著看。

在上面的表格中,準確度很容易定義,就是正確預測的人占總人數(shù)的比例,也就是(TP+TN)/N。這個指標很受歡迎,因為非常符合我們的直觀印象。然而它在非平衡數(shù)據(jù)中會有很大偏倚,很容易造成盲目樂觀。所謂非平衡數(shù)據(jù),也就是結局中某一類占比太低,如構建胃癌發(fā)生的預測模型,胃癌占比很低,大多數(shù)人是非胃癌,這種就是非平衡數(shù)據(jù)。
舉個例子,假定夏季的100天中有5天會有特大暴雨(相當于只有5%的陽性率),我在這100天中每天預測沒有特大暴雨,最后算一下我的預測準確度怎么樣,95/100=95%,聽起來我好像也可以呼風喚雨了,而實際上我對觀天象一竅不通?;氐綄I(yè)上來,如果某一預測結局陽性占比非常低,這時候使用準確度要十分謹慎,不要被表面看起來很高的值所迷惑。
召回率=TP/(TP+FN),也就是醫(yī)學中的靈敏度;精準率=TP/(TP+FP),也就是醫(yī)學中的陽性預測值。這兩個指標分別從各自角度評價了模型的預測效果,召回率以實際的陽性人數(shù)為分母,精準率以預測的陽性人數(shù)為分母,對比一下不難理解它們各自的側重。而且這兩個經(jīng)常會出現(xiàn)矛盾,有可能一個高而另一個低。這在非平衡數(shù)據(jù)中體現(xiàn)很明顯。
例如上面這一表格,陽性率為5%(50/1000),典型的非平衡數(shù)據(jù)。召回率(靈敏度)為40/50=0.8,看起來不錯,然而精準率(陽性預測值)僅為40/80=0.5。也就是說,你用這個模型預測了80例陽性,盡管這里面包含了80%的真正患者,但真正是陽性的僅有40人,也就是說,假陽性太高了。這要是癌癥預測的話,另外40人估計也被嚇個半死。F1 score是精準率和召回率的調和平均:

F1 score一開始就是考慮到這兩個指標的矛盾問題,所以把二者進行了調和,也就是說,一個模型不能只召回率(靈敏度)高而精準率(陽性預測值)對,或者反過來。這么一調和,保證了從兩個方面都得高才算是一個好的預測模型。
事實上,F(xiàn)1確實也實現(xiàn)這一初衷,在上面表格中,F(xiàn)1值為0.62,說明盡管靈敏度不錯,但總體而言仍算不上很好。
事實上,F(xiàn)?score有一個更廣義的公式,可以體現(xiàn)對召回率(靈敏度)或精準率(陽性預測值)的側重。公式如下:

式中的beta值反映了召回率(靈敏度)對精準率(陽性預測值)的重要程度。例如,在某疾病的預測中,我更側重靈敏度,認為靈敏度的重要性是陽性預測值的2倍,那我就可以把beta值設為2。我們常用的F1就是把beta設為1,也就是認為二者同等重要,但實際中往往我們會有所側重。
盡管F1實際中很常用,也很好用,但它也有一個缺陷,那就是它主要側重陽性預測,因為召回率(靈敏度)和精準率(陽性預測值)這兩個指標主要就是側重陽性預測(看看公式就明白了)。所以如果同時考慮到陰性預測的時候,F(xiàn)1有時也會產生很大偏倚。例如下面數(shù)據(jù):
詳情請點擊下方:
https://mp.weixin.qq.com/s?__biz=MzAwOTYyMDY3OQ==&mid=2650404044&idx=2&sn=9017e65211658b780cd67ccfa49b701a&chksm=83518964b426007271a66a101a9cd00cfaa920d3951bdc9cfec450ac1b4e0de7e173cbb4d3c3&token=866936691&lang=zh_CN#rd
