CTR預估中GBDT與LR融合方案

1、 背景

CTR預估(Click-Through Rate Prediction)是互聯網計算廣告中的關鍵環節,預估準確性直接影響公司廣告收入。CTR預估中用的最多的模型是LR(Logistic Regression)[1],LR是廣義線性模型,與傳統線性模型相比,LR使用了Logit變換將函數值映射到0~1區間[2],映射后的函數值就是CTR的預估值。LR這種線性模型很容易并行化,處理上億條訓練樣本不是問題,但線性模型學習能力有限,需要大量特征工程預先分析出有效的特征、特征組合,從而去間接增強LR的非線性學習能力。

LR模型中的特征組合很關鍵, 但又無法直接通過特征笛卡爾積解決,只能依靠人工經驗,耗時耗力同時并不一定會帶來效果提升。如何自動發現有效的特征、特征組合,彌補人工經驗不足,縮短LR特征實驗周期,是亟需解決的問題。Facebook 2014年的文章介紹了通過GBDT(Gradient Boost Decision Tree)解決LR的特征組合問題[3],隨后Kaggle競賽也有實踐此思路[4][5],GBDT與LR融合開始引起了業界關注。

GBDT(Gradient Boost Decision Tree)是一種常用的非線性模型[6][7][8][9],它基于集成學習中的boosting思想[10],每次迭代都在減少殘差的梯度方向新建立一顆決策樹,迭代多少次就會生成多少顆決策樹。GBDT的思想使其具有天然優勢可以發現多種有區分性的特征以及特征組合,決策樹的路徑可以直接作為LR輸入特征使用,省去了人工尋找特征、特征組合的步驟。這種通過GBDT生成LR特征的方式(GBDT+LR),業界已有實踐(Facebook,Kaggle-2014),且效果不錯,是非常值得嘗試的思路。下圖1為使用GBDT+LR前后的特征實驗示意圖,融合前人工尋找有區分性特征(raw feature)、特征組合(cross feature),融合后直接通過黑盒子(Tree模型GBDT)進行特征、特種組合的自動發現。

圖1

2、 GBDT與LR融合現狀

GBDT與LR的融合方式,Facebook的paper有個例子如下圖2所示,圖中Tree1、Tree2為通過GBDT模型學出來的兩顆樹,x為一條輸入樣本,遍歷兩棵樹后,x樣本分別落到兩顆樹的葉子節點上,每個葉子節點對應LR一維特征,那么通過遍歷樹,就得到了該樣本對應的所有LR特征。由于樹的每條路徑,是通過最小化均方差等方法最終分割出來的有區分性路徑,根據該路徑得到的特征、特征組合都相對有區分性,效果理論上不會亞于人工經驗的處理方式。

圖2

GBDT模型的特點,非常適合用來挖掘有效的特征、特征組合。業界不僅GBDT+LR融合有實踐,GBDT+FM也有實踐,2014 Kaggle CTR競賽冠軍就是使用GBDT+FM,可見,使用GBDT融合其它模型是非常值得嘗試的思路[11]。

筆者調研了Facebook、Kaggle競賽關于GBDT建樹的細節,發現兩個關鍵點:采用ensemble決策樹而非單顆樹;建樹采用GBDT而非RF(Random Forests)。解讀如下:

1)為什么建樹采用ensemble決策樹?

一棵樹的表達能力很弱,不足以表達多個有區分性的特征組合,多棵樹的表達能力更強一些。GBDT每棵樹都在學習前面棵樹尚存的不足,迭代多少次就會生成多少顆樹。按paper以及Kaggle競賽中的GBDT+LR融合方式,多棵樹正好滿足LR每條訓練樣本可以通過GBDT映射成多個特征的需求。

2)為什么建樹采用GBDT而非RF?

RF也是多棵樹,但從效果上有實踐證明不如GBDT。且GBDT前面的樹,特征分裂主要體現對多數樣本有區分度的特征;后面的樹,主要體現的是經過前N顆樹,殘差仍然較大的少數樣本。優先選用在整體上有區分度的特征,再選用針對少數樣本有區分度的特征,思路更加合理,這應該也是用GBDT的原因。

