分类算法中的ROC与PR指标
本文轉自:http://blog.csdn.net/xiahouzuoxin/article/details/43165253
做過圖像識別、機器學習或者信息檢索相關研究的人都知道,論文的實驗部分都要和別人的算法比一比。可怎么比,人多嘴雜,我說我的方法好,你說你的方法好,各做各的總是不行——沒規矩不成方圓。于是慢慢的大家就形成了一種約定,用ROC曲線和PR曲線來衡量算法的優劣。關于ROC曲線和PR曲線的詳細介紹可參考資料:
有這3份資料足以,應用分析和理論分析都講得很不錯。
基本概念
接著往下做做小學的計算題:
- 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軸。
實際學習算法中,預測率100%的話,TPR=100%和FPR=0,所以TPR越大而FPR越小越好。僅用其中一個作為衡量指標可以嗎?考慮這么一種情況,一幅圖片假如600x480個像素,其中目標(正樣本)僅有100個像素,假如有某種算法,預測的目標為包含所有像素600x480,這種情況下TPR的結果是TPR=100%,但FPR卻也接近于100%。明顯,TPR滿足要求但結果卻不是我們想要的,因為FPR太高了。
Precision和Recall(有人中文翻譯成召回率)則分別構成了PR曲線的y軸和x軸。
同理,Precision和Recall同時考慮才能確定算法好壞。好了,原來一切盡在盡在下圖中,
圖:Confusion Matrix
既然ROC和PR都是同時要考慮兩個指標,一個我好一個你好,到底誰好?畫到ROC空間一看便知,如下圖,將TPR和FPR分別畫在兩個坐標軸上,則沿著對角線的方向,離右上角越近,算法效果越好。(由于ROC和PR類似,以下僅討論ROC空間和ROC曲線。)
圖:ROC空間
一個分類算法,找個最優的分類效果,對應到ROC空間中的一個點。通常分類器的輸出都是Score,比如SVM、神經網絡,有如下的預測結果:
| 1 | p | Y | 0.99999 |
| 2 | p | Y | 0.99999 |
| 3 | p | Y | 0.99993 |
| 4 | p | Y | 0.99986 |
| 5 | p | Y | 0.99964 |
| 6 | p | Y | 0.99955 |
| 7 | n | Y | 0.68139 |
| 8 | n | Y | 0.50961 |
| 9 | n | N | 0.48880 |
| 10 | n | N | 0.44951 |
True表示實際樣本屬性,Hyp表示預測結果樣本屬性,第4列即是Score,Hyp的結果通常是設定一個閾值,比如上表就是0.5,Score>0.5為正樣本,小于0.5為負樣本,這樣只能算出一個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都是可以的。但是資料3顯示,ROC和PR雖然具有相同的出發點,但并不一定能得到相同的結論,在寫論文的時候也只能參考著別人已有的進行選擇了。
R2 評價指標
準確測量機器學習模型的誤差
Accurately Measuring Model Prediction Error
總結
以上是生活随笔為你收集整理的分类算法中的ROC与PR指标的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: stm32的RCC系统时钟配置 以及RC
- 下一篇: 用TTL线在CFE环境下拯救半砖wrt5