BLOG

个人博客,记录学习与生活

GBDT+LR

Published Oct. 30, 2020, 11:21 p.m. by kkk

GBDT+LR是由Facebook2014年提出的,通过GBDT可以实现自动特征筛选和组合,生成新的离散特征向量,再通过LR处理新生成的离散特征向量,产生最终的预测结果。

这一套方案在CTR问题中应用广泛,相较于仅能利用用户、物品交互信息进行推荐的协同过滤和矩阵分解,GBDT+LR能够能加全面的利用到用户、物品、上下文等不同的(额外的)特征。推荐算法发展一大思路就是尽量的引入更加多的特征。

1. 推荐领域中的LR

逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,达到数据二分类的目的。

LR(逻辑回归)讲推荐问题看成了一个分类问题(特别是二分类问题),输入用户、物品(广告)信息,输出用户会点击物品(广告)的概率,然后将预测正样本概率对物品(广告)进行排序,形成推荐问题。

注:正样本在这里指的是用户“点击”、“观看”了某个商品、视频或是广告。

LR将推荐问题转化成了CTR问题。

LR进行推荐的步骤

  1. 将用户年龄、性别、物品属性、物品描述、当前时间、当前地点等特征转成数值型向量
  2. 确定逻辑回归的优化目标,比如把点击率预测转换成二分类问题,这样就可以得到分类问题常用的损失作为目标,训练模型
  3. 在预测的时候,将特征向量输入模型产生预测,得到用户“点击”物品的概率
  4. 利用点击概率对候选物品排序,得到推荐列表

2. GBDT

GBDT通过多轮迭代,每轮迭代会产生一个弱分类器,每个分类器在上一轮分类器的残差基础上进行训练。GBDT对弱分类器的要求一般是足够简单,并且低方差高偏差。因为训练的过程是通过降低偏差来不断提高最终分类器的精度。由于上述高偏差和简单的要求,每个分类回归树的深度不会很深。最终的总分类器是将每轮训练得到的弱分类器加权求和得到的(也就是加法模型)。

gbdt 每轮的训练是在上一轮的训练的残差基础之上进行训练的,而这里的残差指的就是当前模型的负梯度值,这个就要求每轮迭代的时候,弱分类器的输出的结果相减是有意义的,而gbdt 无论用于分类还是回归一直都是使用的CART 回归树。

我们可以把树的生成过程理解成自动进行多维度的特征组合的过程,从根结点到叶子节点上的整个路径(多个特征值判断),才能最终决定一棵树的预测值,另外,对于连续型特征的处理,GBDT 可以拆分出一个临界阈值,比如大于 0.027 走左子树,小于等于 0.027(或者 default 值)走右子树,这样很好的规避了人工离散化的问题。这样就非常轻松的解决了逻辑回归那里自动发现特征并进行有效组合的问题,这也是GBDT的优势所在。

但是GBDT也会有一些局限性,对于海量的 id 类特征,GBDT 由于树的深度和棵树限制(防止过拟合),不能有效的存储;另外海量特征在也会存在性能瓶颈,当 GBDT 的 one hot 特征大于 10 万维时,就必须做分布式的训练才能保证不爆内存。所以 GBDT 通常配合少量的反馈 CTR 特征来表达,这样虽然具有一定的范化能力,但是同时会有信息损失,对于头部资源不能有效的表达。

其实GBDT和LR的优缺点可以进行互补。

3. GBDT+LR

2014年, Facebook提出了一种利用GBDT自动进行特征筛选和组合,进而生成新的离散特征向量,再把该特征向量当做LR模型的输入,来产生最后的预测结果,这就是著名的GBDT+LR模型了。GBDT+LR 使用最广泛的场景是CTR点击率预估,即预测当给用户推送的广告会不会被用户点击。

训练时,GBDT 建树的过程相当于自动进行的特征组合和离散化,然后从根结点到叶子节点的这条路径就可以看成是不同特征进行的特征组合,用叶子节点可以唯一的表示这条路径,并作为一个离散特征传入 LR 进行二次训练。

预测时,会先走 GBDT 的每棵树,得到某个叶子节点对应的一个离散特征(即一组特征组合),然后把该特征以 one-hot 形式传入 LR 进行线性加权预测。

注意:

  1. 通过GBDT进行特征组合之后得到的离散向量是和训练数据的原特征一块作为逻辑回归的输入
  2. 建树的时候用ensemble建树的原因就是一棵树的表达能力很弱,不足以表达多个有区分性的特征组合,多棵树的表达能力更强一些。GBDT每棵树都在学习前面棵树尚存的不足,迭代多少次就会生成多少棵树。
  3. RF也是多棵树,但从效果上有实践证明不如GBDT。且GBDT前面的树,特征分裂主要体现对多数样本有区分度的特征;后面的树,主要体现的是经过前N颗树,残差仍然较大的少数样本。优先选用在整体上有区分度的特征,再选用针对少数样本有区分度的特征,思路更加合理,这应该也是用GBDT的原因。
  4. 在CRT预估中, GBDT一般会建立两类树(非ID特征建一类AD, ID类特征建一类ID),AD,ID类特征在CTR预估中是非常重要的特征,直接将AD,ID作为feature进行建树不可行,故考虑为每个AD,ID建GBDT树。1.非ID类树:不以细粒度的ID建树,此类树作为base,即便曝光少的广告、广告主,仍可以通过此类树得到有区分性的特征、特征组合2.ID类树:以细粒度的ID建一类树,用于发现曝光充分的ID对应有区分性的特征、特征组合

4. 代码实践

见github notebook


Share this post
< Pre: Wide&Deep Pos: 集成学习 >
1 comment
Similar posts
Add a new comment