ROC 曲線繪制
個人的淺顯理解:1.ROC曲線必須是針對連續值輸入的,通過選定不同的閾值而得到光滑而且連續的ROC曲線,故通常應用於Saliency算法評價中,因為可以選定0~255中任意的值進行閾值分割,從而得到ROC曲線;
2.對於圖像分割算法的評價不適合用ROC曲線進行評價,除非能夠得到連續值,而不是二值圖像;圖像分割算法適合采用准確率、召回率、F1指標的平均值進行評價。
3.針對已經分割好的二值圖像:分割出了一系列的分割二值圖,除非分割的結果足夠大,否則很難得到良好的ROC曲線,一般都是波動很大的,如下圖所示。
matlab中已經有現成的針對分類的ROC曲線繪制函數。
目前理解的並不透徹,以下資料可供進一步學習,記錄以備忘:
http://blog.sina.com.cn/s/blog_4cf8aad30100gt1g.html
http://www.ilovematlab.cn/thread-62962-1-1.html
http://blog.csdn.net/fuhpi/article/details/8813455
論文:The relationship between Precision-Recall and ROC curves.pdf
matlab中plotroc函數的用法說明:
ROC曲線是通用的分類器評價工具,matlab函數中自帶了繪制該曲線的函數plotroc。
plotroc函數的原型為:plotroc(targets, outputs)
其中參數targets是一個矩陣,代表測試集,每一列表示一個測試樣本的標簽
如果有兩類樣本,比如第1,2,5個樣本屬於第1類,第3,4,6個樣本屬於第2類....則targets應為:
1 1 0 0 1 0 ...
0 0 1 1 0 1 ...
如果只有一類樣本,包含了負樣本,則只要一行,用1表示正樣本,0表示負樣本即可,比如targets為:
1 0 1 1 0 0 0 0 1 ...
參數outputs也是一個矩陣,代表分類結果,同樣每一列表示一個測試樣本的分類結果
同樣如果有兩類樣本,則應有兩個分類器,每一列記錄了每個測試樣本在兩個分類器上的得分,此時outputs為:
0.8 0.85 0.2 0.75 0.21 ...
0.8 0.01 0.9 0.23 0.67 ...
如果只有一類,則outputs只有一行,如:
0.8 0.6 0.8 0.7 0.05 0.3 0.03 ...
注意,得分必須在[0, 1]的區間內,可以自己規約一下。
我們將相應的測試標簽targets和對應的分類得分outputs輸入plotroc中就可以繪制出相應的ROC曲線了。