策略產品經理必讀系列—搜廣推業務中如何對預估CTR進行校準

0 評論 6052 瀏覽 12 收藏 18 分鐘

搜廣推三大業務場景中都需要CTR預估模型,并基于模型預估的Pctr對內容進行排序。但我們又該在搜廣推業務中如何對預估CTR進行校準?本文作者總結了相關流程,希望對你有所幫助。

一、CTR預估的保序與保距

搜廣推三大業務場景中都需要CTR預估模型,基于模型預估的Pctr(Predicted CTR)對內容進行排序。但不知道各位讀者有沒有思考過一個問題:用戶對于某個內容的單次點擊概率真的是可以被預估的嘛?

因為在現實生活中,用戶對于內容的興趣度最終反饋的結果只有“點擊”和“不點擊”,并沒有反饋是在多大概率的情況下點擊的。實際工作中我們統計的Actr(Actual CTR),并不是單次的的CTR,而是在大數統計的維度上,將該內容曝光給大量用戶以后,統計了所有用戶對該內容的點擊情況,然后得到的一個CTR大數統計值。

無法構建一個CTR預估回歸模型,只能退而求其次構建一個二分類模型。

實際情況導致在CTR預估中,我們無法構建一個回歸模型去擬合用戶對于每個物料的預估CTR,只能通過用戶實際反饋的“點擊”和“不點擊”來構建一個二分類模型,然后將分類模型對于正樣本的概率預估值近似地視為CTR預估值。

我們在對CTR預估模型做離線評估時,針對CTR預估模型主要看的是AUC指標,AUC指標是衡量模型的排序能力,是模型將正樣本排序在負樣本前的概率。如果該場景僅僅只是使用CTR預估模型返回的Pctr來對內容進行排序,那么CTR預估模型只要能保證順序的準確性即可,也就是保序能力,具體Pctr和真實點擊率之間絕對值的差異有多大,其實影響不大。

但目前搜廣推三大業務場景中,實際都用到了Pctr的絕對值。在搜推業務的排序公式中,Pctr是作為一個排序因子。而在廣告業務中Pctr的準確性將直接影響廣告收益。

如上圖所示,模型1和模型2分別對A、B、C三個不同的內容進行CTR預估并進行排序,雖然模型1和模型2對于內容的排序順序都是正確的,但是很明顯模型2預估的Pctr和內容實際的Actr更接近。如果從離線AUC指標上來說模型1和模型2的AUC是完全一樣的,但很明顯模型2的預估效果是要優于模型1的。如果模型本身只是將內容進行排序,那么模型1和模型2達到的效果是一樣的,但是在廣告業務中確不是。

如上圖所示,在廣告業務中以點擊來進行扣費,假設內容A、B和C分別對應的點擊收益是2元、3元、4元。廣告業務中的物料排序是以eCPM來排序,eCPM = CTR * Bid(出價)* 1000。 如果以Actr為準,實際廣告收益應該是B > A > C,這也是最終的理想排序。模型2的排序結果就是和理想排序一致的,但是模型1的排序結果是C > B > A。雖然模型1和模型2對于物料的CTR預估排序順序是一樣的,都是A > B > C。但是實際應用時結合了其他業務指標后,模型1的效果就不如模型2了,根本原因還是模型1對于CTR的預估和實際后驗CTR之間的差距太大。

所以模型在進行CTR預估時,不僅僅要保序還需要保距。 既要保證排序的準確性,又要保證具有一定區分度,且區分度最好要無限接近真實水平之間的差異值。

但是實際CTR模型預估時總會和真實的概率值存在一定偏差,所以目前在互聯網公司搜廣推業務里都會有CTR糾偏模塊,專門去對CTR預估模型給出的Pctr值進行再一次糾偏。糾偏技術的目標就是將用戶行為的預估值盡可能逼近真實概率值。這里讀者可能會疑問,上文介紹單次真實點擊概率是沒法被觀測到,那么我們應該以什么為標準來進行糾偏了。目前行業里面統一用大數統計維度的后驗CTR來作為糾偏標準,但是這里的后驗CTR統計是有技巧的,本文第三部分我們展開介紹。

二、CTR差異產生原因

在我們介紹CTR糾偏方法前,我們需要先了解預估CTR(Pctr)和真實CTR(Actr)之間的差異是怎么產生的。只有弄清楚差異產生原因才能更好地去調整模型和對結果進行糾偏。CTR差異一般有以下兩個原因:

