摘要:
1.算法概述
2.算法要點與推導
3.算法特性及優缺點
4.注意事項
5.實現和具體例子
6.適用場合
內容:
1.算法概述
FTRL是一種適用於處理超大規模數據的,含大量稀疏特征的在線學習的常見優化算法,方便實用,而且效果很好,常用於更新在線的CTR預估模型;
FTRL
算法兼顧了FOBOS
和RDA
兩種算法的優勢,既能同FOBOS保證比較高的精度,又能在損失一定精度的情況下產生更好的稀疏性。
FTRL在處理帶非光滑正則項(如L1正則)的凸優化問題上表現非常出色,不僅可以通過L1正則控制模型的稀疏度,而且收斂速度快;
參考:[筆記]FTRL與Online Optimization
2.算法要點與推導
3.算法特性及優缺點
FTRL-Proximal工程實現上的tricks:
1.saving memory
方案1)Poisson Inclusion:對某一維度特征所來的訓練樣本,以p的概率接受並更新模型。
方案2)Bloom Filter Inclusion:用bloom filter從概率上做某一特征出現k次才更新。
2.浮點數重新編碼
1)特征權重不需要用32bit或64bit的浮點數存儲,存儲浪費空間
2)16bit encoding,但是要注意處理rounding技術對regret帶來的影響(注:python可以嘗試用numpy.float16格式)
3.訓練若干相似model
1)對同一份訓練數據序列,同時訓練多個相似的model
2)這些model有各自獨享的一些feature,也有一些共享的feature
3)出發點:有的特征維度可以是各個模型獨享的,而有的各個模型共享的特征,可以用同樣的數據訓練。
4.Single Value Structure
1)多個model公用一個feature存儲(例如放到cbase或redis中),各個model都更新這個共有的feature結構
2)對於某一個model,對於他所訓練的特征向量的某一維,直接計算一個迭代結果並與舊值做一個平均
5.使用正負樣本的數目來計算梯度的和(所有的model具有同樣的N和P)
6.subsampling Training Data
1)在實際中,CTR遠小於50%,所以正樣本更加有價值。通過對訓練數據集進行subsampling,可以大大減小訓練數據集的大小
2)正樣本全部采(至少有一個廣告被點擊的query數據),負樣本使用一個比例r采樣(完全沒有廣告被點擊的query數據)。但是直接在這種采樣上進行訓練,會導致比較大的biased prediction
3)解決辦法:訓練的時候,對樣本再乘一個權重。權重直接乘到loss上面,從而梯度也會乘以這個權重。
算法特點:
在線學習,實時性高;可以處理大規模稀疏數據;有大規模模型參數訓練能力;根據不同的特征特征學習率
缺點:
4.注意事項
5.實現和具體例子
FTRL處理“Springleaf Marketing Response”數據
6.適用場合
點擊率模型