推荐系统中CTR排序模型汇总(LR,GBDT,FM,FFM,MLR,Deep and wide,Deep and cross,deepFM,XDeepFM,PN

4,439 阅读7分钟

1. CTR概念

CTR, click through rate,指广告被点击次数 / 广告显示次数。

CTR预估模型公式:y=f(x)y = f(x), y[0,1]y \in [0, 1], 表示广告被点击的概率。

以下将介绍 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预估模型的最基本模型,适用海量的高维离散特征。

f(x)=11+eθTXf(x) = \frac{1}{ 1 + e^{-\theta^T X}}

其中,θ=(θ0,θ1,...,θn)\theta = (\theta_0, \theta_1,..., \theta_n)

也可以表示为:

f(x)=logstics(linear(X))f(x)= logstics (linear (X))

LR 的优势,处理离散化特征,模型简单,容易实现分布式计算。

LR变种,Google的FTRL, 可看做 LR + 正则化 + 特定优化方法。

FTRL算法的公式:

wt+1=argminw(s=1tgsw+12s=1tσswws22+λ1w1)\mathbf{w}_{t+1}=\underset{\mathbf{w}}{\arg \min }\left(\sum_{s=1}^{t} \mathbf{g}_{s} \cdot \mathbf{w}+\frac{1}{2} \sum_{s=1}^{t} \sigma_{s}\left\|\mathbf{w}-\mathbf{w}_{s}\right\|_{2}^{2}+\lambda_{1}\|\mathbf{w}\|_{1}\right)

在这里插入图片描述

LR缺点: 特征与特征之间在模型中是独立的,对于存在交叉可能性的特征,需要人工进行特征交叉。

2.2 GBDT

GBDT,梯度提升决策树,表达能力比较强的非线性模型。 在这里插入图片描述

GBDT 的优势在于处理连续值特征,比如用户历史点击率。而且由于树的分裂算法,它具有一定的组合特征的能力。GBDT对特征的数值线性变化不敏感,它会按照目标函数,自动选择最优的分裂特征和相应的最优分裂点。并且,根据特征的分裂次数,得到一个特征的重要性排序。

缺点: 推荐系统的大多数场景都是大规模离散化特征,如果使用GBDT,则需要将很多特征统计成连续值特征(或者Embedding),这里需要耗费很多时间。GBDT模型具有很强的记忆行为,不利于挖掘长尾特征。

2.3 FM 和FFM

FM在LR不能自动处理交叉特征基础上改进。

FM模型: 在这里插入图片描述

逻辑斯蒂函数里边有两部分,一部分是,线性回归函数,第二部分是二次交叉项。

二次项权重 wijw_{ij} 需要存储一个二维矩阵的变量,这个二维矩阵的维度可能很大,FM利用矩阵分解的原理,将这个权重矩阵进行分解,即

在这里插入图片描述

FM模型变成:

在这里插入图片描述

在这里插入图片描述

FFM模型公式:

在这里插入图片描述

也就是,xix_i 和不同的特征交叉时,它的 viv_i 是不一样的。

FFM在FM的基础上,考虑了特征交叉的field的特点,但也导致了它没有办法实现线性的时间复杂度(假设n 个特征,一个特征xix_in1n-1viv_i 个向量和其他特征的向量交叉,总共有 n(n1)2\frac{n*(n-1)}{2} 个向量的内积计算),模型训练比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的形式。 定义:

softmax(X,i,m)=eμiXj=1meμjX\operatorname{softmax}(X, i, m)=\frac{e^{\mu_{i} X}}{\sum_{j=1}^{m} e^{\mu_{j} X}}
f(x)=i=1msoftmax(X,i,m)logistics(linear(X))f(x)=\sum_{i=1}^{m} \operatorname{softmax}(X, i, m) * \operatorname{logistics}(\operatorname{linear}(X))

相当于将 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后的向量)

Deep and Wide 网络 myblog;

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)是整体图,每一层 xkx^k 都是由 x0x^0 和前一层 xk1x^{k-1} 操作得到的。

在这里插入图片描述 在这里插入图片描述

xDeepFM 的 shallow part 为 CIN.


下面是串行结构

