推薦系統中使用ctr預估模型的發展

一. 什麼是ctr?

ctr即廣告點擊率,在推薦系統中,通常是按照ctr來對召回的內容子集進行排序,然後再結合策略進行內容的分發。

二. ctr預估模型的發展。

ctr預估模型的公式:y = f(x), y的範圍爲[0,1],表示廣告被點擊的概率。

1. LR 海量高緯離散特徵

LR(logistics regression),是ctr預估模型的最基本的模型,也是工業界最喜愛使用的方案。LR的介紹這裏就不細說了,介紹的教程隨便一搜一大堆。

這裏寫圖片描述

LR的優勢在於處理離散化特徵,而且模型十分簡單,很容易實現分佈式計算。關於LR的變種也有許多,比如Google的FTRL,其實這些變種都可以看成:LR+正則化+特定優化方法。

LR的缺點也很明顯,特徵與特徵之間在模型中是獨立的,對於一些存在交叉可能性的特徵(比如: 衣服類型與性別,這兩個特徵交叉很有意義),需要進行大量的人工特徵工程進行交叉。雖然模型簡單了,但是人工的工作卻繁重了很多。而且LR需要將特徵進行離散化,歸一化,在離散化過程中也可能出現邊界問題。這裏便爲GBDT+LR的方案進行了鋪墊。

2. GBDT

GBDT,即梯度提升決策樹,是一種表達能力比較強的非線性模型。具體模型的介紹,也可以google出一堆教程。所以這裏就不做詳細的推導了。
這裏寫圖片描述
GBDT的優勢在於處理連續值特徵,比如用戶歷史點擊率,用戶歷史瀏覽次數等連續值特徵。而且由於樹的分裂算法,它具有一定的組合特徵的能力,模型的表達能力要比LR強。GBDT對特徵的數值線性變化不敏感,它會按照目標函數,自動選擇最優的分裂特徵和該特徵的最優分裂點,而且根據特徵的分裂次數,還可以得到一個特徵的重要性排序。所以,使用GBDT減少人工特徵工程的工作量和進行特徵篩選。

GBDT善於處理連續值特徵,但是推薦系統的絕大多數場景中,出現的都是大規模離散化特徵,如果我們需要使用GBDT的話,則需要將很多特徵統計成連續值特徵(或者embedding),這裏可能需要耗費比較多的時間。同時,因爲GBDT模型特點,它具有很強的記憶行爲,不利於挖掘長尾特徵,而且GBDT雖然具備一定的組合特徵的能力,但是組合的能力十分有限,遠不能與dnn相比。

3. FM 與 FFM

在LR部分,我們提及到了LR不能自動處理交叉特徵。而FM則是在這個基礎上進改進。

FM的模型公式爲:
這裏寫圖片描述
在邏輯斯特函數裏面的公式可以看成兩部分,一部分是我們所熟悉的線性迴歸函數,而第二部分則是二次交叉項。所以FM處理特徵間二次交叉的能力。

但是二次項權重 w_{ij} 需要我們去存儲一個二維矩陣的變量,而因爲特徵是大規模離散的,這個二維矩陣的維度可能很大。而FM的作者利用矩陣分解的原理,將這個權重矩陣進行分解,即這裏寫圖片描述

則FM的公式變爲:
這裏寫圖片描述
但是這裏,對於特徵 x_{i},x_{j},x_{h} , x_{i} 與 x_{j} , x_{i} 與 x_{h} ,都是使用 v_{i} 去和 v_{j} 、 v_{h} 做內積。但是對於不同的特徵組合,比如天氣與地點,天氣與性別,關聯的程度是不一樣的,都使用同樣的向量去與不同的特徵做內積,會帶來明顯的信息損失。所以引出了FFM(field FM)。

FFM的模型公式爲:
這裏寫圖片描述
這裏可能對FM的原理沒有闡述得十分清楚。這篇文章裏面具體闡述了FM與FFM。

