在機器學習的分類任務中,我們常用許多的指標,諸如召回率(recall)、準確率(precision)、f1值、auc等。
相信這個問題很多玩家都已經明白了,簡單的概括一下,auc(are under curve)是乙個模型的評價指標,用於分類任務。
那麼這個指標代表什麼呢?這個指標想表達的含義,簡單來說其實就是隨機抽出一對樣本(乙個正樣本,乙個負樣本),然後用訓練得到的分類器來對這兩個樣本進行**,**得到正樣本的概率大於負樣本概率的概率。
auc如何理解?
計算auc時,推薦2個方法。
方法一:
在有m個正樣本,n個負樣本的資料集裡。一共有m*n對樣本(一對樣本即,乙個正樣本與乙個負樣本)。統計這m*n對樣本裡,正樣本的**概率大於負樣本的**概率的個數。
這樣說可能有點抽象,我舉乙個例子便能夠明白。
idlabel
proa
00.1b0
0.4c
10.35d1
0.8
假設有4條樣本。2個正樣本,2個負樣本,那麼m*n=4。即總共有4個樣本對。分別是:
(d,b),(d,a),(c,b),(c,a)。
在(d,b)樣本對中,正樣本d**的概率大於負樣本b**的概率(也就是d的得分比b高),記為1
同理,對於(c,b)。正樣本c**的概率小於負樣本c**的概率,記為0.
最後可以算得,總共有3個符合正樣本得分高於負樣本得分,故最後的auc為
在這個案例裡,沒有出現得分一致的情況,假如出現得分一致的時候,例如:
idlabel
proa
00.1b0
0.4c
10.4d1
0.8
同樣本是4個樣本對,對於樣本對(c,b)其i值為0.5。
最後的auc為
方法二:
另外乙個方法就是利用下面的公式:
這個公式看起來有點嚇人,首先解釋一下每乙個符號的意思:
公式的含義見:
公式解釋
同樣本地,我們用上面的例子。
idlabel
proa
00.1b0
0.4c
10.35d1
0.8 將這個例子排序。按概率排序後得到:
idlabel
proranka0
0.11c1
0.352b
00.43d
10.84
按照上面的公式,只把正樣本的序號加起來也就是只把樣本c,d的rank值加起來後減去乙個常數項
即:
這個時候,我們有個問題,假如出現得分一致的情況怎麼辦?下面舉乙個例子說明:
idlabel
proa
10.8b1
0.7c
00.5d0
0.5e
10.5f1
0.5g
00.3
在這個例子中,我們有4個取值概率為0.5,而且既有正樣本也有負樣本的情況。計算的時候,其實原則就是相等得分的rank取平均值。具體來說如下:
先排序:
idlabel
prorankg0
0.31f1
0.52e1
0.53d0
0.54c0
0.55b1
0.76a1
0.87
這裡需要注意的是:相等概率得分的樣本,無論正負,誰在前,誰在後無所謂。
由於只考慮正樣本的rank值:
對於正樣本a,其rank值為7
對於正樣本b,其rank值為6
對於正樣本e,其rank值為(5+4+3+2)/4
對於正樣本f,其rank值為(5+4+3+2)/4
最後我們得到:
為了方便,我們使用sk-learn裡面自帶的庫來簡單的驗證一下我們的例子。
其python的**
import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([1,1,0,0,1,1,0])
y_scores = np.array([0.8,0.7,0.5,0.5,0.5,0.5,0.3])
print "y_true is ",y_true
print "y_scores is ",y_scores
print "auc is",roc_auc_score(y_true, y_scores)
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
print "y_true is ",y_true
print "y_scores is ",y_scores
print "auc is ",roc_auc_score(y_true, y_scores)
AUC計算方法總結
auc area under the curve 是一種用來度量分類模型好壞的乙個標準,這裡不詳細敘述auc的定義及意義,詳見wiki。演算法1 如下圖是乙個分類器的結果,計算點形成的折線的面積就是auc的值 如下 public double aucalg1 if scores 1 contains...
AUC計算方法總結
一 roc曲線 1 roc曲線 接收者操作特徵 receiveroperating characteristic roc曲線上每個點反映著對同一訊號刺激的感受性。橫軸 負正類率 false postive rate fpr 特異度,劃分例項中所有負例佔所有負例的比例 1 specificity 縱軸...
AUC計算方法總結
一 roc曲線 1 roc曲線 接收者操作特徵 receiveroperating characteristic roc曲線上每個點反映著對同一訊號刺激的感受性。橫軸 負正類率 false postive rate fpr 特異度,劃分例項中所有負例佔所有負例的比例 1 specificity 縱軸...