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除以分類以後...