FM的優點相對於LR在於擁有處理二次交叉特徵的能力,而且它是可以實現線性的時間複雜度的(具體看美團的文章),模型訓練也十分快。

而FFM則是在FM的基礎上,考慮了特徵交叉的field的特點,但是也導致它沒有辦法實現線性的時間複雜度,模型訓練要比FM慢一個量級,但是效果會比FM來得更好。

4. GBDT+(LR, FM, FFM)

前面提及到了GBDT適合處理連續值特徵,而LR,FM,FFM更加適合處理離散化特徵。GBDT可以做到一定程度的特徵組合,而且GBDT的特徵組合是多次組合的,不僅僅是FM與FFM這樣的二階組合而已。同時,GBDT具備一定的特徵選擇能力(選擇最優的特徵進行分裂)。

在facebook 2014年的一篇論文中,提及到GBDT+LR的解決方案。即先使用GBDT對一些稠密的特徵進行特徵選擇,得到的葉子節點,再拼接離散化特徵放進去LR進行訓練。在方案可以看成,利用GBDT替代人工實現連續值特徵的離散化,而且同時在一定程度組合了特徵,可以改善人工離散化中可能出現的邊界問題,也減少了人工的工作量。

而kaggle的ctr預估比賽中,臺大的團隊參考fb,使用了gbdt+ffm的方案奪冠。

此時GBDT+LR模型的公式爲:
這裏寫圖片描述

5. MLR

MLR是由阿里團隊提出的一種非線性模型。它等價於聚類+LR的形式。
這裏寫圖片描述
相當於將X進行聚類,聚成m類,然後每一個聚類單獨訓練一個LR。

MLR相對於LR擁有更好的非線性表達能力,算是LR的一種拓展。

但是MLR與LR一樣,也需要較大的特徵工程處理,而且這個模型本身屬於非凸模型,需要預訓練,可能出現不收斂的情況。

6.dnn

1 . dnn的優勢

在前面的篇章中,提及到了ctr預估的場景中,絕大多數的特徵都是大規模離散化的特徵,而且交叉類的特徵十分重要,如果利用簡單的模型(比如LR),需要做大量的人工特徵工程,任務繁重。哪怕是GBDT,FM等具有一定交叉特徵能力的模型,也是交叉的能力十分有限,也脫離不了特徵工程。

而dnn類的模型擁有很強的模型表達能力,而且其結構也是“看上去”天然具有特徵交叉的能力。利用基於dnn的模型做ctr問題主要有兩個優勢:

  1. 模型表達能力強,能夠學習出高階非線性特徵。

  2. 容易擴充其他類別的特徵,比如在特徵擁有圖片,文字類特徵的時候。

2. ctr預估問題中dnn模型的主要架構

這裏寫圖片描述

Fig.1

ctr預估問題中dnn模型的主要架構如上圖Fig.1所示。基本上目前已有的dnn模型基本都是和這個框架類似,只是stack layer的方法不一樣,有無shallow part,或者shallow part異同(lr or fm等部分)。
這裏寫圖片描述

Fig.2 deep and wide model

以其中比較具有代表性的deep & wide爲例,此時shallow part爲:lr,stack layer則爲:concatenate(拼接embedding後的向量)
這裏寫圖片描述

Fig.3 deepFM model

而以deepFM爲例的話,則shallow part爲:fm, stack layer也一樣是concatenate。
這裏寫圖片描述

Fig.4 NFM model

以NFM例的話,shallow part爲:lr(Fig 4只顯示了deep part),而stack layer則爲Bi-interaction,實際上就是先做向量的內積(與FM類似,但沒有累加),然後再做累加。

其他模型也是與這些模型類似。其實dnn做ctr問題,關鍵的部分無非三部分,1. 是否保留淺層模型 (存在不保留shallow part的model,比如FNN,PNN)

  1. 如何體現特徵交叉性,即stack layer的做法是什麼。concatenate?Bi-interaction?直接向量加法?。。。等等

  2. embedding + fc(全連接層)是基本標配。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章