RS推荐系统-CTR算法模型简单回顾回顾

MF和FM

  • MF考虑了userID,itemID的特征,而实际我们需要考虑更多的特征,甚至是多个特征间的组合。

  • MF只解决评分预测问题,而实际问题可能是回归和分类问题,需要更通用的解决方式
    RS推荐系统-CTR算法模型简单回顾回顾_第1张图片

  • FM是利用了MF的中心思想,考虑了更多的特征,以及二阶特征组合,可以作为通用的回归和分类算法
    RS推荐系统-CTR算法模型简单回顾回顾_第2张图片

  • 特征提取是对现实世界的拟合方式
    y ^ ( x ) = w 0 + ∑ i = 1 n w n x n + ∑ i = 1 n ∑ j = i + 1 n ⟨ V i , V j ⟩ x i x j \hat{y}(x)=w_{0}+\sum_{i=1}^{n} w_{n} x_{n}+\sum_{i=1}^{n} \sum_{j=i+1}^{n}\left\langle V_{i}, V_{j}\right\rangle x_{i} x_{j} y^(x)=w0+i=1nwnxn+i=1nj=i+1nVi,Vjxixj

GBDT+LR算法

针对CTR预估问题,GBDT+LR算法提出的背景:

  • 样本数量大,点击率预估模型中的训练样本可达上亿级别
  • 学习能力有限,以往的CTR预估采用LR模型,LR是线性模型,虽然速度较快,但是学习能力有限
  • 人工成本高,为了更好的进行特征提取,提升LR的学习能力,需要采用人工特征工程,即通过人工方式找到有区分度的特征、特征组合。对人的要求高,时间成本高

针对以上问题,在2014年Facebook经典CTR预估论文中,提出了一下思想:

  • 总体思路采取stacking思想的二分类器模型,用来解决二分类问题
  • 通过GBDT将特征进行组合,然后传入给线性分类器
  • LR对GBDT产生的输入数据进行分类(使用L1正则化防止过拟合)

既然降到了GBDT,那就再稍稍提一嘴:

  • GBDT由多棵CART回归树组成,将累加所有树的结果作为最终结果
  • GBDT由多棵CART回归树组成,将累加所有树的结果作为最终结果
  • GBDT用来做回归预测,调整后也可以用于分类
  • 把GBDT拆开理解,Gradient Boosting,每一次建立模型是在之前模型损失函数的梯度下降方向;Boosting,迭代,即通过迭代多棵树来共同决策
  • GBDT算法在每一轮迭代中,先计算出当前模型在所有样本上的负梯度,然后以该值为目标训练一个新的弱分类器进行拟合并计算出该弱分类器的权重,最终实现对模型的更新
  • 第t次迭代后的函数 = 第t-1次迭代后的函数 + 第t次迭代函数的增量
    f t ( x ) = f t − 1 ( x ) + Δ f t ( x ) Δ f t ( x ) = − α t [ δ L ( y , F ( x ) ) δ F ( x ) ] F ( x ) = F ( t − 1 ) ( x ) \begin{aligned} f_{t}(x) &=f_{t-1}(x)+\Delta f_{t}(x) \\ \Delta f_{t}(x) &=-\alpha_{t}\left[\frac{\delta L(y, F(x))}{\delta F(x)}\right]_{F(x)=F_{(t-1)}(x)} \end{aligned} ft(x)Δft(x)=ft1(x)+Δft(x)=αt[δF(x)δL(y,F(x))]F(x)=F(t1)(x)

GBDT在对新特征构造时,输出的并不是最终的二分类概率值,而是要把模型中的每棵树计算得到的预测概率值所属的叶子结点位置记为1 => 构造新的训练数据。
RS推荐系统-CTR算法模型简单回顾回顾_第3张图片
以上图为例,选择了第一棵决策树的第2个叶子节点。同时,选择第2棵子树的第1个叶子节点。那么前3个叶子节点中,第2位设置为1,后2个叶子节点中,第1位设置为1。concatenate所有特征向量,得到[0,1,0,1,0]
GBDT是一堆树的组合,假设有k棵树(T1,T2…Tk),每棵树的节点数分别为 N i N_i Ni, GBDT会输出一个 ∑ i = 1 k N i \sum^k_{i=1}N_i i=1kNi维的向量。