然而,Facebook和Kaggle競賽的思路是否能直接滿足現在CTR預估場景呢?

按照Facebook、Kaggle競賽的思路,不加入廣告側的ADID特征?但是現CTR預估中,AD ID類特征是很重要的特征,故建樹時需要考慮AD ID。直接將AD ID加入到建樹的feature中?但是AD ID過多,直接將AD ID作為feature進行建樹不可行。下面第三部分將介紹針對現有CTR預估場景GBDT+LR的融合方案。

3、 GBDT與LR融合方案

AD ID類特征在CTR預估中是非常重要的特征,直接將AD ID作為feature進行建樹不可行,顧考慮為每個AD ID建GBDT樹。但互聯網時代長尾數據現象非常顯著,廣告也存在長尾現象,為了提升廣告整體投放效果,不得不考慮長尾廣告[12]。在GBDT建樹方案中,對于曝光充分訓練樣本充足的廣告,可以單獨建樹,發掘對單個廣告有區分度的特征,但對于曝光不充分樣本不充足的長尾廣告,無法單獨建樹,需要一種方案來解決長尾廣告的問題。

綜合考慮方案如下,使用GBDT建兩類樹,非ID建一類樹,ID建一類樹。1)非ID類樹:不以細粒度的ID建樹,此類樹作為base,即便曝光少的廣告、廣告主,仍可以通過此類樹得到有區分性的特征、特征組合。2)ID類樹:以細粒度的ID建一類樹,用于發現曝光充分的ID對應有區分性的特征、特征組合。

如何根據GBDT建的兩類樹,對原始特征進行映射?以如下圖3為例,當一條樣本x進來之后,遍歷兩類樹到葉子節點,得到的特征作為LR的輸入。當AD曝光不充分不足以訓練樹時,其它樹恰好作為補充。

圖3

通過GBDT 映射得到的特征空間維度如何?GBDT樹有多少個葉子節點,通過GBDT得到的特征空間就有多大。如下圖4一顆樹,一個葉子節點對應一種有區分性的特征、特征組合,對應LR的一維特征。這顆樹有8個葉子節點,即對應LR 的8維特征。估算一下,通過GBDT轉換得到的特征空間較低,Base樹、ID樹各N顆,特征空間維度最高為(N+N*廣告數+N*廣告主數+ N*廣告類目數)*葉子節點個數。其中廣告數、廣告主數、廣告類目數都是有限的,同時參考Kaggle競賽中樹的數目N最多為30,葉子節點個數小于10,則估算通過GBDT 映射得到的特征空間維度并不高,且并不是每個ID訓練樣本都足以訓練多顆樹,實際上通過GBDT 映射得到的特征空間維度更低。

圖4

如何使用GBDT 映射得到的特征?

通過GBDT生成的特征,可直接作為LR的特征使用,省去人工處理分析特征的環節,LR的輸入特征完全依賴于通過GBDT得到的特征。此思路已嘗試,通過實驗發現GBDT+LR在曝光充分的廣告上確實有效果,但整體效果需要權衡優化各類樹的使用。同時,也可考慮將GBDT生成特征與LR原有特征結合起來使用,待嘗試。

4、 總結與展望

點擊率預估模型涉及的訓練樣本一般是上億級別,樣本量大,模型常采用速度較快的LR。但LR是線性模型,學習能力有限,此時特征工程尤其重要。現有的特征工程實驗,主要集中在尋找到有區分度的特征、特征組合,折騰一圈未必會帶來效果提升。GBDT算法的特點正好可以用來發掘有區分度的特征、特征組合,減少特征工程中人力成本,且業界現在已有實踐,GBDT+LR、GBDT+FM等都是值得嘗試的思路。不同場景,GBDT融合LR/FM的思路可能會略有不同,可以多種角度嘗試。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容