AUC 理解


 

AUC(Area under curve)是機器學習常用的二分類評測手段,直接含義是ROC曲線下的面積, 對於二分類模型,還有很多其他評價指標,比如 logloss,accuracy,precision。如果你經常關注數據挖掘比賽,比如 kaggle,那你會發現 AUC 和 logloss 基本是最常見的模型評價指標。

 

從AUC 判斷分類器(預測模型)優劣的標准:
  • AUC = 1,是完美分類器;
  • AUC = [0.85, 0.95], 效果很好;
  • AUC = [0.7, 0.85], 效果一般;
  • AUC = [0.5, 0.7], 效果較低,但用於預測股票已經很不錯了;
  • AUC = 0.5,跟隨機猜測一樣(例:丟銅板),模型沒有預測價值;
  • AUC < 0.5,比隨機猜測還差。

 

為什么 AUC 和 logloss 比 accuracy 更常用呢?

因為很多機器學習的模型對分類問題的預測結果都是概率,如果要計算 accuracy,需要先把概率轉化成類別,這就需要手動設置一個閾值,如果對一個樣本的預測概率高於這個預測,就把這個樣本放進一個類別里面,低於這個閾值,放進另一個類別里面。
所以這個閾值很大程度上影響了 accuracy 的計算。使用 AUC 或者 logloss 可以避免把預測概率轉換成類別。

如何計算

ROC曲線下面積:

 

 

橫坐標正是 FPR (False Positive Rate),縱坐標是 TPR (True Positive Rate),計算公式: 

(梯形面積計算:上底+下底的合 * 高 /2,例如上圖中的某個i下對應的面積)

 

由此引出True Positive Rate(真陽率)、False Positive(偽陽率)兩個概念:

  • TPRate的意義是所有真實類別為1的樣本中,預測類別為1的比例。
  • FPRate的意義是所有真實類別為0的樣本中,預測類別為1的比例。

[公式]

[公式]

 

相關指標:

實際1,預測1:真正類(tp)
實際1,預測0:假負類(fn)
實際0,預測1:假正類(fp)
實際0,預測0:真負類(tn)
真實負樣本總數=n=fp+tn
真實正樣本總數=p=tp+fn

 

概率角度:

AUC 考慮的是樣本的排序質量,它與排序誤差有密切關系,在此,AUC可以在一定程度上理解為正樣本排在負樣本前面的概率,可得到計算公式:

其中,rank 為樣本排序位置從 1 開始,∣P∣ 為正樣本數,∣N∣ 為負樣本數。

 

對該公式的解釋:

舉個例子:這里,我們將所有樣本得到的值從小到大排列(這個不必特別強調升序降序,主要看rank怎么定義==> 小的probs具有小的rank值),rank我們定義為樣本在這個排序序列中的index。

 

probs rank label
0.1 1 0
0.2 2 0
0.5 3 0
0.6 4 1
0.7 5 0
0.8 6

1

0.9 7 1

這里,probs為預測得到的概率,P(正例個數,即原本label=1的樣本個數) 為3,N(負例個數,即原本label=0的樣本個數)為4

我們要求的是AUC正例的rank比負例的rank大的概率,即P(rank正>rank負)。對於P個正例、N個負例,共有P*N(12)對(正例,負例)的組合對,我們要求AUC,需要求的是在所有組合對中,Rank正例大於Rank負例的比例是多少

我們看上表標紅的正例:

對於rank為7的正例,共有rank-P個 rank正大於rank負的組合對:

rank7: (7, 7) (7,6) (7,5) (7,4) (7,3) (7,2) (7,1)    : rank7 - P = 4

以此類推:

rank6:rank6-P+1 = 6-3+1 = 4

rank4:rank4-P+2 = 4-3+2 = 3

最后求得AUC = 正例rank大於負例的組合對/所有組合對 = 4 + 4 + 3 / 12 = 0.9167

觀察可得,我們把ranki的部分加和加和就得到了公式中的,把后面減去的1, 2.....P(等差數列)加和就得到了公式中的

 

 

AUC的優點

它不受類別不平衡問題的影響,不同的樣本比例不會影響AUC的評測結果。

 

  • 例如在反欺詐場景,設欺詐類樣本為正例,正例占比很少(假設0.1%),如果使用准確率評估,把所有的樣本預測為負例,便可以獲得99.9%的准確率
  • 但是如果使用AUC,把所有樣本預測為負例,TPRate和FPRate同時為0(沒有Positive),(0,0) 與 (1,1)連接,得出AUC僅為0.5,成功規避了樣本不均勻帶來的問題。

在訓練時,可以直接使用AUC作為損失函數。

AUC指標本身和模型預測 score 絕對值無關,只關注排序效果,因此特別適合排序業務。

 

在python中,可直接調用sklearn中計算auc的方法~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM