AUC是一個模型評價名額,用于二分類模型的評價,對于二分類模型,還有很多其他評價名額,比如logloss,accuracy,precision。實際中,AUC和logloss比accuracy更常用,這是因為很多機器學習模型對分類問題的預測結果都是機率,而如果要計算accuracy,需要先把機率轉換成類别,這裡就需要手動設定一個門檻值,機率高于門檻值放到一個類别,低于的話就放到另一個類别裡,那麼這個門檻值就很大程式上影響了accuracy的計算效果,使用AUC和logloss能避免門檻值帶來的影響。
AUC是Area under curve的首字母縮寫,字面上的意思是曲線下的面積,那麼這個曲線是什麼呢?這個曲線是ROC曲線,ROC曲線是統計學裡面的機率。
ROC曲線是由樣本的真實類别和預測機率計算出來的,具體來說,ROC曲線的x軸是僞陽性率(false positive rate),y軸是真陽性率(true positive rate)。對于二分類問題,一個樣本的類别隻有兩種,我們用0,1來表示,0和1也可以分别叫做陰性和陽性。當我們用一個分類器進行機率的預測的時候,就有四種可能性:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX90zZOhXQq1kcshVWwBnMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DNxITNwMDMwITNycDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
真陽性率=(真陽性的數量)/(真陽性的數量+僞陰性的數量)
僞陽性率=(僞陽性的數量)/(僞陽性的數量+真陰性的數量)
這裡我們需要標明門檻值才能把機率轉化為類别,標明不同的門檻值會得到不同的結果。一旦确定了類别,我們就可以計算相對應的真、僞陽性率。當我們把所有的計算得到的真、僞陽性率連起來,就能畫出ROC曲線,那麼即可得到ROC曲線下面的面積值,也即AUC值。
以上是AUC的定義和計算公式,但它有什麼意義呢?
舉個實際的例子,對于0-1二分類樣本,從中随機選取一個樣本,實際為1預測為1的概況設為p1,實際為0預測為1的機率設為p0,AUC就是指p1>p0的機率。
另外AUC對樣本類别是否均衡并不敏感,是以不均衡樣本通常用AUC評價分類器性能。
Python裡面計算AUC的代碼:
from sklearn import metrics
def aucfun(act,pred):
fpr,tpr,thresholds=metrics.roc_curve(act,pred,pos_label=)
return metrics.auc(fpr,tpr)