真陽率 tp 假陽率 np

2021-07-13 20:26:24 字數 1667 閱讀 3546

很早以前就知道這些概念了,不過由於跟自己的認知習慣不一樣,所以碰到了還是經常會忘。於是索性把這些概念總結一下,以後再忘了也好找(其他的文章太囉嗦了,計算方法也寫的不清不楚….) 

另外我也會陸續更新一些其他的機器學習相關概念和指標,即是方便自己,也方便他人吧。

注意:本文將混用正負樣本和陽性(+)陰性(-)這兩套說法

真陽率(true positive rate, tpr)就是:  真

陽率=a

a+c

含義是檢測出來的真陽性樣本數除以所有真實陽性樣本數。

假陽率(false positive rate, fpr)就是:  假

陽率=b

b+d

含義是檢測出來的假陽性樣本數除以所有真實陰性樣本數。

很簡單,就是把假陽率當x軸,真陽率當y軸畫乙個二維平面直角座標系。然後不斷調整檢測方法(或機器學習中的分類器)的閾值,即最終得分高於某個值就是陽性,反之就是陰性,得到不同的真陽率和假陽率數值,然後描點。就可以得到一條roc曲線。 

需要注意的是,roc曲線必定起於(0,0),止於(1,1)。因為,當全都判斷為陰性(-)時,就是(0,0);全部判斷為陽性(+)時就是(1,1)。這兩點間斜率為1的線段表示隨機分類器(對真實的正負樣本沒有區分能力)。所以一般分類器需要在這條線上方。

畫出來大概是長下面這樣**自這裡): 

顧名思義,就是這條roc曲線下方的面積了。越接近1表示分類器越好。 

但是,直接計算auc很麻煩,但由於其跟wilcoxon-mann-witney test等價,所以可以用這個測試的方法來計算auc。wilcoxon-mann-witney test指的是,任意給乙個正類樣本和乙個負類樣本,正類樣本的score有多大的概率大於負類樣本的score(score指分類器的打分)。

方案一: 

我們可以對於總樣本中的m個正樣本和n個負樣本,組成m×

n 個pair,如果某個pair正樣本score大於負樣本,則記1分,反之記0分,相等記0.5分。然後總分除以m×

n 就是auc的值了。複雜度o(

m×n)

方案二: 

基本思想一樣,不過複雜度可以縮減到o(

(m+n

)log

(m+n

))。 

首先,我們將所有樣本得分從大到小排序,則排名最高的樣本rank為m+n,第二的為m+n-1,以此類推。然後我們將所有正樣本的rank加和,其思想為:排名k的正樣本至多比k-1個負樣本的score要大。當我們將正樣本的rank加和後,再減去(1

+m)m

/2,即正樣本的個數,就是正樣本score比負樣本score大的pair個數。再除以o(

m×n)

就是auc的值了,公式如下:  a

uc=∑

i∈po

siti

vera

nki−

(1+m

)m2m

×n

注意:對score相等的樣本,需要賦予相同的rank(無論這個相等的score是出現在同類樣本還是不同類的樣本之間,都需要這樣處理)。具體操作就是把所有這些score相等的樣本的rank取平均。然後再使用上述公式。比如score為0.8的有兩個樣本,rank為7和8,則其最終代入公式的rank為7.5