天天看點

評價名額AUC和曲線ROC了解

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也可以分别叫做陰性和陽性。當我們用一個分類器進行機率的預測的時候,就有四種可能性:

評價名額AUC和曲線ROC了解

真陽性率=(真陽性的數量)/(真陽性的數量+僞陰性的數量)

僞陽性率=(僞陽性的數量)/(僞陽性的數量+真陰性的數量)

這裡我們需要標明門檻值才能把機率轉化為類别,標明不同的門檻值會得到不同的結果。一旦确定了類别,我們就可以計算相對應的真、僞陽性率。當我們把所有的計算得到的真、僞陽性率連起來,就能畫出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)
           

繼續閱讀