auc是評價乙個二分類器效能的主流數值指標,定義為roc曲線下方的面積,但這個算起來比較複雜,需要統計假陽性。另乙個定義更直觀,隨機給乙個正樣本和乙個負樣本,多大概率正樣本的score更高。
換一種說法,假設正樣本有m
mm個,負樣本有n
nn個,在所有m∗n
m*nm∗
n個正負樣本對中,有多少正樣本比負樣本分高。提高auc意味著,將所有樣本按score排序,正樣本要盡量排在負樣本前面。各大部落格貼出的auc計算公式為
a uc
=∑正樣
本ran
ki
−0.5∗(
m+1)
∗mm∗
nauc=\frac - 0.5 * (m+1) * m}
auc=m∗
n∑正樣
本ra
nki
−0.5
∗(m+
1)∗m
下面給不能一眼看懂這個公式的童鞋(比如當年的我)舉幾個例子,希望能有幫助。
假設我們5個樣本,其中2個正樣本,3個負樣本,按分類器輸出的score排序,分最高的rank為5,次之為4。
如果這個分類器很完美,應該是下面的結果,所有的正樣本都排在負樣本之前auc
=6/6
=1
auc =6 /6 = 1
auc=6/
6=1
rank54
321正負性++
---如果稍差一點,6個正負樣本[(5, 4), (5, 2), (5, 1), (3, 4), (3, 2), (3, 1)]對中只有(3, 4)正樣本沒排在負樣本之前,auc
=5/6
auc=5/6
auc=5/
6 rank54
321正負性+-
+--再看,這次[(5, 4), (5, 3), (5, 1), (2, 4), (2, 3), (2, 1)] 裡有2個正樣本沒排在負樣本之前,auc
=4/6
auc = 4/6
auc=4/
6 rank54
321正負性+-
-+-上面的窮舉法時間複雜度為o(n
2)
o(n^2)
o(n2
), 其實可以考慮,對每個正樣本來說,它能貢獻分子中的幾項,比如上面的例子,右邊有幾個樣本可以用動態規劃從右往左掃一遍得出,貢獻幾項可以這樣得出:e.g. rank為r
rr的正樣本比它後面r−1
r-1r−
1個樣本排得前,扣除它右邊的正樣本數即可,複雜度o(n
)o(n)
o(n)
。rank54
321正負性+-
-+-右邊有幾個正樣本11
100貢獻幾項
5-1-1=300
2-1=1
0由上可知,auc
aucau
c的分子計算需要對正樣本的rank值求和,減正樣本數,再扣除每個正樣本右邊正樣本的數量之和,聰明的你一定發現了,既然有m
mm個正樣本,右邊正樣本數量之和一定為(m−
1)+.
..+2
+1
(m-1) + ... + 2 + 1
(m−1)+
...+
2+1,那麼分子就是
∑ i=
1mra
nk正樣
本i−m
−[(m
−1)+
...+
2+1]
=∑i=
1mra
nk正樣
本i−m
(m+1
)2
\sum_^} - m - [(m-1) + ... + 2 + 1] = \sum_^} - \frac
i=1∑m
rank
正樣本i
−m−
[(m−
1)+.
..+2
+1]=
i=1∑
mra
nk正樣
本i−
2m(m
+1)
(完)
auc計算公式的理解
對於auc的計算參考 m是正樣本的個數,n是負樣本的個數 如何理解分子,下面是我個人的理解。總體原則 負樣本數 樣本總數 正樣本數,然後構造樣本總數 每次取概率不同的正樣本,其排序也不一樣,構造樣本總數的表達方式也不一樣 rank1,樣本總數為rank1 rank2 再加1個就是樣本總數,為rank...
auc計算公式 AUC與logloss
在ctr預估中,auc area under curve 用於衡量排序能力,auc值為roc曲線下的面積,是乙個概率值,越大越好。簡單來說這個指標的含義其實就是隨機抽出一對樣本 乙個正樣本,乙個負樣本 然後用訓練得到的分類器來對這兩個樣本進行 得到正樣本的概率大於負樣本概率的概率。auc是乙個二分類...
機器學習評價指標AUC計算公式
auc are under curve 是乙個模型的評價指標,用於分類任務。那麼這個指標代表什麼呢?這個指標想表達的含義,簡單來說其實就是隨機抽出一對樣本 乙個正樣本,乙個負樣本 然後用訓練得到的分類器來對這兩個樣本進行 得到正樣本的概率大於負樣本概率的概率。在有m個正樣本,n個負樣本的資料集裡。一...