1. 模型訓練中正負樣本有偏采樣導致的

CTR預估模型訓練時,我們一般以實際的點擊曝光日志來作為訓練樣本,曝光且點擊數據為正樣本,曝光未點擊數據為負樣本。但實際點擊數據會比較稀疏,點擊和未點擊的數據比例可能在1:100或1:1000。模型訓練時針對點擊數據,模型需要全量學習的。但是因為曝光未點擊數據量太大,實際訓練時我們會進行隨機采樣,控制正負樣本的比例在1:10左右。因為正負樣本比例和實際真實數據分布存在差異,最終模型對于CTR的預估會比較接近訓練數據集中正負樣本的分布,CTR平均值會在10%左右。

可能有讀者會疑惑,既然有偏采樣會導致CTR的差異,那么能不能不有偏采樣,直接使用全部數據來進行訓練。部分業務場景下是可以這么做的。但如果部分業務場景下負樣本數據過于龐大,導致模型訓練時間很長,算力消耗很大,這時候不得不丟棄一些負樣本。

2. 模型構建本身就不可能完美

除了有偏采樣,模型構建本身就不可能完美。無論是特征選擇還是神經網絡搭建,各個部分一定都會存在某些不完美的地方,最終模型預估出來的Pctr就會和真實點擊概率存在一定偏差。只有不同模型可能偏差大小不一樣,但是一定都會有偏差。

三、CTR糾偏的方法

那么實際工作中如何對CTR進行糾偏了?一般我們有以下兩大類方法:基于先驗知識的調整和后處理方法CTR校準,下面我們分別展開介紹。

1. 基于先驗知識的調整

針對已知可能導致CTR有偏的因素,在模型構建和訓練時就提前反向引入特征處理或者對損失函數進行調整,端到端來優化Pctr。這種方法在于我們得提前知道哪些因素可能會導致CTR有偏,不過我們即使做了基于先驗知識的調整,最終Pctr肯定還會存在偏差,因為模型不可能完美。因此也就引出下面第二種CTR糾偏的方法:后處理方法。

2. 后處理方法CTR校準

基于后處理方法的CTR校準,首先在系統架構上需要單獨加一個校準模塊,將CTR預估和CTR校準完全解耦開。此種方式更加靈活即插即用?;谙闰炛R的端到端的優化方式,整體周期太長,無法快速響應線上環境的劇烈變化,尤其是在大促期間線上環境變化非常頻繁,我們需要更加輕便靈敏的模型校準能力,此時后處理方法就很適合。

后處理方法都是基于后驗CTR來進行校準,前面也提到了單次真實點擊概率不可被觀測,那么我們只能使用后驗CTR來代替真實點擊概率進行校準。這里就衍生出一個新問題,如何去統計后驗CTR。讀者可能覺得這很簡單,直接統計推薦內容的點擊曝光次數然后進行計算。這種統計方法會導致單個內容的CTR是一個統一的值,原本不同用戶對于該內容的興趣度應該是不一樣的,但是現在變成了千人一面。我們需要統計后驗CTR,但是后驗CTR的統計卻很有技巧。

如何統計后驗CTR(Actr)

目前行業里通用的做法一般是以請求PV為基本維度,將各類特征相似的請求PV劃分為一個簇,然后統計該簇的后驗CTR作為所有劃分到該簇里面PV的真實點擊概率。這里我們認為特征相似的請求對應的用戶行為也會比較類似,CTR上的表現也會比較一致。按照特征相似性我們可以將請求分為K個簇,分別統計每個簇的CTR。K不能太大,否則單個簇里面的數據就會很稀疏,我們需要保證單個簇內的數據量是置信的,當數據小于某一個閾值時我們就需要進行簇之間的合并。

當我們統計出Actr后,我們就可以基于Actr進行Pctr的糾偏了。下面介紹行業里比較常見的兩種方法:

方法一:基于負樣本采樣率調整CTR

本文Part2里面提到預估CTR存在偏差一部分原因是因為正負樣本有偏采樣導致的,所以CTR校準中一種方法是基于負樣本采樣率來調整CTR。Facebook公開的論文《Practical Lessons from Predicting Clicks on Ads at Facebook》里面提到一種基于負采用率來進行CTR糾偏的計算公式,計算公式如下:

同時該論文還提到在Facebook的實際業務應用中負采樣率為0.025時效果最好。

方法二:保序回歸

保序回歸法目前是業界最常用的校準方法。常見的算法是保序回歸平滑校準算法(Smoothed Isotonic Regression,SIR)。整體執行步驟如下:

