CTR、推荐系统学习路线

背景

计算广告是门综合的学科,其中CTR预估是技术人员最关注的核心技术。CTR不仅用在点击率预估,现在在推荐系统的rank等场景中也有广泛的应用。本文整理了学习CTR相关资源,希望从这些资源中认识在做CTR、rank的核心问题。
由于每一部分在网上都有比较完整的介绍资源,所以本文并不具体展开介绍,但会给出对应部分的原始论文或优秀资料。

1. 基础

1.1 凸函数

1.2 最优化理论

1.2.1 无约束优化问题

通过对目标函数求导,并令其等于0,进行求解
例子:最小二乘法的求解

1.2.2 有等式约束优化问题

通过朗格朗日乘数法,把等式约束转为无约束优化问题

1.2.3 带不等式约束优化问题

使用KKT条件,将等式约束、不等式约束与目标函数合并为新的函数。KKT条件是求解最优值的必要条件,要成为充要条件是目标函数为凸函数。
KKT条件的推导需要用到原问题的对偶问题。

1.3 次梯度

函数并非光滑或处处可微时,则可以求次梯度。

1.3.1 次梯度与次微分

凸函数的次梯度一定存在。若函数 f 在点 x 处可微,则次梯度为函数在该点的梯度,且唯一;若不可微,则不唯一。
例子: f(x)=|x| x=0 处的次微分

1.4 梯度下降

有一篇文章总结得非常好:
An overview of gradient descent optimization algorithms

1.4.1 传统梯度下降

  • Batch Gradient Descent 批量梯度下降
  • Stochastic Gradient Descent 随机梯度下降
  • Min-batch Gradient Descent 小批量梯度下降

1.4.2 改进的梯度下降

  • Adagrad
  • Adadelta
  • Adam

1.5 正则化

加了正则项的目标函数一般为以下的形式:

min1Ni=1NL(yi,f(xi))+λJ(f)

第一项经验风险,也就是对原问题的拟合,第二项是正则化项。
上式也可以改写为:
min1Ni=1NL(yi,f(xi))s.t.J(f)<σ

1.5.1 L1

L1正则项相对L2能产生更加稀疏的解,所以在特征数量较多时最常使用L1正则项。但在在线学习的问题中,参数根据每次来的样本产生的梯度进行更新,并非全局的梯度,所以即使采用L1正则项,也很难产生稀疏解。

2. 在线学习(Online Learning)

说到在线学习,国内的冯扬写过一篇非常好的文章,从模型的稀疏性为主线,介绍不同时期在线学习算法的演进。
在线最优化求解(Online Optimization)
在线最优化求解
- 简单截断法
- Truncated Gradient 截断梯度法
- FOBOS
- RDA
- FTRL——重点关注算法:在稀疏性与高精度之间的权衡

FTRL本质上是FTL(Follow The Leader)算法,只是在FTL上加了正则项。

3. 特征交叉

在做特征工程的过程中,特征与特征的关系往往不是孤立的,这个时候就需要考虑特征之间的交叉关系。

3.1 Factorization Machines(FM)

论文:Factorization Machines

y(x)=w0+i=1nwixi+i=1nj=i+1n<vi,vj>xixj

从式子中可以看出: wi,j=<vi,vj> 用来表达特征 i 和特征 j 的权重。

3.2 Field-aware Factorization Machines(FFM)

论文:Field-aware Factorization Machines for CTR Prediction
FFM在FM的基础上,每维特征 xi 再加上其他特征属于哪种field, fj ,所以表达式为:

y(x)=w0+i=1nwixi+i=1nj=i+1n<vi,fj,vj,fi>xixj

3.2 GBDT

论文: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

4. Categorical特征

在做特征预处理时候,针对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

Reference

  1. 李航 《统计学习方法》
  2. An overview of gradient descent optimization algorithms
  3. 在线最优化求解(Online Optimization)
  4. Factorization Machines
  5. Field-aware Factorization Machines for CTR Prediction
  6. Greedy Function Approximation: A Gradient Boosting Machine
  7. Practical Lessons from Predicting Clicks on Ads at Facebook
  8. Wide & Deep Learning for Recommender Systems
  9. Deep Neural Networks for YouTube Recommendations
    博客原文地址:http://blog.csdn.net/behamcheung/article/details/75008955

你可能感兴趣的:(ctr)