LTR那點事—AUC及其與線上點選率的關聯詳解

達觀資料發表於2019-10-14

LTR(Learning To Rank)學習排序是一種監督學習(SupervisedLearning)的排序方法,現已經廣泛應用於資訊索引,內容推薦,自然語言處理等多個領域。推薦系統為例,推薦一般使用多個子策略,但哪個策略更好?每個策略選出多少候選集?每個候選集呈現的順序如何排序?這些問題只能根據經驗進行選擇,隨著策略越來越多,上述問題對推薦效果的影響會越來越大。於是乎,人們很自然的想到了用機器學習(Machine Learning)瞭解決上述問題,至此LTR就出世和大家見面了。發展到現在,LTR已經形成較為成熟的理論基礎,並且可以解決資料稀疏、過擬合等多種問題,在實際應用中取得較好的效果。

做過LTR的人都知道AUC是機器學習中非常重要的評估指標,AUC的提升會帶來線上點選率的提升,其值越高越好,最大值為1。那麼AUC到底是個什麼東東呢?為什麼AUC的提升就一定會帶來點選率的提升?本文就帶大家一起了解下AUC的概念及其與線上點選率的關聯。

一、AUC概念與計算方法

AUC是Area Under Curve的縮寫,實際就是曲線下的面積。那麼這條曲線是什麼呢?AUC又要怎麼求呢?別急,聽我細細道來。

通常在訓練模型時,我們需要從日誌裡獲得某一天或者某幾天的資料作為訓練集,選取另外某一天或者某幾天的作為驗證集(通常訓練集時間先於驗證集時間)。日誌裡是一條一條的記錄(通常包括使用者標識、item標識、操作時間、操作型別等等),對於某一條記錄,有使用者點選的我們標記為1,代表使用者對當前的item感興趣,點選觀看了(當然不考慮手抽點到的);對於展示但是使用者未點選的我們標記為0,代表使用者不感興趣。在LTR中,根據訓練集對模型進行訓練,訓練好的模型會為驗證集的每一條記錄打分,那麼對於使用者行為是點選的記錄,我們希望得分高一些;而對於使用者行為是不點選的記錄,我們希望得分低一些,這樣預測分數就可以代表使用者對當前item的興趣大小。AUC就是用來比較有點選記錄的得分與無點選記錄的得分是否滿足上述關係的指標。這裡需要強調的是AUC僅僅用來比較有點選與無點選的記錄,不用來比較有點選之間或者無點選之間的關係(比如A記錄中使用者點選並且對該次展示極感興趣,而B記錄中使用者對該次展示沒有興趣只是不小心點到,所以A記錄得分理應高於B,但這不屬於AUC的考慮範圍)。

說了這麼多,大家可能還不是很明白,到底AUC怎麼計算呢?舉個例子如下:

下表中有如下6條記錄:

LTR那點事—AUC及其與線上點選率的關聯詳解

這裡我們無法預知同為使用者點選過的A和D兩條記錄到底誰的得分更應該高一些,也無法預知其餘四條未點選的記錄誰的得分應該更低一些。但是根據AUC的概念,A和D的得分應該高於其餘四條記錄中的任意一條。下面開始計算AUC的流程:

我們需要將記錄A、D分別與另外四條記錄比較,一共有8組對比。這裡計算AUC的分母就是8;那麼共有多少組對比是滿足要求的呢?記錄A比另外四組(B、C、E、F)得分都高,記錄D只比另外二組(E、F)得分都高,所以八組對比中滿足條件的只有6組,那麼分子就是6。所以我們計算得到的AUC就是6/8 = 0.75。簡單吧?好像確實不是很難耶!
下面對AUC的計算做一個簡單總結:通過模型對驗證集中的每條記錄做一個預測。這些記錄中有點選行為的記錄數為M,未點選的記錄數為N,則用有M*N組對比。對於有點選的M條記錄分別記為p1、p2、……pM,對於其中任意一條記錄Pi,其預測分數高於未點選記錄的個數為記做LTR那點事—AUC及其與線上點選率的關聯詳解,則滿足條件的對比組為LTR那點事—AUC及其與線上點選率的關聯詳解的累積和,除以M*N就是本次記錄組中AUC的結果。我們需要對比有點選行為的記錄與無點選行為的記錄,要求有點選行為記錄的預測分數高於無點選行為記錄的預測分數,AUC就是衡量滿足要求的對比數佔總對比數的指標。

