1、AUC(Area Under Curve)原理
ROC(Receiver Operating Characteristic)曲線與AUC(Area Under Curve)
ROC曲線:
- 橫坐標:假正率(False positive rate, FPR),FPR = FP / [ FP + TN] ,代表所有負樣本中錯誤預測為正樣本的概率,假警報率;
- 縱坐標:真正率(True positive rate, TPR),TPR = TP / [ TP + FN] ,代表所有正樣本中預測正確的概率,命中率。
對角線對應於隨機猜測模型,而(0,1)對應於所有正例排在所有反例之前的理想模型。曲線越接近左上角,分類器的性能越好。
ROC曲線有個很好的特性:當測試集中的正負樣本的分布變化的時候,ROC曲線能夠保持不變。在實際的數據集中經常會出現類不平衡(class imbalance)現象,即負樣本比正樣本多很多(或者相反),而且測試數據中的正負樣本的分布也可能隨着時間變化。
ROC曲線繪制:
(1)根據每個測試樣本屬於正樣本的概率值從大到小排序;
(2)從高到低,依次將“Score”值作為閾值threshold,當測試樣本屬於正樣本的概率大於或等於這個threshold時,我們認為它為正樣本,否則為負樣本;
(3)每次選取一個不同的threshold,我們就可以得到一組FPR和TPR,即ROC曲線上的一點。
當我們將threshold設置為1和0時,分別可以得到ROC曲線上的(0,0)和(1,1)兩個點。將這些(FPR,TPR)對連接起來,就得到了ROC曲線。當threshold取值越多,ROC曲線越平滑。
AUC(Area Under Curve)即為ROC曲線下的面積。AUC越接近於1,分類器性能越好。
物理意義:首先AUC值是一個概率值,當你隨機挑選一個正樣本以及一個負樣本,當前的分類算法根據計算得到的Score值將這個正樣本排在負樣本前面的概率就是AUC值。當然,AUC值越大,當前的分類算法越有可能將正樣本排在負樣本前面,即能夠更好的分類。
計算公式:就是求曲線下矩形面積。
推薦系統的 auc:https://mp.weixin.qq.com/s/e3qcSo8LPDf2S8TUvU6S1A
AUC代表模型預估樣本之間的排序關系,即正負樣本之間預測的gap越大,auc越大。
- ROC曲線反映了分類器的分類能力,結合考慮了分類器輸出概率的准確性
- AUC量化了ROC曲線的分類能力,越大分類效果越好,輸出概率越合理
- AUC常用作CTR的離線評價,AUC越大,CTR的排序能力越強
計算邏輯問題:
AUC計算是基於模型對全集樣本的的排序能力,而真實線上場景,往往只考慮一個用戶一個session下的排序關系。這里的gap往往導致一些問題。正如參考[3]中的舉例的幾個case,比較典型。主要包括兩點:
- 線上會出現新樣本,在線下沒有見過,造成AUC不足。這部分更多是采用online learning的方式去緩解,AUC本身可改進的不多。
- 線上的排序發生在一個用戶的session下,而線下計算全集AUC,即把user1點擊的正樣本排序高於user2未點擊的負樣本是沒有實際意義的,但線下auc計算的時候考慮了它。
- 改進:deepES 數據分析時,分用戶進行 pnr 統計;
2、計算方式

AUC的計算主要以下幾種方法:
1、計算ROC曲線下的面積。這是比較直接的一種方法,可以近似計算ROC曲線一個個小梯形的面積。幾乎不會用這種方法
2、從AUC統計意義去計算。所有的正負樣本對中,正樣本排在負樣本前面占樣本對數的比例,即這個概率值。
- 具體的做法就是它也是首先對prob score從大到小排序,然后令最大prob score對應的sample 的rank為n,第二大score對應sample的rank為n-1,以此類推。
- 然后把所有的正類樣本的rank相加,再減去M-1種兩個正樣本組合的情況。
- 得到的就是所有的樣本中有多少對正類樣本的score大於負類樣本的score。
- 最后再除以M×N。
(1)方法一:
具體來說就是統計一下所有的 M×N(M為正類樣本的數目,N為負類樣本的數目)個正負樣本對中,有多少個組中的正樣本的score大於負樣本的score。當二元組中正負樣本的 score相等的時候,按照0.5計算。然后除以MN。實現這個方法的復雜度為O(n^2)。n為樣本數(即n=M+N)
(2)方法二
參考文獻: