AUC的計算方法

2021-08-11 12:20:58 字數 3125 閱讀 1365

在機器學習的分類任務中,我們常用許多的指標,諸如召回率(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 縱軸...