Step1—區間分桶

首先將Pctr值從小到大進行排序,然后按照區間分為K個桶。假設我們分為100個桶:(0,0.01], (0.01,0.02], (0.02,0.03],…, (0.99,1]。這里我們認為精排模型給出的Pctr值是具有參考意義的,同一個區間里的PV請求具有近似的真實點擊率,每一個區間可作為一個合理的校準維度(分簇維度)。然后實際應用時,我們再統計每一個桶里的后驗CTR值。比如今天線上一共有1000次預估的Pctr落在了桶 (0.02,0.03]之間,然后我們統計這1000個預估的后驗CTR,假設后驗CTR為0.23%。關于每個桶里Pctr和Actr平均值的計算公式如下:

Step2—桶間合并

如果說后驗CTR的值超出了對應分桶的PCTR取值區間怎么辦?假如原本分桶在(0.02,0.03]之間結果的后驗CTR為0.35%,這時已經進入到了下一個桶里了(0.03,0.04]。如果我們將原本Pctr在(0.02,0.03]桶里面的值往下一個桶里的區間值進行校準,這就破壞了原有桶之間的順序,保序回歸的基本邏輯是不能破壞原有Pctr的順序。此時我們需要把(0.02,0.03]和(0.03,0.04]桶進行合并得到新的桶(0.02,0.04],再重新對落入兩個桶里的數據進行后驗CTR統計,得到新桶里面的 Actr和Pctr平均值。我們以Pctr為x軸,Actr為y軸,最終得到一個如下圖所示單調遞增的散點圖:

Step3—桶間插值分段校準

我們需要基于上述散點圖去構造一個校準函數,輸入x值以后就可以輸出校準后的y值。如果直接擬合一個y = kx + b函數,最終預估的結果不夠平滑。目前業界的標準做法都是構造分段校準函數。

如上圖所示,我們將兩個桶之間坐標點連接起來,然后去構造一個分段的y = kx + b校準函數,假設Pctr一共分為了100個桶,那么最終就構造100個分段校準函數,這樣既保證單調性,又保證平滑地校準。分段的校準函數如何得出,這里就是基礎的初中數學知識,已知兩點坐標計算對應的y = kx + b。

保序回歸法的整體思想就是:不改變原有數據的Pctr排序,僅在原有Pctr的排序上進行糾偏。最終糾偏出來的CTR數據分布的單調性不變,AUC指標不變。

本身因為特征選擇和樣本采樣導致的CTR偏差,需要基于先驗知識的特征調整和基于負樣本采樣率的方法來對CTR進行糾偏。如果精排模型輸出的Pctr和Actr差異很大,這種是無法依靠校準模塊來進行糾偏的。

3. 校準評價指標

當我們使用上述的方法對CTR進行糾偏以后,我們使用什么指標來評估糾偏效果的好壞了?一般我們使用PCOC和Calibration-N兩大指標。

PCOC(Predict Click Over Click)

PCOC = Pctr / Actr

PCOC指標越接近于1,意味著CTR預估的越準確。PCOC > 1,則代表CTR被高估;PCOC < 1,則代表CTR被低估。但PCOC指標是統計所有PV的Pctr和Actr效果,這里面可能會存在一定的統計偏差。假設樣本里有50%PV的CTR被高估了,50%PV的CTR被低估了,最終二者匯總在一起時PCOC可能還是趨近于1。

Calibration-N

為了解決上述PCOC指標可能存在的統計偏差,我們使用一個新的指標Cal-N。首先將統計樣本分為幾個簇,然后按照簇分別去統計PCOC指標,再分別計算各個簇PCOC指標與標準值1之間的偏差,最后進行匯總。這種統計方式就可以避免單獨的PCOC指標里可能存在的統計偏差。

如何去將樣本分簇?其實這里的分簇方法和Part2.2里面如何分簇去統計后驗CTR的邏輯是一樣的,二者保持一致即可。

同時在廣告業務中,我們可以基于廣告主已經幫我們分好的簇進行統計。因為廣告業務中,整個廣告層級是分為:計劃 (Campaign)-單元(Group)-創意(Creative)。廣告主一般都是在整個計劃或單元維度觀察整個效果,所以我們在進行PCOC指標統計時,就可以將每個投放單元視為一個簇。

本文由 @King James 原創發布于人人都是產品經理。未經許可,禁止轉載。

題圖來自 Unsplash,基于 CC0 協議

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!