Google在KDD2013上關於CTR的一篇論文


最近在做CTR,剛好Google在KDD發了一篇文章,講了他們的一些嘗試,總結一下:

先是一些公式的符號說明:

image

一、優化算法

CTR中經常用Logistic regression進行訓練,一個常用的Loss Function為

image

Online gradient descent(OGD)是一個常用的優化方法,但是在加上L1正則化后,這種方法不能產生有效的稀疏模型。相比之下 Regularized Dual Averaging (RDA)擁有更好的稀疏性,但是精度不如OGD好。

FTRL-Proximal 方法可以同時得到稀疏性與精確性,不同於OGD的迭代步驟:

image

其中$\eta_t$是一個非增的學習率

FTRL-Proximal通過下式迭代:

image

 

其中參數 $\sigma_s$ 是學習率,一般我們有 $\sum_{s=1}^t\sigma_s=\frac{1}{\eta_t}$ 。

更新公式:

image

算法如下:

image

這里多個一個 $\lambda_2$ 是一個L2正則化參數。

二、學習率

$\displaystyle \eta_t=\frac{1}{\sqrt{t}}$

由於在求解時,這樣,對每一個坐標我們都使用了同樣的參數,這樣一些沒有使用的坐標的參數也會下降,顯然這不太合理。

一個近似最優的選擇是:

imageg是梯度向量

 

三、存儲空間

1.特征選擇

在CTR中,跟多特征僅僅出現了一次(In fact, in some of our models, half the unique features occur only once in the entire training set of billions of examples),這樣特征幾乎沒有什么用,但是存儲起來非常浪費空間。L1正則化雖然解決了一些問題,但是這樣降低了一些精度,因此另一個選擇是

probabilistic feature inclusion,這種方法中,一個特征第一次出現時,會以一定的概率被保存使用。關於這個概率Google嘗試了兩種方法:

  Poisson Inclusion:以概率p增加特征,這樣一般特征被加入就需要出現1/p次

  Bloom Filter Inclusion:用一系列的Bloom flters來檢測特征的前n次出現,一旦檢測到出現了n次(因為BF有沖突,所以實際可能少於n),就加入模型並用在后面的訓練中。

2.系數編碼

因為大部分系數都在-2和2之間,因此使用了定點的q2.13編碼,同時也保證了小數的一些精度。編碼包括一位的符號,2位的整數和13位的小數。

因此誤差可能在OGD算法中發散,因此使用了一個簡單的隨機取整策略:

imageR是一個0到1的隨機整數。

3.多個相似模型的訓練

在測試一些超參數的影響時,同時訓練多個模型非常有用。觀察發現,有些數據可以被多個模型共用,但是另外一些(如系數)不能,如果把模型的系數存在一個HASH表里,就可以讓多個變體同時使用這些參數,比如學習率。

4.單值結構

有時我們想訓練一些模型,他們之間只是刪除或增加了一些特征。單值特征為每一個特征存了一個權重,權重被所有有該特征的模型共享,學習方法如下:

在OGD更新中,每個模型用他自己的的那部分特征計算一個Loss, 然后對每一個特征,每一個模型計算一個新的系數,最后把所有值平均后存為單值。該單值下一步被所有模型使用。

5.計數與梯度

假設所有事件包括統一特征的概率相同(一個粗糙但是有效的估計),其中出現了P次,沒有出現N次,那么出現的概率就是p=P/(N+P),那么在logistic regression中,正事件的導數是p-1,負事件p,梯度的平方和就是:

image

 

6.采樣訓練數據:

CTR中的負樣本遠高與正樣本,因此采樣的數據包括滿足所有的正樣本和部分負樣本:

image

在訓練中給正樣本1的權重,負樣本1/r的權重以避免模型結果出錯。權重乘如Loss Function對應項中。

 

image

image

四、模型評價1

1.進度驗證(Progressive Validation)

因為計算梯度的同時需要計算預測值,因此可以收集這些值。在線的loss反映了算法的表現---他度量了訓練一個數據前得到的預測結果。這樣也使得所有數據被同時作用訓練集和測試集使用。

2.可視化加強理解

image

 

上圖對query進行了切片后,將兩個模型與一個控制模型模型進行了比較。度量用顏色表示,每行是一個模型,每列是一個切片。

五、置信估計

image

六、預測矯正

矯正的數據imagep是模型預測的CTR,d是一些訓練數據。

一個常用矯正:image

兩個參數可以用Poisson regression在數據上訓練。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM