策略產(chǎn)品經(jīng)理必讀系列—搜廣推業(yè)務(wù)中如何對預估CTR進行校準
搜廣推三大業(yè)務(wù)場景中都需要CTR預估模型,并基于模型預估的Pctr對內(nèi)容進行排序。但我們又該在搜廣推業(yè)務(wù)中如何對預估CTR進行校準?本文作者總結(jié)了相關(guān)流程,希望對你有所幫助。
一、CTR預估的保序與保距
搜廣推三大業(yè)務(wù)場景中都需要CTR預估模型,基于模型預估的Pctr(Predicted CTR)對內(nèi)容進行排序。但不知道各位讀者有沒有思考過一個問題:用戶對于某個內(nèi)容的單次點擊概率真的是可以被預估的嘛?
因為在現(xiàn)實生活中,用戶對于內(nèi)容的興趣度最終反饋的結(jié)果只有“點擊”和“不點擊”,并沒有反饋是在多大概率的情況下點擊的。實際工作中我們統(tǒng)計的Actr(Actual CTR),并不是單次的的CTR,而是在大數(shù)統(tǒng)計的維度上,將該內(nèi)容曝光給大量用戶以后,統(tǒng)計了所有用戶對該內(nèi)容的點擊情況,然后得到的一個CTR大數(shù)統(tǒng)計值。
無法構(gòu)建一個CTR預估回歸模型,只能退而求其次構(gòu)建一個二分類模型。
實際情況導致在CTR預估中,我們無法構(gòu)建一個回歸模型去擬合用戶對于每個物料的預估CTR,只能通過用戶實際反饋的“點擊”和“不點擊”來構(gòu)建一個二分類模型,然后將分類模型對于正樣本的概率預估值近似地視為CTR預估值。
我們在對CTR預估模型做離線評估時,針對CTR預估模型主要看的是AUC指標,AUC指標是衡量模型的排序能力,是模型將正樣本排序在負樣本前的概率。如果該場景僅僅只是使用CTR預估模型返回的Pctr來對內(nèi)容進行排序,那么CTR預估模型只要能保證順序的準確性即可,也就是保序能力,具體Pctr和真實點擊率之間絕對值的差異有多大,其實影響不大。
但目前搜廣推三大業(yè)務(wù)場景中,實際都用到了Pctr的絕對值。在搜推業(yè)務(wù)的排序公式中,Pctr是作為一個排序因子。而在廣告業(yè)務(wù)中Pctr的準確性將直接影響廣告收益。
如上圖所示,模型1和模型2分別對A、B、C三個不同的內(nèi)容進行CTR預估并進行排序,雖然模型1和模型2對于內(nèi)容的排序順序都是正確的,但是很明顯模型2預估的Pctr和內(nèi)容實際的Actr更接近。如果從離線AUC指標上來說模型1和模型2的AUC是完全一樣的,但很明顯模型2的預估效果是要優(yōu)于模型1的。如果模型本身只是將內(nèi)容進行排序,那么模型1和模型2達到的效果是一樣的,但是在廣告業(yè)務(wù)中確不是。
如上圖所示,在廣告業(yè)務(wù)中以點擊來進行扣費,假設(shè)內(nèi)容A、B和C分別對應的點擊收益是2元、3元、4元。廣告業(yè)務(wù)中的物料排序是以eCPM來排序,eCPM = CTR * Bid(出價)* 1000。 如果以Actr為準,實際廣告收益應該是B > A > C,這也是最終的理想排序。模型2的排序結(jié)果就是和理想排序一致的,但是模型1的排序結(jié)果是C > B > A。雖然模型1和模型2對于物料的CTR預估排序順序是一樣的,都是A > B > C。但是實際應用時結(jié)合了其他業(yè)務(wù)指標后,模型1的效果就不如模型2了,根本原因還是模型1對于CTR的預估和實際后驗CTR之間的差距太大。
所以模型在進行CTR預估時,不僅僅要保序還需要保距。 既要保證排序的準確性,又要保證具有一定區(qū)分度,且區(qū)分度最好要無限接近真實水平之間的差異值。
但是實際CTR模型預估時總會和真實的概率值存在一定偏差,所以目前在互聯(lián)網(wǎng)公司搜廣推業(yè)務(wù)里都會有CTR糾偏模塊,專門去對CTR預估模型給出的Pctr值進行再一次糾偏。糾偏技術(shù)的目標就是將用戶行為的預估值盡可能逼近真實概率值。這里讀者可能會疑問,上文介紹單次真實點擊概率是沒法被觀測到,那么我們應該以什么為標準來進行糾偏了。目前行業(yè)里面統(tǒng)一用大數(shù)統(tǒng)計維度的后驗CTR來作為糾偏標準,但是這里的后驗CTR統(tǒng)計是有技巧的,本文第三部分我們展開介紹。
二、CTR差異產(chǎn)生原因
在我們介紹CTR糾偏方法前,我們需要先了解預估CTR(Pctr)和真實CTR(Actr)之間的差異是怎么產(chǎn)生的。只有弄清楚差異產(chǎn)生原因才能更好地去調(diào)整模型和對結(jié)果進行糾偏。CTR差異一般有以下兩個原因:
1. 模型訓練中正負樣本有偏采樣導致的
CTR預估模型訓練時,我們一般以實際的點擊曝光日志來作為訓練樣本,曝光且點擊數(shù)據(jù)為正樣本,曝光未點擊數(shù)據(jù)為負樣本。但實際點擊數(shù)據(jù)會比較稀疏,點擊和未點擊的數(shù)據(jù)比例可能在1:100或1:1000。模型訓練時針對點擊數(shù)據(jù),模型需要全量學習的。但是因為曝光未點擊數(shù)據(jù)量太大,實際訓練時我們會進行隨機采樣,控制正負樣本的比例在1:10左右。因為正負樣本比例和實際真實數(shù)據(jù)分布存在差異,最終模型對于CTR的預估會比較接近訓練數(shù)據(jù)集中正負樣本的分布,CTR平均值會在10%左右。
可能有讀者會疑惑,既然有偏采樣會導致CTR的差異,那么能不能不有偏采樣,直接使用全部數(shù)據(jù)來進行訓練。部分業(yè)務(wù)場景下是可以這么做的。但如果部分業(yè)務(wù)場景下負樣本數(shù)據(jù)過于龐大,導致模型訓練時間很長,算力消耗很大,這時候不得不丟棄一些負樣本。
2. 模型構(gòu)建本身就不可能完美
除了有偏采樣,模型構(gòu)建本身就不可能完美。無論是特征選擇還是神經(jīng)網(wǎng)絡(luò)搭建,各個部分一定都會存在某些不完美的地方,最終模型預估出來的Pctr就會和真實點擊概率存在一定偏差。只有不同模型可能偏差大小不一樣,但是一定都會有偏差。
三、CTR糾偏的方法
那么實際工作中如何對CTR進行糾偏了?一般我們有以下兩大類方法:基于先驗知識的調(diào)整和后處理方法CTR校準,下面我們分別展開介紹。
1. 基于先驗知識的調(diào)整
針對已知可能導致CTR有偏的因素,在模型構(gòu)建和訓練時就提前反向引入特征處理或者對損失函數(shù)進行調(diào)整,端到端來優(yōu)化Pctr。這種方法在于我們得提前知道哪些因素可能會導致CTR有偏,不過我們即使做了基于先驗知識的調(diào)整,最終Pctr肯定還會存在偏差,因為模型不可能完美。因此也就引出下面第二種CTR糾偏的方法:后處理方法。
2. 后處理方法CTR校準
基于后處理方法的CTR校準,首先在系統(tǒng)架構(gòu)上需要單獨加一個校準模塊,將CTR預估和CTR校準完全解耦開。此種方式更加靈活即插即用?;谙闰炛R的端到端的優(yōu)化方式,整體周期太長,無法快速響應線上環(huán)境的劇烈變化,尤其是在大促期間線上環(huán)境變化非常頻繁,我們需要更加輕便靈敏的模型校準能力,此時后處理方法就很適合。
后處理方法都是基于后驗CTR來進行校準,前面也提到了單次真實點擊概率不可被觀測,那么我們只能使用后驗CTR來代替真實點擊概率進行校準。這里就衍生出一個新問題,如何去統(tǒng)計后驗CTR。讀者可能覺得這很簡單,直接統(tǒng)計推薦內(nèi)容的點擊曝光次數(shù)然后進行計算。這種統(tǒng)計方法會導致單個內(nèi)容的CTR是一個統(tǒng)一的值,原本不同用戶對于該內(nèi)容的興趣度應該是不一樣的,但是現(xiàn)在變成了千人一面。我們需要統(tǒng)計后驗CTR,但是后驗CTR的統(tǒng)計卻很有技巧。
如何統(tǒng)計后驗CTR(Actr)
目前行業(yè)里通用的做法一般是以請求PV為基本維度,將各類特征相似的請求PV劃分為一個簇,然后統(tǒng)計該簇的后驗CTR作為所有劃分到該簇里面PV的真實點擊概率。這里我們認為特征相似的請求對應的用戶行為也會比較類似,CTR上的表現(xiàn)也會比較一致。按照特征相似性我們可以將請求分為K個簇,分別統(tǒng)計每個簇的CTR。K不能太大,否則單個簇里面的數(shù)據(jù)就會很稀疏,我們需要保證單個簇內(nèi)的數(shù)據(jù)量是置信的,當數(shù)據(jù)小于某一個閾值時我們就需要進行簇之間的合并。
當我們統(tǒng)計出Actr后,我們就可以基于Actr進行Pctr的糾偏了。下面介紹行業(yè)里比較常見的兩種方法:
方法一:基于負樣本采樣率調(diào)整CTR
本文Part2里面提到預估CTR存在偏差一部分原因是因為正負樣本有偏采樣導致的,所以CTR校準中一種方法是基于負樣本采樣率來調(diào)整CTR。Facebook公開的論文《Practical Lessons from Predicting Clicks on Ads at Facebook》里面提到一種基于負采用率來進行CTR糾偏的計算公式,計算公式如下:
同時該論文還提到在Facebook的實際業(yè)務(wù)應用中負采樣率為0.025時效果最好。
方法二:保序回歸
保序回歸法目前是業(yè)界最常用的校準方法。常見的算法是保序回歸平滑校準算法(Smoothed Isotonic Regression,SIR)。整體執(zhí)行步驟如下:
Step1—區(qū)間分桶
首先將Pctr值從小到大進行排序,然后按照區(qū)間分為K個桶。假設(shè)我們分為100個桶:(0,0.01], (0.01,0.02], (0.02,0.03],…, (0.99,1]。這里我們認為精排模型給出的Pctr值是具有參考意義的,同一個區(qū)間里的PV請求具有近似的真實點擊率,每一個區(qū)間可作為一個合理的校準維度(分簇維度)。然后實際應用時,我們再統(tǒng)計每一個桶里的后驗CTR值。比如今天線上一共有1000次預估的Pctr落在了桶 (0.02,0.03]之間,然后我們統(tǒng)計這1000個預估的后驗CTR,假設(shè)后驗CTR為0.23%。關(guān)于每個桶里Pctr和Actr平均值的計算公式如下:
Step2—桶間合并
如果說后驗CTR的值超出了對應分桶的PCTR取值區(qū)間怎么辦?假如原本分桶在(0.02,0.03]之間結(jié)果的后驗CTR為0.35%,這時已經(jīng)進入到了下一個桶里了(0.03,0.04]。如果我們將原本Pctr在(0.02,0.03]桶里面的值往下一個桶里的區(qū)間值進行校準,這就破壞了原有桶之間的順序,保序回歸的基本邏輯是不能破壞原有Pctr的順序。此時我們需要把(0.02,0.03]和(0.03,0.04]桶進行合并得到新的桶(0.02,0.04],再重新對落入兩個桶里的數(shù)據(jù)進行后驗CTR統(tǒng)計,得到新桶里面的 Actr和Pctr平均值。我們以Pctr為x軸,Actr為y軸,最終得到一個如下圖所示單調(diào)遞增的散點圖:
Step3—桶間插值分段校準
我們需要基于上述散點圖去構(gòu)造一個校準函數(shù),輸入x值以后就可以輸出校準后的y值。如果直接擬合一個y = kx + b函數(shù),最終預估的結(jié)果不夠平滑。目前業(yè)界的標準做法都是構(gòu)造分段校準函數(shù)。
如上圖所示,我們將兩個桶之間坐標點連接起來,然后去構(gòu)造一個分段的y = kx + b校準函數(shù),假設(shè)Pctr一共分為了100個桶,那么最終就構(gòu)造100個分段校準函數(shù),這樣既保證單調(diào)性,又保證平滑地校準。分段的校準函數(shù)如何得出,這里就是基礎(chǔ)的初中數(shù)學知識,已知兩點坐標計算對應的y = kx + b。
保序回歸法的整體思想就是:不改變原有數(shù)據(jù)的Pctr排序,僅在原有Pctr的排序上進行糾偏。最終糾偏出來的CTR數(shù)據(jù)分布的單調(diào)性不變,AUC指標不變。
本身因為特征選擇和樣本采樣導致的CTR偏差,需要基于先驗知識的特征調(diào)整和基于負樣本采樣率的方法來對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指標是統(tǒng)計所有PV的Pctr和Actr效果,這里面可能會存在一定的統(tǒng)計偏差。假設(shè)樣本里有50%PV的CTR被高估了,50%PV的CTR被低估了,最終二者匯總在一起時PCOC可能還是趨近于1。
Calibration-N
為了解決上述PCOC指標可能存在的統(tǒng)計偏差,我們使用一個新的指標Cal-N。首先將統(tǒng)計樣本分為幾個簇,然后按照簇分別去統(tǒng)計PCOC指標,再分別計算各個簇PCOC指標與標準值1之間的偏差,最后進行匯總。這種統(tǒng)計方式就可以避免單獨的PCOC指標里可能存在的統(tǒng)計偏差。
如何去將樣本分簇?其實這里的分簇方法和Part2.2里面如何分簇去統(tǒng)計后驗CTR的邏輯是一樣的,二者保持一致即可。
同時在廣告業(yè)務(wù)中,我們可以基于廣告主已經(jīng)幫我們分好的簇進行統(tǒng)計。因為廣告業(yè)務(wù)中,整個廣告層級是分為:計劃 (Campaign)-單元(Group)-創(chuàng)意(Creative)。廣告主一般都是在整個計劃或單元維度觀察整個效果,所以我們在進行PCOC指標統(tǒng)計時,就可以將每個投放單元視為一個簇。
本文由 @King James 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于 CC0 協(xié)議
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。
- 目前還沒評論,等你發(fā)揮!