天天看點

推薦 搜尋場景下的auc了解

看到一篇寫的比較好的部落格,這摘抄了解下,對其中的一些内容進行了補充說明,水準有限,歡迎指出錯誤。

在網際網路的排序業務中,比如搜尋、推薦、廣告等,AUC(Area under the Curve of ROC)是一個非常常見的評估名額。

本文先提出以下幾個問題,帶着問題往下讀。

  1. AUC有幾種了解?
  2. AUC的什麼特性讓它如此受歡迎?
  3. AUC的值和什麼有關,多高是高?
  4. AUC提高了是否代表線上名額會提高?
  5. 有沒有更好的名額替代AUC?

1.AUC有幾種了解?

AUC的兩種意義

  • 一個是ROC曲線的面積
  • 另外一個是統計意義。從統計學角度了解,AUC等于随機挑選一個正樣本和負樣本時,模型對正樣本的預測分數大于負樣本的預測分數的機率。

2.AUC的什麼特性讓它如此受歡迎?

AUC的排序特性

對比accuracy、precision等名額,AUC名額本身和模型預測score絕對值無關,隻關注排序效果,是以特别适合排序業務。

為何與模型預測score值無關為何是很好的特性呢?假設你采用precision、F1等名額,而模型預測的score是個機率值,就必須選擇一個門檻值來決定哪些樣本預測是1哪些是0,不同的門檻值選擇,precision的值會不同,而AUC可以直接使用score本身,參考的是相對順序,更加好用。

相對于ROC線下面積的解釋,個人更喜歡排序能力的解釋。參考[2]的解釋通俗易懂:

例如0.7的AUC,其含義可以大概了解為:給定一個正樣本和一個負樣本,在70%的情況下,模型對正樣本的打分高于對負樣本的打分。可以看出在這個解釋下,我們關心的隻有正負樣本之間的分數高低,而具體的分值則無關緊要。

AUC對均勻正負樣本采樣不敏感

正由于AUC對分值本身不敏感,故常見的正負樣本采樣,并不會導緻auc的變化。比如在點選率預估中,處于計算資源的考慮,有時候會對負樣本做負采樣,但由于采樣完後并不影響正負樣本的順序分布。

即假設采樣是随機的,采樣完成後,給定一條正樣本,模型預測為score1,由于采樣随機,則大于score1的負樣本和小于score1的負樣本的比例不會發生變化。

但如果采樣不是均勻的,比如采用word2vec的negative sample,其負樣本更偏向于從熱門樣本中采樣,則會發現auc值發生劇烈變化。

AUC值本身有何意義

我們在實際業務中,常常會發現點選率模型的auc要低于購買轉化率模型的auc。正如前文所提,AUC代表模型預估樣本之間的排序關系,即正負樣本之間預測的gap越大,auc越大。在以往的工作經驗中,下單的NN模型,auc能在0.9左右 (每日1億級别的樣本)。另外一些小業務中的點選auc約0.7-0.8(每日約一千萬樣本)。

通常,點選行為的成本要低于購買行為,從業務上了解,點選率模型中正負樣本的差别要小于購買力模型,即購買轉化模型的正樣本通常更容易被預測準。

細心的童鞋會想,既然AUC的值和業務資料本身有關,那麼它的值為多少的時候算好呢?

AUC值本身的理論上限

假設我們擁有一個無比強大的模型,可以準确預測每一條樣本的機率,那麼該模型的AUC是否為1呢?現實常常很殘酷,樣本資料中本身就會存在大量的歧義樣本,即特征集合完全一緻,但label卻不同。是以就算擁有如此強大的模型,也不能讓AUC為1.

是以,當我們拿到樣本資料時,第一步應該看看有多少樣本是特征重複,但label不同,這部分的比率越大,代表其“必須犯的錯誤”越多。學術上稱它們為Bayes Error Rate,也可以從不可優化的角度去了解。

我們花了大量精力做的特征工程,很大程度上在緩解這個問題。當增加一個特征時,觀察下時候減少樣本中的BER,可作為特征建構的一個參考名額。

AUC與線上業務名額的宏觀關系

AUC畢竟是線下離線評估名額,與線上真實業務名額有差别。差别越小則AUC的參考性越高。比如上文提到的點選率模型和購買轉化率模型,雖然購買轉化率模型的AUC會高于點選率模型,但往往都是點選率模型更容易做,線上效果更好。

購買決策比點選決策過程長、成本重,且使用者購買決策受很多場外因素影響,比如預算不夠、在别的平台找到更便宜的了、知乎上看了評測覺得不好等等原因,這部分資訊無法收集到,導緻最終樣本包含的資訊缺少較大,模型的離線AUC與線上業務名額差異變大。

總結起來,樣本資料包含的資訊越接近線上,則離線名額與線上名額gap越小。而決策鍊路越長,資訊丢失就越多,則更難做到線下線上一緻。

AUC提升和業務名額不一緻

好在實際的工作中,常常是模型疊代的auc比較,即新模型比老模型auc高,代表新模型對正負樣本的排序能力比老模型好。理論上,這個時候上線abtest,應該能看到ctr之類的線上名額增長。

實際上經常會發生不一緻,首先,我們得排除一些低級錯誤:

1. 排除bug,線上線下模型predict的結果要符合預期。

2. 謹防樣本穿越。比如樣本中有時間序類的特征,但train、test的資料切分沒有考慮時間因子,則容易造成穿越。

更多細節請看參考[5]和[3]

AUC計算邏輯不足與改進

AUC計算是基于模型對全集樣本的的排序能力,而真實線上場景,往往隻考慮一個使用者一個session下的排序關系。這裡的gap往往導緻一些問題。正如參考[3]中的舉例的幾個case,比較典型。主要包括兩點:

線上會出現新樣本,線上下沒有見過,造成AUC不足。這部分更多是采用online learning的方式去緩解,AUC本身可改進的不多。

線上的排序發生在一個使用者的session下,而線下計算全集AUC,即把user1點選的正樣本排序高于user2未點選的負樣本是沒有實際意義的,但線下auc計算的時候考慮了它。

阿裡在論文:Deep Interest Network for Click-Through Rate Prediction中提出了group auc來處理上述問題。公式如下:

推薦 搜尋場景下的auc了解

即以user為group,在對user的impression做權重平均。私以為,隻是對使用者做group還不夠,應該是基于session去做group。 

最後,AUC這個問題是在模型優化到一定程度才需要考慮的。大部分情況下,如果模型的auc有大幅提升,線上效果一般是一緻的。如果不一緻,請先從産品形态去思考有沒有坑。

參考:

[1]如何了解機器學習和統計中的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 各自的優缺點是什麼? 

https://www.zhihu.com/question/30643044 

[5] 如何解決離線auc和線上點選率不一緻的問題? 

https://www.zhihu.com/question/305823078/answer/552640544

[6] https://blog.csdn.net/xixiaoyaoww/article/details/107502547

[7] https://zhuanlan.zhihu.com/p/361214293

繼續閱讀