ROC曲線的繪制


假設現在有一個二分類問題,先引入兩個概念:

  • 真正例率(TPR):正例中預測為正例的比例
  • 假正例率(FPR):反例中預測為正例的比例

再假設樣本數為6,現在有一個分類器1,它對樣本的分類結果如下表(按預測值從大到小排序)

 

 

 

ROC曲線的橫軸為假正例率,縱軸為真正例率,范圍都是[0,1],現在我們開始畫圖——根據從大到小遍歷預測值,把當前的預測值當做閾值,計算FPR和TPR。

step1:選擇閾值最大,即為1,正例中和反例中都沒有預測值大於等於1的,所以FPR=TPR=0。

step2:根據上表,選擇閾值為0.9,正例中有1個樣本的預測值大於等於1,反例中有0個,所以,TPR=1/3,FPR=0。

step3:根據上表,選擇閾值為0.8,正例中有2個樣本的預測值大於等於1,反例中有0個,所以,TPR=2/3,FPR=0。

step4:根據上表,選擇閾值為0.7,正例中有3個樣本的預測值大於等於1,反例中有0個,所以,TPR=1,FPR=0。

step5:根據上表,選擇閾值為0.3,正例中有3個樣本的預測值大於等於1,反例中有1個,所以,TPR=1,FPR=1/3。

step6:根據上表,選擇閾值為0.2,正例中有3個樣本的預測值大於等於1,反例中有2個,所以,TPR=1,FPR=2/3。

step7:根據上表,選擇閾值為0.1,正例中有3個樣本的預測值大於等於1,反例中有3個,所以,TPR=1,FPR=1。

綜上,我們得到下表:

 

 

描點連線,畫出的圖是下面這樣什兒的

 

可以看出這個分類器還是很理想的。

假設現在又有一個分類器2,對同樣一組樣本,分類結果如下

 

 

 根據上面描述的方法,畫出ROC曲線如下

 

 

 

發現這個曲線的左上角比之前往右下角凹了一點。

emmmm,現在又來了一個分類器3,對同樣一組樣本,分類結果如下

 

 

 不多說,直接畫圖——

 

 

 

哎?這個曲線比之前更“凹”了。

實際上,不用畫出曲線,只是根據這3個分類器的分類結果,我們也能大概能分析出它們的性能:分類器1>分類器2>分類器3。

對分類器1的預測結果來說,所有的正例的預測值都在1這一側,所有反例的預測值都在0那一側,只要閾值取得合適,即閾值落在(0.3,0.7)內都可以。

再看分類器2的預測結果,出現了對反例的預測值(0.75)大於對正例的預測值了(0.7),所以不能選擇一個合適的閾值把這兩類完全分開,所以反映在圖上就是左上角凹了一點,但對大部分樣本還是可以正確分類的。

再看分類器3的預測結果,這種不穩定性就更明顯了,所以相比前兩個的ROC曲線,凹得就更多了。

從這個角度,也就不難得出,ROC下面的面積越大,分類器越好的結論了。當然還有嚴格的數學角度的分析,感興趣的,了解一下。

下面附上畫圖用的matlab代碼

clear;
clc;
% 分類器1
% label = [1,1,1,0,0,0];
% predict = [0.9,0.8,0.7,0.3,0.2,0.1];

% 分類器2
% label = [1,1,0,1,0,0];
% predict = [0.9,0.8,0.75,0.7,0.2,0.1];

% 分類器3
label = [1,0,0,1,1,0];
predict = [0.9,0.8,0.78,0.75,0.2,0.1];


TPR=[];
FPR=[];
numPositive = size(find(label==1),2);
numNegative = size(find(label==0),2);
postive = predict(find(label==1));
negative = predict(find(label==0));
for i=1:size(label,2)+1
    if i==1
        cur = 1;
    else
        cur = predict(i-1);
    end
    TPR(i) = size(find(postive>=cur),2)/numPositive;
    FPR(i) = size(find(negative>=cur),2)/numNegative;
end
plot(FPR,TPR,'k*-')
axis([0 1 0 1]);
xlabel('FPR')
ylabel('TPR')

  源自:https://segmentfault.com/a/1190000016735657


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM