1. CTR概念
CTR, click through rate,指广告被点击次数 / 广告显示次数。
CTR预估模型公式:, , 表示广告被点击的概率。
以下将介绍 LR, GBDT, FM, FFM, MLR, Deep and wide, Deep and Cross, deepFM, XDeepFM, PNN, NFM, AFM模型在CTR中的应用。
2. CTR 传统预估模型
2.1 LR
LR,logistic regression,是CTR预估模型的最基本模型,适用海量的高维离散特征。
其中,
也可以表示为:
LR 的优势,处理离散化特征,模型简单,容易实现分布式计算。
LR变种,Google的FTRL, 可看做 LR + 正则化 + 特定优化方法。
FTRL算法的公式:
LR缺点: 特征与特征之间在模型中是独立的,对于存在交叉可能性的特征,需要人工进行特征交叉。
2.2 GBDT
GBDT,梯度提升决策树,表达能力比较强的非线性模型。
GBDT 的优势在于处理连续值特征,比如用户历史点击率。而且由于树的分裂算法,它具有一定的组合特征的能力。GBDT对特征的数值线性变化不敏感,它会按照目标函数,自动选择最优的分裂特征和相应的最优分裂点。并且,根据特征的分裂次数,得到一个特征的重要性排序。
缺点: 推荐系统的大多数场景都是大规模离散化特征,如果使用GBDT,则需要将很多特征统计成连续值特征(或者Embedding),这里需要耗费很多时间。GBDT模型具有很强的记忆行为,不利于挖掘长尾特征。
2.3 FM 和FFM
FM在LR不能自动处理交叉特征基础上改进。
FM模型:
逻辑斯蒂函数里边有两部分,一部分是,线性回归函数,第二部分是二次交叉项。
二次项权重 需要存储一个二维矩阵的变量,这个二维矩阵的维度可能很大,FM利用矩阵分解的原理,将这个权重矩阵进行分解,即
。
FM模型变成:
FFM模型公式:
也就是, 和不同的特征交叉时,它的 是不一样的。
FFM在FM的基础上,考虑了特征交叉的field的特点,但也导致了它没有办法实现线性的时间复杂度(假设n 个特征,一个特征有 个 个向量和其他特征的向量交叉,总共有 个向量的内积计算),模型训练比FM慢了一个量级,但效果比FM更好。
2.4 GBDT + LR/FM/FFM
GBDT 适合处理连续值特征,而 LR, FM, FFM更加适合处理离散化特征。GBDT可以进行一定程度的特征组合(多次组合),而FM,FFM只是二阶组合。同时,GBDT有一定的特征选择能力。也就是GBDT和LR,FM,FFM能够起到互补的作用。
Facebook 2014的论文 Practical Lessons from Predicting Clicks on Ads atFacebook 提出 GBDT + LR的解决方案,即先使用GBDT对一些稠密的特征进行特征选择,得到的叶子节点,再拼接离散化特征,放到LR 进行训练。
GBDT + LR模型:
2.5 MLR
MLR 是由 阿里团队在 论文 Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction 里提出的一种非线性模型,等价于 聚类 + LR的形式。 定义:
相当于将 X 进行聚成 m 类,然后,每一个聚类单独训练一个 LR。 MLR和LR一样,需要较大的特征工程处理,模型本身属于非凸模型(?),需要预训练,可能出现不收敛的情况。
3. CTR排序的DNN篇
CTR场景特征基本是离散化特征,而且特征之间交叉存在意义,使用DNN类的模型就有很强的模型表达能力,能够学习出高阶特征;同时容易扩充其他类别的特征,比如特征拥有图片、文字类特征时。
DNN模型的主要架构:
并行结构:
基本上目前的DNN模型和这个架构类似,只是stack layer的方法不一样,比如,有无 shallow part, 或者shallow part异同(如,用 LR 或FM等)。
串行结构:
下面是并行结构:
3.1 Deep and Wide model
Wide & Deep Learning for Recommender Systems;
shallow part 为 LR,stack layer为:concatenate(拼接Embedding后的向量)
3.2 Deep and cross model
shallow part 为 cross Network,高阶组合,stack layer为:concatenate(拼接Embedding后的向量)
3.3 deepFM model
deepFM 的 shallow part 为 FM,stack layer 也是concatenate.
3.4 XDeepFM model
比较难理解的是(a)中两个矩阵外积得到一个三维数组,两个向量外积操作就能得到一个矩阵(一个截面),D 对就有D层截面。
(b)中把一个三维数组映射回二维数组,是对一个截面进行加权平均,得到一个向量。
(c)是整体图,每一层 都是由 和前一层 操作得到的。
xDeepFM 的 shallow part 为 CIN.
下面是串行结构:
3.5 PNN model
PNN,全称为Product-based Neural Network,认为在embedding输入到MLP之后学习的交叉特征表达并不充分,提出了一种product layer的思想,既基于乘法的运算来体现体征交叉的DNN网络结构。
代表线性部分; 代表二次项部分特征.
定义:
不同的g的选择使得我们有了两种PNN的计算方法,一种叫做Inner PNN,简称IPNN,一种叫做Outer PNN,简称OPNN。
IPNN
使用内积计算。
OPNN
外积计算。
定义:
3.6 NFM model
NFM model 的 deep part:
NFM的 shallow part 为 lr;stack layer 则为Bi-Interaction,实际上就是先做向量的内积,再做累加。
Bi-Interaction Layer名字挺高大上的,其实它就是计算FM中的二次项的过程,因此得到的向量维度就是我们的Embedding的维度。最终的结果是:
也就是:
这里,是Embedding层的表示。每个Embedding特征叉乘并相加。 结果将是一个k维度向量, k就是embedding向量的长度.
3.7 AFM
注意,这里面省去了线性部分,只考虑特征组合部分。
Attention-based Pooling Layer:
Attention机制的核心思想在于:当把不同的部分压缩在一起的时候,让不同的部分的贡献程度不一样。AFM通过在Interacted vector后增加一个weighted sum来实现Attention机制。形式化如下:
Attention Network形式化如下:
就是乘了一个矩阵,在 Softmax 获得权重。
整体公式:
4. 总结
DNN做CTR问题的关键有三:
- 是否保留浅层模型;
- 如何体现特征交叉性,即stack layer的做法。concatenate,Bi-interaction,直接向量相加等等。
- Embedding+ FC(全连接层)是标配。
参考: