计算广告是门综合的学科,其中CTR预估是技术人员最关注的核心技术。CTR不仅用在点击率预估,现在在推荐系统的rank等场景中也有广泛的应用。本文整理了学习CTR相关资源,希望从这些资源中认识在做CTR、rank的核心问题。
由于每一部分在网上都有比较完整的介绍资源,所以本文并不具体展开介绍,但会给出对应部分的原始论文或优秀资料。
通过对目标函数求导,并令其等于0,进行求解
例子:最小二乘法的求解
通过朗格朗日乘数法,把等式约束转为无约束优化问题
使用KKT条件,将等式约束、不等式约束与目标函数合并为新的函数。KKT条件是求解最优值的必要条件,要成为充要条件是目标函数为凸函数。
KKT条件的推导需要用到原问题的对偶问题。
函数并非光滑或处处可微时,则可以求次梯度。
凸函数的次梯度一定存在。若函数 f 在点 x 处可微,则次梯度为函数在该点的梯度,且唯一;若不可微,则不唯一。
例子: f(x)=|x| 在 x=0 处的次微分
有一篇文章总结得非常好:
An overview of gradient descent optimization algorithms
加了正则项的目标函数一般为以下的形式:
L1正则项相对L2能产生更加稀疏的解,所以在特征数量较多时最常使用L1正则项。但在在线学习的问题中,参数根据每次来的样本产生的梯度进行更新,并非全局的梯度,所以即使采用L1正则项,也很难产生稀疏解。
说到在线学习,国内的冯扬写过一篇非常好的文章,从模型的稀疏性为主线,介绍不同时期在线学习算法的演进。
在线最优化求解(Online Optimization)
在线最优化求解
- 简单截断法
- Truncated Gradient 截断梯度法
- FOBOS
- RDA
- FTRL——重点关注算法:在稀疏性与高精度之间的权衡
FTRL本质上是FTL(Follow The Leader)算法,只是在FTL上加了正则项。
在做特征工程的过程中,特征与特征的关系往往不是孤立的,这个时候就需要考虑特征之间的交叉关系。
论文:Factorization Machines
论文:Field-aware Factorization Machines for CTR Prediction
FFM在FM的基础上,每维特征 xi 再加上其他特征属于哪种field, fj ,所以表达式为:
论文:Greedy Function Approximation: A Gradient Boosting Machine
个人觉得另一个名称MART(Multiple Additive Regression Tree)也挺贴切,因为GBDT是用回归树在拟合,这两个名称从两个不同的角度在描述这个模型。
Facebook在2014年的论文中,将训练完GBDT的叶子节点对应为LR的每一维特征,由于GBDT从根节点到叶子节点的路径,每个分割节点都是选择使得平方损失误差达到最小的节点和分割点,所以该条路径上特征的组合具有一定的区分性。GBDT的叶子节点可以作为LR或者FM的输入。
论文:Practical Lessons from Predicting Clicks on Ads at Facebook
在做特征预处理时候,针对categorical类型特征,最常用的做法是转为One-hot encoding的形式,这种做法最为简单,但会使得训练时特征维度非常大。这跟NLP中的词的向量化表示一样,有维度太高的问题。而现在NLP最常用的做法是为每个词训练词向量(Embedding),训练完成后在使用时,再从表里面找到词对应的词向量。
所以在对categorical特征做处理时一种解决的思路是,训练低维稠密的向量。
Google在Wide & Deep Learning for Recommender Systems文章中,将模型分为Wide和Deep部分,Wide部分是线性模型,特征包括原始的非categorical特征和经过组合的特征,Deep部分使用DNN模型训练categorical特征向量,最后将Wide和Deep部分联合起来一起训练。
论文:Wide & Deep Learning for Recommender Systems
同时,Google的另一篇文章Deep Neural Networks for YouTube Recommendations,介绍了CTR或推荐系统中经典的两层结构:候选集产生和排序。在候选集产生阶段,使用DNN为每个用户和视频训练向量,在排序阶段,同样也是将视频ID映射为一个低维稠密向量,再结合其他特征进行训练。
论文:Deep Neural Networks for YouTube Recommendations