含義理解二 : auc(are under curve)是乙個模型的評價指標,用於分類任務。
那麼這個指標代表什麼呢?這個指標想表達的含義,簡單來說其實就是隨機抽出一對樣本(乙個正樣本,乙個負樣本),然後用訓練得到的分類器來對這兩個樣本進行**,**得到正樣本的概率大於負樣本概率的概率。
參考方法一 : 定義計算 -> 計算面積 -> 不好實現
方法二: 從概率的角度進行實現
有如下公式:
公式解釋:
首先對score從大到小排序,然後令最大score對應的sample 的rank為n,第二大score對應sample的rank為n-1,以此類推。然後把所有的正類樣本的rank相加,再減去m-1種兩個正樣本組合的情況。得到的就是所有的樣本中有多少對正類樣本的score大於負類樣本的score。然後再除以m×n
**實現:
import numpy as np
def calculate_auc(y, p):
'''y: 真實label的向量 ndarray
p: **為正例的概率的向量 ndarray
'''# 保證相同概率的0排在1前面
tmp = np.array(sorted(zip(y, p), key=lambda x:(x[1], -x[0]), reverse=true))
neg = 0
pos = 0
for i in y:
if i == 0:
neg += 1
elif i == 1:
pos += 1
loss = 0
neglst = np.array()
for i in range(len(tmp)):
if tmp[i][0] == 1:
loss += np.sum(neglst == tmp[i][1]) / 2 + np.sum(neglst != tmp[i][1])
else:
return 1 - loss / (neg*pos)
參考:
時間匆匆,簡單記錄~
AUC如何計算
auc area under curve 是機器學習二分類模型中非常常用的評估指標,相比於f1 score對專案的不平衡有更大的容忍性,目前常見的機器學習庫中 比如scikit learn 一般也都是整合該指標的計算,但是有時候模型是單獨的或者自己編寫的,此時想要評估訓練模型的好壞就得自己搞乙個au...
auc計算公式 AUC與logloss
在ctr預估中,auc area under curve 用於衡量排序能力,auc值為roc曲線下的面積,是乙個概率值,越大越好。簡單來說這個指標的含義其實就是隨機抽出一對樣本 乙個正樣本,乙個負樣本 然後用訓練得到的分類器來對這兩個樣本進行 得到正樣本的概率大於負樣本概率的概率。auc是乙個二分類...
AUC計算方法總結
auc area under the curve 是一種用來度量分類模型好壞的乙個標準,這裡不詳細敘述auc的定義及意義,詳見wiki。演算法1 如下圖是乙個分類器的結果,計算點形成的折線的面積就是auc的值 如下 public double aucalg1 if scores 1 contains...