二、小樣,穿個馬甲就不認識你了?!

上一小節中介紹瞭如何計算AUC,相信大家已經掌握了原理和計算方法。其實網上大部分介紹AUC的文章如出一轍,但是好像都不是上述方法,二者一樣嗎?難不成AUC有兩種計算方式?下面就進行一下對比,看看到底咋回事。

看過網上介紹AUC的同學一定都知道下面四個概念:

  • True negative(TN),稱為真陰,表明實際是負樣本預測成負樣本的樣本數
  • False positive(FP),稱為假陽,表明實際是負樣本預測成正樣本的樣本數
  • False negative(FN),稱為假陰,表明實際是正樣本預測成負樣本的樣本數
  • True positive(TP),稱為真陽,表明實際是正樣本預測成正樣本的樣本數

大家可能看的有點頭暈,下面在用更通俗的語言描述下:

  1. TN,預測是負樣本,預測對了
  2. FP,預測是正樣本,預測錯了
  3. FN,預測是負樣本,預測錯了
  4. TP,預測是正樣本,預測對了

前文已經說了AUC實際是曲線下的面積,那麼這條曲線是什麼呢?有了上述概念我們就可以畫出這條曲線了,其橫座標是False Positive Rate(假陽率,FPR),縱座標是True Positive Rate(真陽率,TPR),那這兩個指標怎麼算呢?公式如下:LTR那點事—AUC及其與線上點選率的關聯詳解

LTR那點事—AUC及其與線上點選率的關聯詳解

到現在為止,基本畫AUC曲線所需要了解的概念都描述了,大家暈了嗎?反正我是暈了,這和上一節介紹的計算AUC的方法是一樣的嗎?

答案直接而有堅定:是!!!

那麼該如何理解呢?說到這裡就不得不提閥值的概念。對於某個二分類分類器來說,涉及最多的閥值就是0.5了,對於每一次預測大於0.5的認為是正樣本,小於0.5的認為是負樣本。那麼AUC曲線中閥值是多少呢?這裡的閾值很多,我們可以把下述曲線理解成一個個小長方形,每一個長方形對應於每一個閥值。下面描述如何選取閥值與畫出這些小長方形。

