ROC(receiver operating characteristic curve)是曲線。也就是下圖中的曲線。同時我們也看里面也上了AUC也就是是面積。一般來說,如果ROC是光滑的,那么基本可以判斷沒有太大的overfitting(比如圖中0.2到0.4可能就有問題,但是樣本太少了),這個時候調模型可以只看AUC,面積越大一般認為模型越好。


下面是兩個場景:
1. 地震的預測
對於地震的預測,我們希望的是RECALL非常高,也就是說每次地震我們都希望預測出來。這個時候我們可以犧牲PRECISION。情願發出1000次警報,把10次地震都預測正確了;也不要預測100次對了8次漏了兩次。
2. 嫌疑人定罪
基於不錯怪一個好人的原則,對於嫌疑人的定罪我們希望是非常准確的。及時有時候放過了一些罪犯(recall低),但也是值得的。
對於分類器來說,本質上是給一個概率,此時,我們再選擇一個CUTOFF點(閥值),高於這個點的判正,低於的判負。那么這個點的選擇就需要結合你的具體場景去選擇。反過來,場景會決定訓練模型時的標准,比如第一個場景中,我們就只看RECALL=99.9999%(地震全中)時的PRECISION,其他指標就變得沒有了意義。
准確率 - accuracy
精確率 - precision
召回率 - recall
F1值 - F1-score
ROC曲線下面積 - ROC-AUC (area under curve)
PR曲線下面積 - PR-AUC
首先,accuracy是最常見也是最基本的evaluation metric。但在binary classification 且正反例不平衡的情況下,尤其是我們對minority class 更感興趣的時候,accuracy評價基本沒有參考價值。什么fraud detection(欺詐檢測),癌症檢測,都符合這種情況。舉個栗子:
在測試集里,有100個sample,99個反例,只有1個正例。如果我的模型不分青紅皂白對任意一個sample都預測是反例,那么我的模型的accuracy是 正確的個數/總個數 = 99/100 = 99%
你拿着這個accuracy高達99%的模型屁顛兒屁顛兒的去預測新sample了,而它一個正例都分不出來,有意思么。。。
也有人管這叫accuracy paradox。
那么,除了accuracy以外有沒有什么別的更有用的metric呢?
有,precision 和 recall。上個圖幫助說明一下。
我的理解呢,就是,
- recall是相對真實的答案而言: true positive / golden set 。假設測試集里面有100個正例,你的模型能預測覆蓋到多少,如果你的模型預測到了40個正例,那你的recall就是40%。
- precision是相對你自己的模型預測而言:true positive /retrieved set。假設你的模型一共預測了100個正例,而其中80個是對的正例,那么你的precision就是80%。我們可以把precision也理解為,當你的模型作出一個新的預測時,它的confidence score 是多少,或者它做的這個預測是對的的可能性是多少。
- 一般來說呢,魚與熊掌不可兼得。如果你的模型很貪婪,想要覆蓋更多的sample,那么它就更有可能犯錯。在這種情況下,你會有很高的recall,但是較低的precision。如果你的模型很保守,只對它很sure的sample作出預測,那么你的precision會很高,但是recall會相對低。
這樣一來呢,我們可以選擇只看我們感興趣的class,就是minority class的precision,recall來評價模型的好壞。
F1-score 就是一個綜合考慮precision和recall的metric: 2*precision*recall / (precision + recall)
基本上呢,問題就是如果你的兩個模型,一個precision特別高,recall特別低,另一個recall特別高,precision特別低的時候,f1-score可能是差不多的,你也不能基於此來作出選擇。
在multi-class classification的情況下,如果非要用一個綜合考量的metric的話,macro-average(宏平均) 會比 micro-average(微平均) 好一些哦,因為macro會受minority class影響更大,也就是說更能體現在small class上的performance。macro and micro
除了precision,recall,還有別的metric哦。基本上就是把true positive,true negative,false positive,false negative各種瞎JB組合。。
這里介紹兩個ROC curve會見到的:sensitivity和specificity。
sensitivity = recall = true positive rate
specificity = 1- false positive rate
這兩個metric有什么高級的呢?且聽我細細說來。
假設我們的minority class,也就是正例,是1。反例,為0。


看出來沒有,sensitivity和specificity是條件於真實label Y的概率的。我們講這個叫條件概率嘛。那么意思就是說,無論Y的真實概率是多少,都不會影響sensitivity和specificity。也就是說,這兩個metric是不會受imbalanced data 影響的,那就很客觀了啊,是不是!而precision呢,就會隨着你的測試集里面的正反比例而變化哦。
好了,終於說到我們的ROC curve了。這個曲線呢,就是以true positive rate 和 false positive rate為軸,取不同的threshold點畫的啦。有人問了,threshold是啥子哦。這么說吧,每個分類器作出的預測呢,都是基於一個probability score的。一般默認的threshold呢都是0.5,如果probability>0.5,那么這個sample被模型分成正例了哈,反之則是反例。

關於這個曲線,大家答的已經很充分了。基本上,曲線下的面積(AUC)越大,或者說曲線更接近左上角(true positive rate=1, false positive rate=0),那么模型就越理想,越好。ROC curve 可以很好的回答什么問題呢——“不論class的基本概率怎么樣,我的模型in general能表現得多好?”
一般來說呢,最優的threshold就是橙色曲線離藍色虛線(基准線)最遠的一點啦,或者橙色曲線上離左上角最近的一點,再或者是根據用戶自己定義的cost function來的。這里有詳細的具體怎么實現。http://www.medicalbiostatistics.com/roccurve.pdf
相對的, 還有一個PR curve,就是以precision recall為軸,取不同的threshold畫的哈。剛才說的魚與熊掌不可兼得的trade-off也可以看的出來哈。

同樣的,曲線下的面積(AUC)越大,或者說曲線更接近右上角(precision=1, recall=1),那么模型就越理想,越好。
如果在我們所說的fraud detection 或者癌症檢測這一類應用中,我們的傾向肯定是“寧可錯殺一千,不可放過一個”呀。所以我們可以設定在合理的precision下,最高的recall作為最優點,找到這個對應的threshold點。
總結,我們可以根據具體的應用或者偏好,在曲線上找到最優的點,得到相對應的precision,recall,sensitivity,specificity,去調整模型的threshold,從而得到一個符合具體應用的模型。
https://www.zhihu.com/question/30643044/answer/224360465