ROC和AUC介紹以及如何計算AUC

原帖轉自:https://www.douban.com/note/284051363/

ROC(Receiver Operating Characteristic)曲線和AUC常被用來評價一個二值分類器(binary classifier)的優劣。這篇博文簡單介紹ROC和AUC的特點,以及更爲深入地,討論如何作出ROC曲線圖以及計算AUC。

ROC曲線

需要提前說明的是,我們這裏只討論二值分類器。對於分類器,或者說分類算法,評價指標主要有precision,recall,F-score^1,以及我們今天要討論的ROC和AUC。下圖是一個ROC曲線的示例^2
在這裏插入圖片描述

正如我們在這個ROC曲線的示例圖中看到的那樣,ROC曲線的橫座標爲false positive rate(FPR),縱座標爲true positive rate(TPR)。下圖中詳細說明了FPR和TPR是如何定義的。
在這裏插入圖片描述

接下來我們考慮ROC曲線圖中的四個點和一條線。第一個點,(0,1),即FPR=0, TPR=1,這意味着FN(false negative)=0,並且FP(false positive)=0。Wow,這是一個完美的分類器,它將所有的樣本都正確分類。第二個點,(1,0),即FPR=1,TPR=0,類似地分析可以發現這是一個最糟糕的分類器,因爲它成功避開了所有的正確答案。第三個點,(0,0),即FPR=TPR=0,即FP(false positive)=TP(true positive)=0,可以發現該分類器預測所有的樣本都爲負樣本(negative)。類似的,第四個點(1,1),分類器實際上預測所有的樣本都爲正樣本。經過以上的分析,我們可以斷言,ROC曲線越接近左上角,該分類器的性能越好。

下面考慮ROC曲線圖中的虛線y=x上的點。這條對角線上的點其實表示的是一個採用隨機猜測策略的分類器的結果,例如(0.5,0.5),表示該分類器隨機對於一半的樣本猜測其爲正樣本,另外一半的樣本爲負樣本。

如何畫ROC曲線

對於一個特定的分類器和測試數據集,顯然只能得到一個分類結果,即一組FPR和TPR結果,而要得到一個曲線,我們實際上需要一系列FPR和TPR的值,這又是如何得到的呢?我們先來看一下Wikipedia上對ROC曲線的定義:

In signal detection theory, a receiver operating characteristic (ROC), or simply ROC curve, is a graphical plot which illustrates the performance of a binary classifier system as its discrimination threshold is varied.

問題在於“as its discrimination threashold is varied”。如何理解這裏的“discrimination threashold”呢?我們忽略了分類器的一個重要功能“概率輸出”,即表示分類器認爲某個樣本具有多大的概率屬於正樣本(或負樣本)。通過更深入地瞭解各個分類器的內部機理,我們總能想辦法得到一種概率輸出。通常來說,是將一個實數範圍通過某個變換映射到(0,1)區間^3

假如我們已經得到了所有樣本的概率輸出(屬於正樣本的概率),現在的問題是如何改變“discrimination threashold”?我們根據每個測試樣本屬於正樣本的概率值從大到小排序。下圖是一個示例,圖中共有20個測試樣本,“Class”一欄表示每個測試樣本真正的標籤(p表示正樣本,n表示負樣本),“Score”表示每個測試樣本屬於正樣本的概率^4
在這裏插入圖片描述

接下來,我們從高到低,依次將“Score”值作爲閾值threshold,當測試樣本屬於正樣本的概率大於或等於這個threshold時,我們認爲它爲正樣本,否則爲負樣本。舉例來說,對於圖中的第4個樣本,其“Score”值爲0.6,那麼樣本1,2,3,4都被認爲是正樣本,因爲它們的“Score”值都大於等於0.6,而其他樣本則都認爲是負樣本。每次選取一個不同的threshold,我們就可以得到一組FPR和TPR,即ROC曲線上的一點。這樣一來,我們一共得到了20組FPR和TPR的值,將它們畫在ROC曲線的結果如下圖:
在這裏插入圖片描述

當我們將threshold設置爲1和0時,分別可以得到ROC曲線上的(0,0)和(1,1)兩個點。將這些(FPR,TPR)對連接起來,就得到了ROC曲線。當threshold取值越多,ROC曲線越平滑。

其實,我們並不一定要得到每個測試樣本是正樣本的概率值,只要得到這個分類器對該測試樣本的“評分值”即可(評分值並不一定在(0,1)區間)。評分越高,表示分類器越肯定地認爲這個測試樣本是正樣本,而且同時使用各個評分值作爲threshold。我認爲將評分值轉化爲概率更易於理解一些。

AUC值的計算

AUC(Area Under Curve)被定義爲ROC曲線下的面積,顯然這個面積的數值不會大於1。又由於ROC曲線一般都處於y=x這條直線的上方,所以AUC的取值範圍在0.5和1之間。使用AUC值作爲評價標準是因爲很多時候ROC曲線並不能清晰的說明哪個分類器的效果更好,而作爲一個數值,對應AUC更大的分類器效果更好。

在瞭解了ROC曲線的構造過程後,編寫代碼實現並不是一件困難的事情。相比自己編寫代碼,有時候閱讀其他人的代碼收穫更多,當然過程也更痛苦些。在此推薦scikit-learn中關於計算AUC的代碼

爲什麼使用ROC曲線

既然已經這麼多評價標準,爲什麼還要使用ROC和AUC呢?因爲ROC曲線有個很好的特性:當測試集中的正負樣本的分佈變化的時候,ROC曲線能夠保持不變。在實際的數據集中經常會出現類不平衡(class imbalance)現象,即負樣本比正樣本多很多(或者相反),而且測試數據中的正負樣本的分佈也可能隨着時間變化。下圖是ROC曲線和Precision-Recall曲線[^5]的對比:
在這裏插入圖片描述

在上圖中,(a)和(c)爲ROC曲線,(b)和(d)爲Precision-Recall曲線。(a)和(b)展示的是分類其在原始測試集(正負樣本分佈平衡)的結果,(c)和(d)是將測試集中負樣本的數量增加到原來的10倍後,分類器的結果。可以明顯的看出,ROC曲線基本保持原貌,而Precision-Recall曲線則變化較大。

說明,文中除了第一張圖來自Wikipedia外,其他的圖都來自論文(Fawcett, 2006)[^6]截圖.

[^5]: Davis, J., & Goadrich, M. (2006, June). The relationship between Precision-Recall and ROC curves. In Proceedings of the 23rd international conference on Machine learning (pp. 233-240). ACM.
[^6]: Fawcett, T. (2006). An introduction to ROC analysis. Pattern recognition letters, 27(8), 861-874.

引用及其他鏈接:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章