這裡仍然假定共M有個正樣本(使用者點選)與N個負樣本(使用者未點選),分別對個M正樣本與N個負樣本的預測分數進行降序排列,對應的序號分別為LTR那點事—AUC及其與線上點選率的關聯詳解,對應的預測分數分別為LTR那點事—AUC及其與線上點選率的關聯詳解。這裡閾值就是負樣本分數LTR那點事—AUC及其與線上點選率的關聯詳解。首先選取作為閥值(分數>=閥值為正樣本,<閥值為負樣本),則此時負樣本中僅有的p1滿足預測分數大於等於閥值(實際是等於),故假陽率為LTR那點事—AUC及其與線上點選率的關聯詳解;對應的正樣本預測分數有LTR那點事—AUC及其與線上點選率的關聯詳解大於等於閥值,共LTR那點事—AUC及其與線上點選率的關聯詳解個,真陽率LTR那點事—AUC及其與線上點選率的關聯詳解,對應的第一個長方形的面積LTR那點事—AUC及其與線上點選率的關聯詳解。接著選LTR那點事—AUC及其與線上點選率的關聯詳解作為閥值,此時假陽率LTR那點事—AUC及其與線上點選率的關聯詳解,但對應於第二個長方形的寬還是LTR那點事—AUC及其與線上點選率的關聯詳解(需減去前一個長方形的寬),正樣本預測分數中LTR那點事—AUC及其與線上點選率的關聯詳解大於閥值共LTR那點事—AUC及其與線上點選率的關聯詳解個。由於LTR那點事—AUC及其與線上點選率的關聯詳解,則必有LTR那點事—AUC及其與線上點選率的關聯詳解,這也解釋了曲線中y隨著x的增大而增大。此時真陽率LTR那點事—AUC及其與線上點選率的關聯詳解,對應的第二個長方形的面積為LTR那點事—AUC及其與線上點選率的關聯詳解……將根據閾值劃分的各小長方形累加得到曲線下的面積也就是AUC,其表達形式為LTR那點事—AUC及其與線上點選率的關聯詳解,分子是滿足條件的對比組,分母是總對比組,形式與第一節介紹的計算AUC的表示式一模一樣!
這裡我們選取負樣本的得分作為閥值,當然也可以選取正樣本的分數作為閥值。則橫座標是False negative Rate(假陰率,FNR)縱座標是True Negative Rate(真陰率,TNR),對應公式如下:

LTR那點事—AUC及其與線上點選率的關聯詳解

對正負樣本預測分數進行升序排列,依次選取正樣本的分數作為閥值,最後得到的結果與上述表示式一致。

至此,我們已經詳細描述瞭如何計算AUC,最後補上AUC的一般判斷標準

0.5~0.7:效果較低

0.7~0.9:效果不錯,可用於上線

0.9~1.0:效果超級好,但是一般情形下很難達到

三、AUC與線上點選率的關聯

晚上加班回家洗完澡,開啟**頭條,翻到推薦頁面,映入眼簾的幾條推薦內容都是我特別感興趣的,好了不往下面翻了,把當前頁面的看完再說;翻著翻著,沒啥意思了,再看看時間不早了,算了睡吧明天還要早起呢。不看了睡覺吧 zzz。

通過上述可以看出大家對於推薦欄靠前的內容更容易點選,當然不排除有些人喜歡先翻個幾下子在看的,如果這樣那麼LTR可能反而會降低客戶體驗,所以LTR優化時我們是不考慮這部分使用者。LTR就是對於某一個特定使用者,根據模型對召回的不同item的預測分數進行降序排列,如果AUC足夠高,則根據預測分數進行排序的結果與使用者真實興趣排序的結果相符,這也是為什麼我們要提高AUC的原因。將使用者感興趣的item優先展示,可以提高使用者的點選數同時降低入屏但是不點選的數目,從而提高點選率,產生較好的使用者體驗。

四、AUC真的好嗎?

通過上面我們可以看出,AUC正比於線上點選率。現在市面上各種app都在追求使用者流量,高質量的推薦內容可以獲得更好的使用者體驗從而獲得更多的使用者流量。所以線下訓練模型是一般追求AUC的提升,但AUC高就一定好嗎,請看下面兩組資料對比:

第一組:

LTR那點事—AUC及其與線上點選率的關聯詳解根據之前介紹的AUC計算方式可以得到這一組資料的AUC為LTR那點事—AUC及其與線上點選率的關聯詳解

第二組:

LTR那點事—AUC及其與線上點選率的關聯詳解根據之前介紹的AUC計算方式可以得到這一組資料的AUC為LTR那點事—AUC及其與線上點選率的關聯詳解

通過對比AUC大家顯然覺得第二組資料對應的模型效能更好。

真的嗎?

真的是這樣嗎?

