#Paper Reading# Ad Click Prediction: a View from the Trenches

论文题目: Ad Click Prediction: a View from the Trenches
论文地址: https://dl.acm.org/citation.cfm?id=2488200
论文发表于: KDD 2013(CCF A类会议)

论文大体内容:
本文主要介绍了FTRL模型的工程实现,并且作者尝试的多个trick。这也是LR模型处理大规模数据下,所发展出来的优化模型FTRL。里面的介绍,更多是工程化的trick,是FTRL模型推广的重要文章。

1. FTRL-Proximal(Follow-the-regularized-Leader) online learning algorithm是结合了FOBOS的精度和RDA的稀疏性,用于提升CTR任务的效果。基本思想见下图[1];
#Paper Reading# Ad Click Prediction: a View from the Trenches

2. 实现伪代码如下;
#Paper Reading# Ad Click Prediction: a View from the Trenches

工程Trick
3. 样本生成中省内存的2项方法:
①泊松过程:以p的概率决定是否增加一个新的特征;
②Bloom过滤器:特征出现了n次后,才放进模型中;(效果更好)
#Paper Reading# Ad Click Prediction: a View from the Trenches

4. 由于作者注意到w一般范围是(-2,+2),所以用64位double存储w就太浪费了,这里使用1bit存储正负号,2bit存储整数部分,13bit存储小数部分。64位变16位,节省75%内存,效果没有下降。
#Paper Reading# Ad Click Prediction: a View from the Trenches

5. 训练多份相似的model,各自共享/独享feature;

6. 多model共用一份feature存储;

7. 用正负样本数量来近似计算梯度的和;
#Paper Reading# Ad Click Prediction: a View from the Trenches

8. 采样同时不改变样本分布;
正样本采样率100%,负样本采样率r,同时为了不改变样本分布,加weight到loss中,提升负样本的权重;
#Paper Reading# Ad Click Prediction: a View from the Trenches

不成功的尝试
9. 特征Hash
使用hash的trick,来降低整体的内存空间,但是效果并不好;

10. Dropout
使用Dropout,但是没取得很好的泛化效果,效果负向。作者说可能是因为dropout更适合用于dense feature,而在稀疏特征下,Dropout反而使得一些强相关的特征被分别对待;

11. 多个相似模型之间进行均值融合(bagging),但是实验效果负向;

12. 特征向量归一化
这种做法会影响学习速率和正则化,效果也是负向;


参考资料: 
[1] https://www.cnblogs.com/EE-NovRain/p/3810737.html
[2] http://www.datakit.cn/blog/2016/05/11/ftrl.html


以上均为个人见解,因本人水平有限,如发现有所错漏,敬请指出,谢谢!