GBDT+LR模型效果

  • 使用GBDT+LR,相比单纯的LR和GBDT,在Loss上减少了3%,提升作用明显
  • 前500棵决策树,会让NE下降,而后1000棵决策树对NE下降不明显,不超过0.1%(GBDT决策树规模超过500时,效果不明显)
    N E =  预测的logloss   backgoround CTR的熵  N E=\frac{\text { 预测的logloss }}{\text { backgoround CTR的熵 }} NE= backgoround CTR的熵  预测的logloss 
  • 实验中,boosting tree数量从1到2000,叶节点个数被限制为最大12个(即每棵树不超过12个叶子节点)
    RS推荐系统-CTR算法模型简单回顾回顾_第4张图片

Wide&Deep算法

Wide&Deep是在2016年提出的,它认为推荐系统的难点在于memorization与generalization。

  • memorization,记忆能力,学习items或者features之间的相关频率,在历史数据中探索相关性的可行性
  • generalization,泛化(推理)能力,基于相关性的传递,去探索一些在过去没有出现过的特征组合

结合线性模型的记忆能力和DNN模型的泛化能力,在训练过程中同时优化两个模型的参数。
RS推荐系统-CTR算法模型简单回顾回顾_第5张图片

Wide&Deep可以从以下两个维度去看。

  • Wide维度
    系统通过获得用户的购物日志数据,包括用户点击哪些商品,购买过哪些商品,然后通过OneHot编码转换为离散特征。好处是可解释性强,不足在于特征组合需要人为操作。
    采用Linear Regression,特征组合需要人为构造。wide模型是线性模型,输入特征可以是连续特征,也可以是稀疏的离散特征。离散特征通过交叉可以组成更高维的离散特征。
    RS推荐系统-CTR算法模型简单回顾回顾_第6张图片

  • Deep维度
    通过深度学习出一些向量,这些向量是隐性特征,往往没有可解释性的。
    Deep其实就是一个MLP,他输入的是连续值特征+embedding后的类别特征。这里的embedding使用前馈网络模型,特征首先转换为低维稠密向量,作为第一个隐藏层的输入,解决类别特征onehot后维度爆炸问题。接着根据每次预测的loss反向训练迭代更新。
    在训练过程中,向量矩阵随机初始化,隐藏层的激活函数通常使用ReLU。
    RS推荐系统-CTR算法模型简单回顾回顾_第7张图片

  • 维度融合方法
    ensemble:两个模型分别对全量数据进行预测,然后根据权重组合最终的预测结果;
    joint training:wide和deep的特征合一,构成一个模型进行预测
    P ( Y = 1 ∣ x ) = σ ( w wide  T [ x , ϕ ( x ) ] + w deep  T a ( l f ) + b ) P(Y=1 \mid \mathbf{x})=\sigma\left(\mathbf{w}_{\text {wide }}^{T}[\mathbf{x}, \phi(\mathbf{x})]+\mathbf{w}_{\text {deep }}^{T} a^{\left(l_{f}\right)}+b\right) P(Y=1x)=σ(wwide T[x,ϕ(x)]+wdeep Ta(lf)+b)
    ϕ ( X ) \phi(X) ϕ(X) 代表X的Cross Product Transformation
    W wide  W_{\text {wide }} Wwide  代表Wide模型的权重向量
    W deep  W_{\text {deep }} Wdeep  代表Deep模型的权重向量
    α ( l f ) \alpha^{\left(l_{f}\right)} α(lf) 代表最终的神经网络数结果, b \mathrm{b} b 为偏差

Wide&Deep效果
Google在2016年基于TensorFlow发布的用于分类和回归的模型,并应用到了 Google Play 的应用推荐中
Wide & Deep模型不论在线下还是线上相比于单独的wide模型和单独的Deep模型,效果都有明显提升。
RS推荐系统-CTR算法模型简单回顾回顾_第8张图片

你可能感兴趣的:(推荐系统,机器学习,算法,推荐系统)