auc是怎麼計算的?

1 roc曲線計算auc

我們都知道auc是roc曲線下的面積,但這種計算不方便

 

2 公式計算auc

有另外一種計算方法:

任意給一個正類樣本和一個負類樣本,正類樣本的score大於負類樣本的score的概率

公式如下

M 是正樣本的個數,N是副樣本的個數

rank_i值得是第i個樣本的序號。對所有的預測樣本的score進行從小到大的排序,然後從1進行標號。

原始樣本 y_{1, +} y_{2, +} y_{3, -} y_{4, -} y_{5, -}
模型打分 0.8 0.5 0.6 0.3 0.4
按分數排序 y_{1, +} y_{3, -} y_{2, +} y_{5, -} y_{4, -}
分數 0.8 0.6 0.5 0.4 0.3
排序rank 5 4 3 2 1

 

對於公式的分母:正樣本排在負樣本的情況,一共有M*N種

分子的左邊一項,是正樣本的序號之和

對於分子右邊一項 \frac{M(M+1)}{2},M是正樣本的個數,這個公式也是首項爲1,末項爲M, 公差爲1的等差數列的求和公式,它的序列爲

1, 2, 3, 。。。M

討論一下這個序列是怎麼來的?

用一種特殊的情況來說明

假設模型是完美的,正樣本都排在前面,負樣本都排在後面

那麼此時的auc應該爲1

原始樣本 y_{1, +} y_{2, +} y_{3, -} y_{4, -} y_{5, -}
模型打分 0.9 0.8 0.5 0.4 0.3
序號 5 4 3 2 1

對於分母,正樣本排在負樣本是2*3=6,那麼對於這種特殊情況,分子也應該爲6

對於分子左邊,兩個正樣本的序號5 + 4 = 9,明顯大於6,那麼多出來的3,是怎麼計算的?

  1. 對於正樣本y_{2,+},後面有三個負樣本,正樣本大於負樣本的組合有3種情況(y2, y3), (y2, y4),(y2,y5),應該是3;但是如果是按序號算的話,是4,也就是說比3多了1個
  2. 同樣,對於正樣本y_{2,+},正樣本大於負樣本的組合有3種情況(y1, y3), (y1, y4),(y1,y5),應該是3;但是如果是按序號算的話,是5,也就是說比3多了2個
  3. 這樣多出的情況就是一個序列 1, 2
  4. 這個序列的最大值,就是正樣本的個數M
  5. 對於這個序列的求解就是用等差數列的求和公式,也就是分子的右邊一項
  6. 因爲是多出的,所以用了減號

按照這種思路,就是解釋了分子,當然這是一種特殊情況的解釋,這種情況比較容易理解。

3 採樣會影響auc嗎?

直接給出答案,不會的

這種情況下要用roc曲線下的面積來解釋採樣對auc沒有影響

幾個指標:

  1. TPR: TP/(TP+FN)
  2. FPR: FP/(FP+TN)
  3. recall: TP/(TP+FN)
  4. precision: TP/(TP+FP)
  5. accuracy: (TP+TN)/(TP+FP+FN+TN)

會受採樣影響的指標accuracy,precision

對於precision: TP/(TP+FP),假如對負樣本進行了下采樣,TP不會變,FP會變(因爲負樣本減少了),所以採樣對precision有影響

對於影響auc兩個引子TPR, FPR

TPR: TP/(TP+FN),TP, FN都來源於實際樣本的正標籤,如果是下采樣,其值自然不變,如果是真樣本隨機採樣,TP, FN也是同等變化,其比例不會變

FPR: FP/(FP+TN) 都是來源於實際樣本的負標籤,採樣的話,比例不會變

假如負樣本變爲原來的1/2,由於是隨機採樣,FP, TN也是變爲原來的1/2,所以 FP/(FP+TN) = 0.5*FP/(0.5*FP+0.5*TN),其比值不變

下面是論文的解釋

論文作者進行了實驗

圖a 樣本1:1,圖c 樣本1:10,其roc曲線不變,所以auc不變

但是圖b,d的precision-recall曲線就變了。

作者給出的方法是,只要指標計算是在同一行或同一列,其值就不會變,要是跨行或跨列,其值就會變,像accuracy

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章