3.5 PNN model

PNN,全称为Product-based Neural Network,认为在embedding输入到MLP之后学习的交叉特征表达并不充分,提出了一种product layer的思想,既基于乘法的运算来体现体征交叉的DNN网络结构。

在这里插入图片描述

lzl_z 代表线性部分; lpl_p 代表二次项部分特征.

在这里插入图片描述

定义:

pi,j=g(fi,fj)p_{i,j} = g(f_i, f_j )

不同的g的选择使得我们有了两种PNN的计算方法,一种叫做Inner PNN,简称IPNN,一种叫做Outer PNN,简称OPNN。

IPNN

g(fi,fj)=<fi,fj>g(f_i, f_j ) = <f_i,f_j>

使用内积计算。

在这里插入图片描述

OPNN

外积计算。

定义: g(fi,fj)=fifjTg\left(f_{i}, f_{j}\right)=f_{i} f_{j}^{T}

在这里插入图片描述

3.6 NFM model

NFM model 的 deep part:

在这里插入图片描述

NFM的 shallow part 为 lr;stack layer 则为Bi-Interaction,实际上就是先做向量的内积,再做累加。 在这里插入图片描述

Bi-Interaction Layer名字挺高大上的,其实它就是计算FM中的二次项的过程,因此得到的向量维度就是我们的Embedding的维度。最终的结果是:

在这里插入图片描述

也就是:

在这里插入图片描述

这里,xivix_i v_i是Embedding层的表示。每个Embedding特征叉乘并相加。 结果将是一个k维度向量, k就是embedding向量的长度.

3.7 AFM

在这里插入图片描述

注意,这里面省去了线性部分,只考虑特征组合部分。

Attention-based Pooling Layer:

Attention机制的核心思想在于:当把不同的部分压缩在一起的时候,让不同的部分的贡献程度不一样。AFM通过在Interacted vector后增加一个weighted sum来实现Attention机制。形式化如下:

fAtt(fPI(E))=(i,j)Rxaij(vivj)xixjf_{A t t}\left(f_{P I}(\mathcal{E})\right)=\sum_{(i, j) \in \mathcal{R}_{x}} a_{i j}\left(\mathbf{v}_{i} \odot \mathbf{v}_{j}\right) x_{i} x_{j}

Attention Network形式化如下:

aij=hTReLU(W(vivj)xixj+b)aij=exp(aij)(i,j)Rxexp(aij)\begin{aligned} a_{i j}^{\prime} &=\mathbf{h}^{T} \operatorname{ReLU}\left(\mathbf{W}\left(\mathbf{v}_{i} \odot \mathbf{v}_{j}\right) x_{i} x_{j}+\mathbf{b}\right) \\ a_{i j} &=\frac{\exp \left(a_{i j}^{\prime}\right)}{\sum_{(i, j) \in \mathcal{R}_{x}} \exp \left(a_{i j}^{\prime}\right)} \end{aligned}

就是乘了一个矩阵,在 Softmax 获得权重。

整体公式:

y^AFM(x)=w0+i=1nwixi+pTi=1nj=i+1naij(vivj)xixj\hat{y}_{A F M}(\mathbf{x})=w_{0}+\sum_{i=1}^{n} w_{i} x_{i}+\mathbf{p}^{T} \sum_{i=1}^{n} \sum_{j=i+1}^{n} a_{i j}\left(\mathbf{v}_{i} \odot \mathbf{v}_{j}\right) x_{i} x_{j}

4. 总结

DNN做CTR问题的关键有三:

  1. 是否保留浅层模型;
  2. 如何体现特征交叉性,即stack layer的做法。concatenate,Bi-interaction,直接向量相加等等。
  3. Embedding+ FC(全连接层)是标配。

参考:

  1. 推荐系统中使用ctr排序的f(x)的设计-dnn篇 - Jachin的文章 - 知乎;
  2. 推荐系统中使用ctr排序的f(x)的设计-传统模型篇 - Jachin的文章 - 知乎;
  3. 推荐系统遇上深度学习(六)--PNN模型理论和实践;
  4. 论文 Neural Factorization Machines for Sparse Predictive Analytics
  5. Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks