文章作者:Tyan
博客:noahsnail.com ?|? CSDN ?|? 簡書
1. 基本概念
1.1 ROC與AUC
ROC曲線和AUC常被用來評價一個二值分類器(binary classifier)的優劣,ROC曲線稱為受試者工作特征曲線 (receiver operating characteristic curve,簡稱ROC曲線),又稱為感受性曲線(sensitivity curve),AUC(Area Under Curve)是ROC曲線下的面積。在計算ROC曲線之前,首先要了解一些基本概念。在二元分類模型的預測結果有四種,以判斷人是否有病為例:
- 真陽性(TP):診斷為有,實際上也有病。
- 偽陽性(FP):診斷為有,實際卻沒有病。
- 真陰性(TN):診斷為沒有,實際上也沒有病。
- 偽陰性(FN):診斷為沒有,實際卻有病。
其關系如下圖所示:
ROC空間將偽陽性率(FPR)定義為X軸,真陽性率(TPR)定義為Y軸。TPR:在所有實際為陽性的樣本中,被正確地判斷為陽性之比率, 。FPR:在所有實際為陰性的樣本中,被錯誤地判斷為陽性之比率,
。
1.2 Precision、Recall與F1
對于二分類問題另一個常用的評價指標是精確率(precision)與召回率(recall)以及F1值。精確率表示在預測為陽性的樣本中,真正有陽性的樣本所占的比例。精確率的定義為。召回率表示所有真正呈陽性的樣本中,預測為陽性所占的比例。召回率的定義為
,F1值是精確率和召回率的調和均值,公式為
。精確率和召回率都高時,F1值也會高。通常情況下,Precision與Recall是相互矛盾的。
2. 曲線介紹
2.1 ROC曲線
ROC曲線坐標系如下圖所示,虛線為隨機猜測的概率,即猜對跟猜錯的概率是一樣的。理想情況下,我們是希望FPR為0,沒有一個假陽性,TPR為1,即全為真陽性,此時所有樣本都被正確分類,點位于左上角(0,1)位置處,沒有一個分錯的數據,這是最完美的情況,實際情況中基本不可能。如果點位于虛線下方,例如C點,說明分類錯誤的多,分類正確的少,此時不是我們想要的。如果點位于虛線上方,例如點,說明分類錯誤的少,分類正確的多,此時是我們想要的,因此我們希望ROC曲線盡可能的靠近左上角。對于一個特定的分類器和測試數據集,只能得到一個分類結果,即ROC曲線坐標系中的一點,那么如何得到一條ROC曲線呢?分類問題中我們經常會得到某個樣本是正樣本的概率,根據概率值與閾值的比較來判斷某個樣本是否是正樣本。在不同的閾值下可以得到不同的TPR和FPR值,即可以得到一系列的點,將它們在圖中繪制出來,并依次連接起來就得到了ROC曲線,閾值取值越多,ROC曲線越平滑。
AUC為ROC曲線下的面積,它的面積不會大于1,由于ROC曲線一般都處于直線y=x的上方,因此AUC的取值范圍通常在(0.5,1)之間。由于ROC曲線不能很好的看出分類器模型的好壞,因此采用AUC值來進行分類器模型的評估與比較。通常AUC值越大,分類器性能越好。
在基本概念中我們提到了精確率、召回率以及F1值,既然有它們作為二分類的評價指標,為什么還要使用ROC和AUC呢?這是因為ROC曲線有個很好的特性:當測試集中的正負樣本分布發生變化時,即正負樣本數量相差較大時,ROC曲線仍能保持不變。實際數據集中經常會出現樣本數量不平衡現象,并且測試數據中的正負樣本的分布也可能隨著時間發生變化。下圖是兩個分類器模型(算法)的ROC曲線比較圖:
2.2 P-R曲線
在P-R曲線中,Recall為橫坐標,Precision為縱坐標。在ROC曲線中曲線越凸向左上角約好,在P-R曲線中,曲線越凸向右上角越好。P-R曲線判斷模型的好壞要根據具體情況具體分析,有的項目要求召回率較高、有的項目要求精確率較高。P-R曲線的繪制跟ROC曲線的繪制是一樣的,在不同的閾值下得到不同的Precision、Recall,得到一系列的點,將它們在P-R圖中繪制出來,并依次連接起來就得到了P-R圖。兩個分類器模型(算法)P-R曲線比較的一個例子如下圖所示:
2.3 ROC與P-R對比
從公式計算中可以看出,ROC曲線中真陽性率TPR的計算公式與P-R曲線中的召回率Recall計算公式是一樣的,即二者是同一個東西在不同環境下的不同叫法。當正負樣本差距不大的情況下,ROC曲線和P-R的趨勢是差不多的,但是當負樣本很多的時候,ROC曲線效果依然較好,但是P-R曲線效果一般。