ROC曲線與AUC計算總結

2022-03-13 22:48:11 字數 3139 閱讀 9568

橫軸:負正類率(false postive rate, fpr),特異度,劃分例項中所有負例佔所有負例的比例;(1-specificity)

縱軸:真正類率(true postive rate, tpr),靈敏度,sensitivity(正類覆蓋率)

(1)若乙個例項是正類並且被**為正類,即為真正類(true postive ,tp)

(2)若乙個例項是正類,但是被**成為負類,即為假負類(false negative, fn)

(3)若乙個例項是負類,但是被**成為正類,即為假正類(false postive ,fp)

(4)若乙個例項是負類,但是被**成為負類,即為真負類(true negative ,tn)

混淆矩陣如下,1代表正類,0代表負類:

predict: 0

predict: 1

label: 0

tnfp

label: 1

fntp

由上表可得出橫,縱軸的計算公式:

(1)真正類率(true postive rate)tpr: tp/(tp+fn),代表分類器**的正類中實際正例項佔所有正例項的比例。sensitivity

(2)負正類率(false postive rate)fpr: fp/(fp+tn),代表分類器**的正類中實際負例項佔所有負例項的比例。1-specificity

(3)真負類率(true negative rate)tnr: tn/(fp+tn),代表分類器**的負類中實際負例項佔所有負例項的比例,tnr=1-fpr。specificity

假設採用邏輯回歸分類器,其給出針對每個例項為正類的概率,那麼通過設定乙個閾值如0.6,概率大於等於0.6的為正類,小於0.6的為負類。對應的就可以算出一組(fpr,tpr),在平面中得到對應座標點。隨著閾值的逐漸減小,越來越多的例項被劃分為正類,但是這些正類中同樣也摻雜著真正的負例項,即tpr和fpr會同時增大。閾值最大時,對應座標點為(0,0),閾值最小時,對應座標點(1,1)。

如下面這幅圖,(a)圖中實線為roc曲線,線上每個點對應乙個閾值。

橫軸fpr:1-tnr,1-specificity,fpr越大,**正類中實際負類越多。

縱軸tpr:sensitivity(正類覆蓋率),tpr越大,**正類中實際正類越多。

理想目標:tpr=1,fpr=0,即圖中(0,1)點,故roc曲線越靠攏(0,1)點,越偏離45度對角線越好,sensitivity、specificity越大效果越好。假設已經得出一系列樣本被劃分為正類的概率,然後按照從大到小排序,下圖是乙個示例,圖中共有20個測試樣本,「class」一欄表示每個測試樣本真正的標籤(p表示正樣本,n表示負樣本),「score」表示每個測試樣本屬於正樣本的概率。

首先統計出,一共含有10個正樣本、10個負樣本。 首先,以(0,0)為初始起點。

接下來,我們從高到低,依次將「score」值作為閾值threshold,當測試樣本屬於正樣本的概率大於或等於這個threshold時,我們認為它為正樣本,否則為負樣本。從第乙個樣本開始(標籤為positive正類),設該樣本的score值為閾值,則該樣本之後的樣本(還剩餘9個positive、10個negative)判為負樣本,計算得tpr=1/10=0.1,fpr=0/10=0.0,即roc曲線(0, 0.1)點;再選擇第二個樣本點(標籤為positive正類)的score作為閾值,大於等於該閾值的樣本(2個positive)判為正樣本,小於該閾值(還剩餘8個positive、10個negative)的判為負樣本,計算tpr=2/10=0.2,frp=0/10=0.0,可在roc圖畫出該點。

這樣一來,我們一共得到了20組fpr和tpr的值,將它們畫在roc曲線的結果如下圖:

我們可以大致推斷出,當新樣本真實分類為positive時候,階梯數值向上乙個單位((1/真實正樣本總數));當新樣本真實分類為negative時候,階梯水平向右移動乙個單位(1/真實負樣本總數)。

上面是將樣本的**score從大到小排列,從第乙個socre作為閾值,依次遍歷所有score。先得出全判負類時tpr,fpr的值,最後得出全判正類的tpr,fpr的值,畫roc曲線對應的先畫出(0,0)點,最後再畫出(1,1)點;

另外一種方法是,將樣本的**score從小到大排列,從第乙個socre作為閾值,依次遍歷所有score。先得出全判正類時tpr,fpr的值,最後得出全判負類的tpr,fpr的值,畫roc曲線對應的先畫出(1,1)點,最後再畫出(0,0)點。

auc作為數值可以直觀的評價分類器的好壞,值越大越好。

首先auc值是乙個概率值,當你隨機挑選乙個正樣本以及負樣本,當前的分類演算法根據計算得到的score值將這個正樣本排在負樣本前面的概率就是auc值,auc值越大,當前分類演算法越有可能將正樣本排在負樣本前面,從而能夠更好地分類。

直接調庫sklearn :from sklearn.metrics import roc_auc_score
from sklearn.metrics import roc_auc_score

改變型別為列表:

改變型別為pytorch張量:

ROC 曲線,以及AUC計算方式

roc曲線 roc曲線 接收者操作特徵 receiveroperating characteristic roc曲線上每個點反映著對同一訊號刺激的感受性。roc曲線的橫軸 負正類率 false postive rate fpr 特異度,劃分例項中所有負例佔所有負例的比例 1 specificity ...

python計算ROC曲線和面積AUC

roc曲線是根據一系列不同的二分類方式 分界值或決定閾 以真正率 也就是靈敏度 true positive rate,tpr 為縱座標,假正率 1 特效性 false positive rate,fpr 為橫座標繪製的曲線。通過將連續變數設定出多個不同的臨界值,從而計算出一系列敏感性和特異性,從而可...

ROC曲線和AUC面積

本博文所有理論都是基於二分類,多分類問題其實與二分類問題相通。考慮乙個二分問題,如果一類定為正類 positive 那麼另一類就是負類 negative 注意和正樣本和負樣本概念不同,參考博文 真正類 true positive 例項是正類並且也被 成正類 假正類 false positive 例項...