首先舉個例子:
正樣本(90) 負樣本(10)
模型1預測 正(90) 正(10)
模型2預測 正(70)負(20) 正(5)負(5)
結論:
模型1準确率90%;
模型2 準确率75%
考慮對正負樣本對預測能力,顯然模型2要比模型1好,但對于這種正負樣本分布不平衡對資料,準确率不能衡量分類器對好壞了,是以需要名額auc解決傾斜樣本的評價問題。
二分類混淆矩陣
預測\實際 1 0
1 TP FP
0 FN TN
TPR=TP/P=TP/TP+FN 直覺1中猜對多少
FPR=FP/N=FP/FP+TN 直覺0中猜錯多少
Auc對橫縱坐标分别為FPR和TPR,相對于y=x這條直線靠近左上角對分類器性能更好,是以模型2更優。
TPR FPR
模型1 90/90=1 10/10=1
模型2 70/90=0.78 5/10=0.5
模型1和2的auc點位分别如下圖所示,顯然模型1更優:
二 研究現狀
AUC直覺概念,任意取一對正負樣本,正樣本score大于負樣本對機率。
計算方法:正樣本和負樣本pair對,auc=預估正樣本score大于負樣本score的pair對數/總的pair對數。
E.g. 分别計算模型1和2對auc?
四個樣本label為y1=+1, y2=+1, y3=-1, y4=-1
模型1的預測為 y1=0.9, y2=0.5, y3=0.2, y4=0.6
模型2的預測為 y1=0.1, y2=0.9, y3=0.8, y4=0.2
解:
模型1: 正樣本score大于負樣本的pair包括(y1, y3), (y1, y4), (y2, y3),auc為3/4=0.75
模型2: 正樣本score大于負樣本的pair包括(y2, y3),(y2, y4),auc為2/4=0.5
計算參考paper:《 An introduction to ROC analysis 》(Tom Fawcett)
方法:
1按照score對樣本排序;
2依次對每個樣本,label分對TP增1,否則FP增1。計算每個小梯形的面積。
3累加所有樣本,計算auc
代碼:
三 點選率模型auc計算方法
如上圖,以兩個分桶為例,每個分桶計算的AUC為圖中的陰影部分。全局AUC部分需要補充P3部分的面積,等于前i-1個桶的sum(click)乘以每i個桶的noclick。
整體的AUC就是曲線下的面積除以曲線的起點、終點錨定矩型的面積。
步驟
1按照pctr聚合 sum_show和sum_clk;
2樣本按照pctr排序;
3依次對每個樣本,計算noclk和clk圍成對小梯形對面積。
代碼:
本文轉自 bxst 51CTO部落格,原文連結:http://blog.51cto.com/13013670/1943966