week21 CTR预估

433 阅读5分钟

GBDT+LR的原理

算法原理:

Practical Lessons from Predicting Clicks on Ads at Facebook,2014 (Facebook经典CTR预估论文)

quinonero.net/Publication…

具有stacking思想的二分类器模型,用来解决二分类问题

通过GBDT将特征进行组合,然后传入给线性分类器

LR对GBDT产生的输入数据进行分类(使用L1正则化防止过拟合)

Gradient Boosting Decision Tree

• 回归树 Regression Decision Tree

GBDT由多棵CART回归树组成,将累加所有树的结果作为最终结果

GBDT拟合的目标是一个梯度值(连续值,实数),所以在GBDT里,都是回归树。

GBDT用来做回归预测,调整后也可以用于分类

• 梯度迭代 Gradient Boosting

Boosting,迭代,即通过迭代多棵树来共同决策

损失函数用于评价模型性能(一般为拟合程度+正则项)。最好的方法就是让损失函数沿着梯度方向下降

Gradient Boosting原理

Gradient Boosting,每一次建立模型是在之前模型损失函数的梯度下降方向

GBDT是将所有树的结果累加起来,最为最终的结果 => 每一棵树学的是之前所有树结果和的残差

e.g A的真实年龄是24岁,第一棵树预测出来18岁,残差为6 => 第二棵树将A的年龄设置为6,继续学习,第二棵树预测出来是5,残差为1 => 第三棵树将残差1作为预测目标

使用GBDT进行新特征构造

使用GBDT进行新特征构造:

当GBDT训练好做预测的时候,输出的并不是最终的二分类概率值,而是要把模型中的每棵树计算得到的预测概率值所属的叶子结点位置记为1 => 构造新的训练数据

右图有2棵决策树,一共有5个叶子节点

如果一个实例,选择了第一棵决策树的第2个叶子节点。同时,选择第2棵子树的第1个叶子节点。那么前3个叶子节点中,第2位设置为1,后2个叶子节点中,第1位设置为1。concatenate所有特征向量,得到[0,1,0,1,0]

GBDT是一堆树的组合,假设有k棵树(T1,T2...Tk),每棵树的节点数分别为 , GBDT会输出一个 维的向量

评价指标NE,Calibration,AUC

NE**,**Normalized Cross-Entropy

NE = 每次展现时预测得到的log loss的平均值,除以对整个数据集的平均log loss值

p代表训练数据的平均经验CTR,即background CTR,NE对background CTR不敏感,NE数值越小预测效果越好

Calibration

预估CTR除以真实CTR,即预测的点击数与真实点击数的比值。数值越接近1,预测效果越好。

AUC

衡量排序质量的良好指标,但是无法进行校准,也就是如果我们希望得到预估准确的比值,而不是最优的排序结果,那么需要使用NE或者Calibration

e.g 模型预估值都是实际值的两倍,对于NE来说会提升,此时乘以0.5进行校准。但是对于AUC来说会保持不变

TPRate,FPRate计算

ROC曲线,横轴是FPRate,纵轴是TPRate

AUC=ROC曲线下的面积

如果TPRate=FPRate,也就是y=x,即真实类别不论是1还是0的样本,分类器预测为1的概率是相等的

分类器对于正样本和负样本没有区分能力,此时AUC=0.5

如果TPRate>FPRate,也就是y>x,也就是AUC>0.5,有分类能力,极端情况下AUC=0,此时TPRate=1, FPRate=0,也就是正样本预测正确,负样本错分为0

Wide & Deep模型

Wide & Deep

• Deep推荐

Deep模型使用的特征:连续特征,Embedding后的离散特征,

使用前馈网络模型,特征首先转换为低维稠密向量,作为第一个隐藏层的输入,解决维度爆炸问题

根据最终的loss反向训练更新。向量进行随机初始化,隐藏层的激活函数通常使用ReLU

Wide模型使用的特征:Cross Product Transformation生成的组合特征,但无法学习到训练集中没有出现的组合特征

Wide join Deep同时训练

Wide join Deep

代表X的Cross Product Transformation

代表Wide模型的权重向量

代表Deep模型的权重向量

代表最终的神经网络数结果,b为偏

FNN模型

• FNN模型

CTR中大部分特征是离散、高维且稀疏的,需要embedding后才能进行深度学习

使用FM对embedding层进行初始化,即每个特征对应一个偏置项 和一个k维向量

• CTR中大部分特征是离散、高维且稀疏的,需要embedding后才能进行深度学习

使用FM对embedding层进行初始化,即每个特征对应一个偏置项 和一个k维向量

NFM模型

NFM模型

FNN, Wide & Deep, DeepFM都是在DNN部分,对embedding之后的特征进行concatenate,没有充分进行特征交叉计算。

NFM算法是对embedding直接采用对位相乘(element-wise)后相加起来作为交叉特征,然后通过DNN直接将特征压缩,最后concatenate linear部分和deep部分的特征。

FM与DNN的两种结合方式:DeepFM,NFM

两种FM和DNN的结合方式:

DeepFM, 并行结构,FM和DNN分开计算

NFM,串行架构,将FM的结果作为DNN的输入