为什么搜索与推荐场景用AUC评价模型好坏?
星標/置頂小屋,帶你解鎖
最萌最前沿的NLP、搜索與推薦技術
文 |?吳海波
在互聯(lián)網(wǎng)的排序業(yè)務中,比如搜索、推薦、廣告等,AUC(Area under the Curve of ROC)是一個非常常見的評估指標。網(wǎng)上關于AUC的資料很多,知乎上也有不少精彩的討論,本文嘗試基于自身對AUC的理解做個綜述,水平有限,歡迎指出錯誤。
俗話說,提出正確的問題就成功了一半,本文先提出以下幾個問題,希望大家讀完能夠加深對下列問題的理解。
AUC有幾種理解?
AUC的什么特性讓它如此受歡迎?
AUC的值和什么有關,多高是高?
AUC提高了是否代表線上指標會提高?
有沒有更好的指標替代AUC?
幾種AUC的理解
一般有兩大類解釋,一種是基于ROC線下面積,需要理解混淆矩陣,包括精確率、召回率、F1 值、ROC等指標的含義。另外一種是基于概率的解釋,模型的排序能力。
在參考[1]和[4]中,關于AUC定義本身的討論非常詳細,上述兩大類都有不同形式的解釋。還包括如何用AUC做目標去優(yōu)化,AUC的各種計算方法,本文不再贅述,有興趣的同學自己去看下。
AUC的排序特性
對比accuracy、precision等指標,AUC指標本身和模型預測score絕對值無關,只關注排序效果,因此特別適合排序業(yè)務。
為何與模型預測score值無關為何是很好的特性呢?假設你采用precision、F1等指標,而模型預測的score是個概率值,就必須選擇一個閾值來決定哪些樣本預測是1哪些是0,不同的閾值選擇,precision的值會不同,而AUC可以直接使用score本身,參考的是相對順序,更加好用。
相對于ROC線下面積的解釋,個人更喜歡排序能力的解釋。參考[2]的解釋通俗易懂:
例如0.7的AUC,其含義可以大概理解為:給定一個正樣本和一個負樣本,在70%的情況下,模型對正樣本的打分高于對負樣本的打分。可以看出在這個解釋下,我們關心的只有正負樣本之間的分數(shù)高低,而具體的分值則無關緊要。
AUC對均勻正負樣本采樣不敏感
正由于AUC對分值本身不敏感,故常見的正負樣本采樣,并不會導致auc的變化。比如在點擊率預估中,處于計算資源的考慮,有時候會對負樣本做負采樣,但由于采樣完后并不影響正負樣本的順序分布。
即假設采樣是隨機的,采樣完成后,給定一條正樣本,模型預測為score1,由于采樣隨機,則大于score1的負樣本和小于score1的負樣本的比例不會發(fā)生變化。
但如果采樣不是均勻的,比如采用word2vec的negative sample,其負樣本更偏向于從熱門樣本中采樣,則會發(fā)現(xiàn)auc值發(fā)生劇烈變化。
AUC值本身有何意義
我們在實際業(yè)務中,常常會發(fā)現(xiàn)點擊率模型的auc要低于購買轉化率模型的auc。正如前文所提,AUC代表模型預估樣本之間的排序關系,即正負樣本之間預測的gap越大,auc越大。
通常,點擊行為的成本要低于購買行為,從業(yè)務上理解,點擊率模型中正負樣本的差別要小于購買力模型,即購買轉化模型的正樣本通常更容易被預測準。
細心的童鞋會想,既然AUC的值和業(yè)務數(shù)據(jù)本身有關,那么它的值為多少的時候算好呢?
AUC值本身的理論上限
假設我們擁有一個無比強大的模型,可以準確預測每一條樣本的概率,那么該模型的AUC是否為1呢?現(xiàn)實常常很殘酷,樣本數(shù)據(jù)中本身就會存在大量的歧義樣本,即特征集合完全一致,但label卻不同。因此就算擁有如此強大的模型,也不能讓AUC為1.
因此,當我們拿到樣本數(shù)據(jù)時,第一步應該看看有多少樣本是特征重復,但label不同,這部分的比率越大,代表其“必須犯的錯誤”越多。學術上稱它們?yōu)锽ayes Error Rate,也可以從不可優(yōu)化的角度去理解。
我們花了大量精力做的特征工程,很大程度上在緩解這個問題。當增加一個特征時,觀察下時候減少樣本中的BER,可作為特征構建的一個參考指標。
AUC與線上業(yè)務指標的宏觀關系
AUC畢竟是線下離線評估指標,與線上真實業(yè)務指標有差別。差別越小則AUC的參考性越高。比如上文提到的點擊率模型和購買轉化率模型,雖然購買轉化率模型的AUC會高于點擊率模型,但往往都是點擊率模型更容易做,線上效果更好。
購買決策比點擊決策過程長、成本重,且用戶購買決策受很多場外因素影響,比如預算不夠、在別的平臺找到更便宜的了、知乎上看了評測覺得不好等等原因,這部分信息無法收集到,導致最終樣本包含的信息缺少較大,模型的離線AUC與線上業(yè)務指標差異變大。
總結起來,樣本數(shù)據(jù)包含的信息越接近線上,則離線指標與線上指標gap越小。而決策鏈路越長,信息丟失就越多,則更難做到線下線上一致。
AUC提升和業(yè)務指標不一致
好在實際的工作中,常常是模型迭代的auc比較,即新模型比老模型auc高,代表新模型對正負樣本的排序能力比老模型好。理論上,這個時候上線abtest,應該能看到ctr之類的線上指標增長。
實際上經(jīng)常會發(fā)生不一致,首先,我們得排除一些低級錯誤:
1. 排除bug,線上線下模型predict的結果要符合預期。
2. 謹防樣本穿越。比如樣本中有時間序類的特征,但train、test的數(shù)據(jù)切分沒有考慮時間因子,則容易造成穿越。
更多細節(jié)請看參考[5]和[3]
AUC計算邏輯不足與改進
AUC計算是基于模型對全集樣本的的排序能力,而真實線上場景,往往只考慮一個用戶一個session下的排序關系。這里的gap往往導致一些問題。正如參考[3]中的舉例的幾個case,比較典型。主要包括兩點:
線上會出現(xiàn)新樣本,在線下沒有見過,造成AUC不足。這部分更多是采用online learning的方式去緩解,AUC本身可改進的不多。
線上的排序發(fā)生在一個用戶的session下,而線下計算全集AUC,即把user1點擊的正樣本排序高于user2未點擊的負樣本是沒有實際意義的,但線下auc計算的時候考慮了它。
阿里在論文:Deep Interest Network for Click-Through Rate Prediction中提出了group auc來處理上述問題。公式如下:
即以user為group,在對user的impression做加權平均。私以為,只是對用戶做group還不夠,應該是基于session去做group。
最后,AUC這個問題是在模型優(yōu)化到一定程度才需要考慮的。大部分情況下,如果模型的auc有大幅提升,線上效果一般是一致的。如果不一致,請先從產(chǎn)品形態(tài)去思考有沒有坑。
文末福利
后臺回復關鍵詞【入群】
即刻加入NLP、算法崗求職等討論群
這里有頂會審稿人、大廠研究員、知乎大V
等你來撩哦~
關注星標
帶你解鎖最前沿的NLP、搜索與推薦技術
參考文獻
[1]如何理解機器學習和統(tǒng)計中的AUC?
https://www.zhihu.com/question/39840928?
[2] 多高的AUC才算高:
https://zhuanlan.zhihu.com/p/24217322?
[3] 線下AUC提升為什么不能帶來線上效果提升?--測試和評估的一些真相:?
https://zhuanlan.zhihu.com/p/35459467?
[4] 精確率、召回率、F1 值、ROC、AUC 各自的優(yōu)缺點是什么??
https://www.zhihu.com/question/30643044?
[5] 如何解決離線auc和線上點擊率不一致的問題??
https://www.zhihu.com/question/305823078/answer/552640544
總結
以上是生活随笔為你收集整理的为什么搜索与推荐场景用AUC评价模型好坏?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NYU Google: 知识蒸馏无处不
- 下一篇: 权威赛事来了!千言-文本生成评测启动,聚