1. 程式人生 > >分類演算法中的ROC與PR指標

分類演算法中的ROC與PR指標

做過影象識別、機器學習或者資訊檢索相關研究的人都知道,論文的實驗部分都要和別人的演算法比一比。可怎麼比,人多嘴雜,我說我的方法好,你說你的方法好,各做各的總是不行——沒規矩不成方圓。於是慢慢的大家就形成了一種約定,用ROC曲線和PR曲線來衡量演算法的優劣。關於ROC曲線和PR曲線的詳細介紹可參考資料:

有這3份資料足以,應用分析和理論分析都講得很不錯。

基本概念

  1. True Positives,TP:預測為正樣本,實際也為正樣本的特徵數
  2. False Positives,FP:預測為正樣本,實際為負樣本的特徵數(錯預測為正樣本了,所以叫False)
  3. True Negatives,TN:預測為負樣本,實際也為負樣本的特徵數
  4. False Negatives,FN:預測為負樣本,實際為正樣本的特徵數(錯預測為負樣本了,所以叫False)

接著往下做做小學的計算題:

  • TP+FP+FN+FN:特徵總數(樣本總數)
  • TP+FN:實際正樣本數
  • FP+TN:實際負樣本數
  • TP+FP:預測結果為正樣本的總數
  • TN+FN:預測結果為負樣本的總數

有些繞,為做區分,可以這樣記:相同的字尾(P或N)之和表示__預測__正樣本/負樣本總數,字首加入T和F;實際樣本總數的4個字母完全不同,含TP(正正得正)表示實際正樣本,含FP(負正得負)表示實際負樣本。

ROC曲線和PR曲線

True Positive Rate(TPR)和False Positive Rate(FPR)分別構成ROC曲線的y軸和x軸。

  1. TPR=TP/(TP+FN),實際正樣本中被預測正確的概率
  2. FPR=FP/(FP+TN),實際負樣本中被錯誤預測為正樣本的概率

實際學習演算法中,預測率100%的話,TPR=100%和FPR=0,所以TPR越大而FPR越小越好。僅用其中一個作為衡量指標可以嗎?考慮這麼一種情況,一幅圖片假如600x480個畫素,其中目標(正樣本)僅有100個畫素,假如有某種演算法,預測的目標為包含所有畫素600x480,這種情況下TPR的結果是TPR=100%,但FPR卻也接近於100%。明顯,TPR滿足要求但結果卻不是我們想要的,因為FPR太高了。

Precision和Recall(有人中文翻譯成召回率)則分別構成了PR曲線的y軸和x軸。

  1. Precision=TP/(TP+FP),預測結果為有多少正樣本是預測正確了的
  2. Recall=TP/(TP+FN),召回率很有意思,這個其實就=TPR,相對於Precision只不過參考樣本從預測總正樣本數結果變成了實際總正樣本數。

同理,Precision和Recall同時考慮才能確定演算法好壞。好了,原來一切盡在盡在下圖中,

圖:Confusion Matrix

圖:Confusion Matrix

既然ROC和PR都是同時要考慮兩個指標,一個我好一個你好,到底誰好?畫到ROC空間一看便知,如下圖,將TPR和FPR分別畫在兩個座標軸上,則沿著對角線的方向,離右上角越近,演算法效果越好。(由於ROC和PR類似,以下僅討論ROC空間和ROC曲線。)

圖:ROC空間

圖:ROC空間

一個分類演算法,找個最優的分類效果,對應到ROC空間中的一個點。通常分類器的輸出都是Score,比如SVM、神經網路,有如下的預測結果:

TABLE 一般分類器的結果都是Score表
no.TrueHypScore
1pY0.99999
2pY0.99999
3pY0.99993
4pY0.99986
5pY0.99964
6pY0.99955
7nY0.68139
8nY0.50961
9nN0.48880
10nN0.44951

True表示實際樣本屬性,Hyp表示預測結果樣本屬性,第4列即是Score,Hyp的結果通常是設定一個閾值,比如上表就是0.5,Score>0.5為正樣本,小於0.5為負樣本,這樣只能算出一個ROC值,為更綜合的評價演算法的效果,通過取不同的閾值,得到多個ROC空間的值,將這些值描繪出ROC空間的曲線,即為ROC曲線。

圖:ROC曲線繪製

圖:ROC曲線繪製

我們只要明白這個基本的點,詳細的ROC曲線繪製已經有很多程式碼了,資料1就提供了Prel直接根據Score繪製ROC曲線的程式碼,Matlab也有,下載連結:

有了ROC曲線,更加具有參考意義的評價指標就有了,在ROC空間,演算法繪製的ROC曲線越凸向西北方向效果越好,有時不同分類演算法的ROC曲線存在交叉,因此很多文章裡用AUC(即Area Under Curve曲線下的面積)值作為演算法好壞的評判標準。關於這裡的凸理論可參考文章開頭的[資料2]。

與ROC曲線左上凸不同的是,PR曲線是右上凸效果越好,下面是兩種曲線凸向的簡單比較:

圖:演算法在ROC空間與PR空間的不同比較

圖:演算法在ROC空間與PR空間的不同比較

作為衡量指標,選擇ROC或PR都是可以的。但是資料3顯示,ROC和PR雖然具有相同的出發點,但並不一定能得到相同的結論,在寫論文的時候也只能參考著別人已有的進行選擇了。