對於第一組資料,表中分別包含甲乙兩個使用者,對於這兩個使用者而言,預測分數大小關係完全符合使用者點選行為與否,故模型在這兩個使用者上已不需要優化。對於第二組資料,丁使用者各條記錄的預測分數大小關係不完全符合使用者點選行為(有點選行為的E預測分數低於無點選行為的F),故第二組資料對應的模型還需要優化。對比之前AUC,第二組的模型優於第一組,這裡矛盾到底在哪裡呢?分析如下:

第一組資料中共有2個正樣本,6個負樣本共12組對比,不滿足條件的共兩組(使用者甲-itemB,使用者乙-itemE), (使用者甲-itemC,使用者乙-itemE),可以發現這兩組資料都是比較不同的使用者,我們做LTR的目的是為了對每個使用者推薦的item正確排序,不必理會不同使用者間的item。表1可以看出使用者甲的預測分數普遍偏高而使用者乙的分數普遍偏低,這種趨勢與item無關,僅僅取決於使用者,所以比較不同使用者之間的預測分數是沒有意義的。如果我們用AUC來作為最終的判斷標準會出現表1的情形,使用者甲乙都滿足LTR的排序,但是整體的AUC還是小於1。

上面說明了AUC作為LTR的指標的侷限性,那麼該如何選取呢。還是以表1為例,單獨看甲乙兩個使用者,使用者甲的AUC是1,使用者乙的AUC也是1,則總體AUC肯定是1。這裡阿里巴巴提出了GAUC的概念,g是group的縮寫,顧名思義就是分組AUC,分組的依據是使用者名稱,根據不同的使用者名稱分組得到不同使用者的AUC,然後在加權平均得到最終的GAUC。這樣就避免了不同使用者之間的比較,消除了使用者間差異。

現在剩下最後一個問題了,算出了不同使用者的AUC如何進行加權得到GAUC呢。這裡阿里巴巴也沒有給出確切的公式,可以依據各使用者的點選數或者是各使用者的展示數。下面做一個簡單的公式推導:
推薦系統來說,LTR是為了提高使用者的點選率,這裡使用者點選用LTR那點事—AUC及其與線上點選率的關聯詳解表示,展示數目用LTR那點事—AUC及其與線上點選率的關聯詳解表示。假設有三個使用者,點選數分別為LTR那點事—AUC及其與線上點選率的關聯詳解,展示數目分別為LTR那點事—AUC及其與線上點選率的關聯詳解點選率分別為LTR那點事—AUC及其與線上點選率的關聯詳解,則總體可表示為LTR那點事—AUC及其與線上點選率的關聯詳解

可以看出總體點選率是不同使用者的根據展示數進行加權得到的,所以不同使用者根據展示數加權得到GAUC是合理的。

但是這裡不能忽略一個問題,AUC是預測分數滿足大小關係的正負對佔總的正負對的比值,對比數越多,AUC就越準確。假如兩個使用者都展示了10條,其中一個使用者點選了1條,那麼該使用者對應的AUC有9組對比;另一個使用者點選了5條,那麼該使用者對應的AUC有25組對比,顯然計算GAUC時後一個使用者對應的AUC的權重應該大一點。這裡全球領先的文字職能處理專家—達觀資料公司提出從從AUC的定義出發來計算GAUC。這裡將各使用者計算AUC的分子相加作為計算GAUC的分子,各使用者計算AUC的分母相加作為計算GAUC的分母,由於模型不會偏向於任意使用者,故這種計算GAUC的方法是較為準確的。大家也可以在實際工程中應用。

總結

本文首先介紹了AUC的基本概念和計算方法,同時對比了兩種計算AUC的方法,其不過是最終表示式的兩種展現形式。接著描述了AUC與線上點選率的關聯。最後補充了AUC的不足同時引出了GAUC,用以消除使用者間的差異,同時提出了一種新的計算GAUC的方法。

關於作者

徐祥:達觀資料智慧推薦演算法工程師,負責達觀資料智慧推薦演算法中模型的優化,對策略召回的結果進行重排序。對特徵工程模型優化有深入研究。

相關文章