推荐系统-重排序-CTR-GBDT+LR

概述

GBDT的加入,是为了弥补LR难以实现特征组合的缺点。

LR

LR作为一个线性模型,以概率形式输出结果,在工业上得到了十分广泛的应用。
其具有简单快速高效,结果可解释,可以分布式计算。搭配L1,L2正则,可以有很好地鲁棒性以及挑选特征的能力。
但由于其简单,也伴随着拟合能力不足,无法做特征组合的缺点(无法自动做特征组合,需要人工做)。


通过梯度下降法可以优化参数

可以称之上是 CTR 预估模型的开山鼻祖,也是工业界使用最为广泛的 CTR 预估模型

但是在CTR领域,单纯的LR虽然可以快速处理海量高维离散特征,但是由于线性模型的局限性,其在特征组合方面仍有不足,所以后续才发展出了FM来引入特征交叉。在此之前,业界也有使用GBDT来作为特征组合的工具,其结果输出给LR。

GBDT+LR

首先,GBDT是一堆树的组合,假设有k棵树。
对于第i棵树,其存在个叶子节点。而从根节点到叶子节点,可以认为是一条路径,这条路径是一些特征的组合,例如从根节点到某一个叶子节点的路径可能是“”这就是一组特征组合。到达这个叶子节点的样本都拥有这样的组合特征,而这个组合特征使得这个样本得到了GBDT的预测结果。
所以对于GBDT子树,会返回一个维的one-hot向量
对于整个GBDT,会返回一个维的向量,这个向量由0-1组成。

然后,这个,会作为输入,送进LR模型,最终输出结果

GBDT+LR.jpg

模型大致如图所示。上图中由两棵子树,分别有3和2个叶子节点。对于一个样本x,最终可以落入第一棵树的某一个叶子和第二棵树的某一个叶子,得到两个独热编码的结果例如
[0,0,1],[1,0]组合得[0,0,1,1,0]输入到LR模型最后输出结果。

由于LR善于处理离散特征,GBDT善于处理连续特征。所以也可以交由GBDT处理连续特征,输出结果拼接上离散特征一起输入LR。

讨论

至于GBDT为何不善于处理高维离散特征?

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

https://www.zhihu.com/question/35821566
后来思考后发现原因是因为现在的模型普遍都会带着正则项,而 lr 等线性模型的正则项是对权重的惩罚,也就是 W1一旦过大,惩罚就会很大,进一步压缩 W1的值,使他不至于过大,而树模型则不一样,树模型的惩罚项通常为叶子节点数和深度等,而我们都知道,对于上面这种 case,树只需要一个节点就可以完美分割9990和10个样本,惩罚项极其之小.
这也就是为什么在高维稀疏特征的时候,线性模型会比非线性模型好的原因了:带正则化的线性模型比较不容易对稀疏特征过拟合。

GBDT当树深度>2时,其实组合的是多元特征了,而且由于子树规模的限制,导致其特征组合的能力并不是很强,所以才有了后续FM,FFM的发展

参考

https://cloud.tencent.com/developer/article/1005416
https://fuhailin.github.io/GBDT-LR/

你可能感兴趣的:(推荐系统-重排序-CTR-GBDT+LR)