广告点击率常用模型的优点和缺点
?
LR
優點:
1. 是一個很好的baseline,效果不錯,當然因為效果不錯,所以后續的版本想超過它,真的還是很難的。
2. 實現簡單,有開源的工具可以直接用來訓練,在線的代碼也寫起來也比較容易
?
缺點:
1. 因為是線性模型,所以有選擇交叉特征的工作,這部分工作消耗大量的精力,但往往沒什么效果。一般都是wrapper方法選擇,每輪可能都要進行小時級的運算,理論上要進行2^n輪(n是特征數),但因為離線分析的指標和線上效果不一定是強相關的,所以分析起來更痛苦。更令人崩潰的是點擊率預估的數據變化是比較大的,離線選出來的特征,參數都不一定適用于未來。
2. 因為廣告位對點擊率有著決定性的影響,所以幾乎所有的特征都會交叉廣告位,這樣廣告位間的信息是無法共享的,比如廣告A在廣告位x上點擊率很高,但如果廣告A在廣告位y上沒有曝光過,那對廣告位y來講,廣告A是一個全新的廣告。
3. 實踐中交叉特征還會導致模型非常大,我們也使用了FTRL,但實踐中它并不能非常有效的產生稀疏模型,如果模型非常大,會導致同步模型變慢,一樣會嚴重影響效果。
4. 在線預測時,因為大量的特征都要與廣告ID交叉,所以在線拼裝特征的成本很高,性能可能也會成為問題。
?
GBDT+LR
GBDT+LR真有人實踐中搞成功了嗎?我好懷疑,聽過兩個分享都是沒有成功的例子。我沒信心試,歡迎打臉。
優點
它是一個很有意思的想法
缺點
1. 離線處理和在線處理都復雜。不同于比賽,在實踐中ID類特征還是非常重要的,廣告ID可能就有幾十萬個,深度怎么控制呢?把那么多棵樹丟到線上去,然后遍歷,拼裝特征,想想都難搞。
2. 要調的參數很多,人生苦短,為什么要搞這么多參數折磨自己。另外再重復一遍:在點擊率預估這個問題上,離線效果好往往只能說是模型基本沒問題,不能說上線后就效果好。
3. GDBT+LR本身是想解決特征選擇的問題,但現實中也沒那么多特征可以用吧?另外沒發現點擊率預估中如果特征本身沒問題,加上去一般都不會降效果嗎?
4. 性能問題怎么解決呢?如果GBDT+LR是不是只能batch方式訓練了?如果batch更新速度比FTRL會慢不少,效果又怎么保證呢?想不通。
FM
優點
1. 它可以自動學習兩個特征間的關系,可以減少一部分的交叉特征選擇工作,而且參數也不算多,調起來不會太痛苦。
2. 因為不需要輸入那么多的交叉特征,所以產生的模型相對LR的模型會小很多。
3. 在線計算時減小了交叉特征的拼裝,在線計算的速度基本和LR持平(雖然兩個向量的點積的計算看上去會導致計算量翻了幾倍)。
缺點
1. 無法學習三個及以上的特征間的關系,所以交叉特征選擇的工作仍然無法避免。
2. 雖然從原理上好像FM學習能力更強,但在實踐中超過LR的效果也要憑實力(運氣?)
3. 從功利的角度看,FM是非常不值得嘗試的,它的工作量沒比神經網絡小多少,在這個不說深度學習都好像不懂機器的環境下,用FM算法,所能得到的資源,支持和收獲,遠比不上神經網絡,所以建議做完LR后,就直接換神經網絡吧,別搞FM了。
神經網絡
優點
1. 可以直接輸入原始的特征,減少了交叉特征的選擇工作,并且可以支持大量的特征輸入,相比因為LR要考慮交叉特征,所以交叉特征比較多的時候,模型會非常大,可能會有一些工程問題。
2. 如果輸入的是原始特征,結構是用embedding layer + fc layer,產生的模型非常小,遠小于LR。
3. 在線計算因為使用是大量的用戶特征,所以一次請求中,用戶特片和第一層隱層之間的計算只用計算一次(這是運算量最大的一部分),只有廣告維度的特征需要計算多次(以及第一層隱層和之后的隱層也要多次計算),而廣告維度的embedding向量和第一層隱層的計算可以預先算好,并且在線完全沒有交叉特征的拼裝工作,所以在線計算速度還好,實測比LR速度竟然還快了。
4. 神經網絡對外宣傳效果會好很多,雖然大部分時間也沒什么必要搞神經網絡。
?
首先,gbdt具有非常好的非線性擬合能力,以及對超參數的魯棒性,因此在各種比賽中大量應用,堪稱王者。比較適用的特征形式是連續值特征,這樣的特征包含了足夠的信息量用以樹上各個分裂點的取值。但是,他也有明顯的問題,對于線上使用的話存在一些不足。由于依賴統計特征,特征的準備需要積累一定周期才有足夠置信度,故特征的實時性不太好。第二,特征準備環節多,對于線上效果迭代不利。第三,模型計算復雜度好,不能吞吐大規模樣本。第四,非常重要!拋開數據質量,單純從模型本身講,還是由于計算代價高導致特征數很快就會達到瓶頸,從而導致效果達到瓶頸。另外,如果實在想用的話,推薦xgboost,他可以吞吐稀疏數據,計算效率也做了優化,還可以使用spark上的包方便并行計算。
再說lr。線性模型,但是在業界廣泛使用。為什么呢?雖然模型本身表達能力差,但是可以通過特征工程不斷減少問題的非線性結構。又由于模型計算復雜度低,可以吞吐超大規模的特征空間和樣本集合,這樣就為效果優化打開了空間。同時,他可以學習id化特征,從而減少了特征工程的環節,可以提高特征的實時性。
把gbdt和lr結合確實是一個很美麗的故事。大家都在說怎么怎么好,但實際落地的真的少見。當然,也許是我孤陋寡聞,如果有請給大家科普下。首先通過經年累月的優化,很多應用其實人工特征工程已經做的不錯了,再把gbdt的encoding特征加進來可以表達能力有不小的overlap。兩者的結合就是一種組合模型的stacking,這種沒有反饋的組合對于效果的提升從理論上說不會比包含backproportion更合理。從線上系統考慮,兩個模型的stacking也會加重復雜度和增加latency。
fm是一種lr思路的擴展。在一階擬合的基礎上加入二階擬合,可以自動的學習任意兩維特征的交叉。而且,交叉是以embedding向量的形式表達。跟lr一樣,他可以吞吐超大規模的稀疏特征空間的樣本集合。這種形式可以比較好的提高模型的表達能力,把性能和學習非線性結構的能力結合在一起,有不少實際場景中有一些應用。
dnn是當下最火的方法。本質上講,該方法是通過前面多層的隱藏網絡學習抽象特征,在最后輸出層使用上述抽象得到的特征完成最終的學習任務。這種學習到的特征可以較好的降低問題的非線性程度。它的強大在于bp可以將目標函數的誤差回傳,逐層向輸入層的方向傳播從而矯正網絡參數,經過多次迭代,網絡參數會被修正的很好,這是多個模型簡單上下的stacking所不能比的。同時,對傳統的網絡輸入層進行改造,可適配大規模id化稀疏特征,將特征工程的難度大大降低,所以百度鳳巢已經解散了主模型的特征工程team。自己把自己的工作給close了也是蠻有意思,哈哈。由于數據驅動的模式學習到了人工特征工程難以學到的隱含特征,所以模型的表達能力會有明顯提升,線上效果會碾壓一般的模型。但是,由于模型學習的復雜性,很難直觀的解釋特征與效果的關系。另外,網絡結構,超參數的調參也是個技術與藝術的結合。簡單點說,回報是跟付出正相關的。
總結
以上是生活随笔為你收集整理的广告点击率常用模型的优点和缺点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最短路径问题:Dijkstra算法详解
- 下一篇: scala的foreach和for