ROC曲線及其matlab實現ROC曲線的繪畫

2021-07-26 19:41:55 字數 2386 閱讀 5298

roc曲線(receiver operating characteristic curve)是利用classification模型真正率(true positive rate)和假正率(false positive rate)作為座標軸,圖形化表示分類方法的準確率的高低。

roc圖的一些概念定義::

真正(true positive , tp

)被模型**為正的正樣本

假負(false negative , fn

)被模型**為負的正樣本

假正(false positive , fp

)被模型**為正的負樣本

真負(true negative , tn

)被模型**為負的負樣本

真正率(

tpr)

tpr = tp /

(tp + fn

)正樣本**結果數

/ 正樣本實際數

。在roc曲線中,tpr

作為y軸

假正率(fpr

)fpr = fp /

(fp + tn

)被**為正的負樣本結果數

/負樣本實際數

。在roc曲線中,fpr作為x軸

關於roc曲線的相關概念的解釋,請參閱cowboy_wz的部落格roc曲線:

我在此主要做的事情是畫出roc曲線工程實現方面的一些解釋。我們設計乙個函式,此函式需要有乙個模型**值predict和資料標籤值ground_truth作為輸入引數。分為幾步進行實現。

(1)統計資料標籤值ground_truth(及y)中分類為0和分類為1的資料數目:

pos_num=sum(ground_truth==1);neg_num=sum(ground_truth);

(2)對利用模型求出的**值predict由低到高進行排序;對應資料原來所在位置進行索引記錄,用於重新排序ground_truth.利用函式sort實現,sort詳情請檢視help文件:

[pre,index]=sort(predict); ground_truth=ground_truth(index);

(3)對ground_truth和predict遍歷i=1:n,n是測試集數目。其目的是隨著predict中概率的增加,隨著增加判斷正負樣本的閾值;也就是說取遍歷到的predict值為閾值,大於閾值的假設**為正樣本(閾值右邊),小於閾值的假設**為負樣本(閾值左邊)。

所以同時我們可得到真正tp 和假正fp值:tp=sum(ground_truth(i:n)==1);fp=sum(ground_truth(i:n)==0);

這時我們就可以求取tpr 和fpr了:tpr=tp/pos_num;  fpr=fp/neg_num;   把求取到的值儲存起來(x(i),y(i)),因為這就是我們要在圖上畫的點。

(4)返回曲線與座標軸間的面積auc。我們的目的是測量資料的準確率,這個面積就是乙個量度,auc越大,準確率越高。

auc=auc+(y(i)+y(i-1))*(x(i-1)-x(i))/2;

實現roc曲線的**如下:

%  predict       - 分類器對測試集的分類結果

%  ground_truth - 測試集的正確標籤,這裡只考慮二分類,即0和1

%  auc            - 返回roc曲線的曲線下的面積

function auc = plot_roc( predict, ground_truth )

%初始點為(1.0, 1.0)

%計算出ground_truth中正樣本的數目pos_num和負樣本的數目neg_num

pos_num = sum(ground_truth==1);

neg_num = sum(ground_truth==0);

m=size(ground_truth,1);

[pre,index]=sort(predict);

ground_truth=ground_truth(index);

x=zeros(m+1,1);

y=zeros(m+1,1);

auc=0;

x(1)=1;y(1)=1;

for i=2:m

tp=sum(ground_truth(i:m)==1);fp=sum(ground_truth(i:m)==0);

x(i)=fp/neg_num;

y(i)=tp/pos_num;

auc=auc+(y(i)+y(i-1))*(x(i-1)-x(i))/2;

end;

x(m+1)=0;y(m+1)=0;

auc=auc+y(m)*x(m)/2;

plot(x,y);

end具體實現結果:

MATLAB中繪製ROC曲線

我們通常使用roc曲線來評價分類結果的好壞,在matlab中繪製該曲線其實也十分容易。我們讓label 表示真實的類別,output 表示 的類別,那麼呼叫 xrf,yrf,trf,aucrf perfcurve label,output,1 之後執行 plot xrf,yrf 即可得到roc曲線,...

ROC曲線 PR曲線

在 的結果分析中,roc和pr曲線是經常用到的兩個有力的展示圖。1.roc曲線 roc曲線 receiver operating characteristic 是一種對於靈敏度進行描述的功能影象。roc曲線可以通過描述真陽性率 tpr 和假陽性率 fpr 來實現。由於是通過比較兩個操作特徵 tpr和...

ROC閾值曲線

本文主要介紹乙個評價分類器穩定性的指標 roc閾值曲線。對於乙個已知的二分類結果 假設一共正,負兩個類別 可以把結果的資料分成以下4類 a原來的正類被分為正類,b原來的正類被分為負類,c原來的負類被分為正類,d原來的負類被分為負類。我們把a除以分類後的正類的數量稱作真陽性率 trp 把c除以分類以後...