[[点击率]]预估介绍
点击率预估是对每次广告点击情况作出预测,可以输出点击或者不点击,也可以输出该次点击的概率,后者有时候也称为pClick.对于点击率预估模型而言,其最终作用是输出点击的一个概率,是一个回归模型
可以解决[[FM模型]]的一些问题如泛化能力过强导致会推荐一些其实并没有那么相关的物品。
Wide & Deep 模型的记忆能力和泛化能力
对于RS而言,memorization和generalization是两个常见的概念,其中memorization代表推荐系统的保守性,即RS通过记忆为用户推荐之前行为的items,而generalization则是泛化能力的体现,倾向于提高推荐系统的多样性。而Wide & Deep模型综合了两个方面,其中,memorization通过一个线性模型来实现,而generalization通过[DNN]来实现。
其中,对于Wide & Deep 模型而言,需要根据自己的场景去判断哪些特征放在Wide中,哪些特征放在Deep中
如何理解Wide部分有利于memorization,而Deep部分有利于generalization
-
wide部分是一个广义的线性模型,输入包括两部分,一部分为样本的原始特征,另一部分为原始特征的交互特征。
交互特征的定义:
ϕk(x)=∏i=1dxicki,cki∈{0,1}\phi_k(x) = \prod_{i=1}^d x_i^{c_{ki}}, c_{ki} \in \{0, 1\}ϕk(x)=i=1∏dxicki,cki∈{0,1}大致意思为只有两个特征同时为1时,交互特征才能为1,否则为0其中,训练Wide部分时使用的是带[[L1正则]]的[[FTRL]]算法,其中,L1 FTRL十分注重模型的稀疏特质,即Wide采用L1 FTRL会使Wide部分变得更加稀疏,即Wide部分的大部分参数都为0,这就大大压缩了模型权重及特征向量的维度,因此Wide部分模型训练完成之后留下来的特征都是十分重要的
-
Deep部分是一个DNN模型,输入特征可以分为两大类,一类为可以直接输入的数值特征,另一类类别特征(即经过Embedding之后才能输入到DNN中),Deep部分的数学形式为a(l+1)=f(Wla(l)+bl)a^{(l+1)} = f(W^la^{(l)} + b^l)a(l+1)=f(Wla(l)+bl)其中,对于DNN而言,随着层数的增加,中间特征也就越抽象,从而提升了模型的泛化能力。
Wide部分与Deep部分的结合
Wide & Deep将Wide部分和Deep部分两部分的输出结果进行联合训练,重新使用一个逻辑回归做最终的预测,输出概率值。P(Y=1∣x)=δ(wwideT[x,ϕ(x)]+wdeepTa(lf)+b)P(Y=1|x) = \delta (w^T_{wide}[x, \phi(x)] + w^T_{deep}a^{(lf)}+b)P(Y=1∣x)=δ(wwideT[x,ϕ(x)]+wdeepTa(lf)+b)
操作流程
- retrieval:利用机器学习模型和一些人为定义的规则,来返回匹配当前query的一个小的items集合,这个集合就是最终的推荐列表的候选集。
- ranking:
- 收集更细致的用户特征
- 将特征分别传入Wide和Deep中一起训练
- 训练方法是用mini-batch stochastic optimization。
- Wide组件是用FTRL(Follow-the-regularized-leader) + L1正则化学习。
- Deep组件是用AdaGrad来学习。
- 训练完成之后推荐TopN