embedding亦福亦祸?XGBoost与LightGBM的新机遇

3e2f7617d6570c296b1c944d868ad3f0.png

文 | 水哥
源 | 知乎

Saying

1. 小的性能差异在容易实现面前一文不值,这一点是XGBoost和LightGBM的最大优势
2. 没能与embedding很好地结合无疑是树模型的灾难,吃不下巨量的新数据,也打不过DNN,除了一些规模比较小的公司,树模型在精排中已经灭绝了
3. 但没能与embedding很好地结合却带给树模型无限生机,在每一个需要模型但又不能上太重模型的场合,树模型都可以灵活的存在。以这种方式,树模型在推荐系统中获得了永生
4. 想要成为精排模型的必要不充分条件是,新出现的特征/取值不会对训练部署流程有任何中断或者形式上的改变

这是【从零单排推荐系统】系列的第15讲。树模型在推荐中应用,算法上的发展比较简单,从决策树,到基于树的Gradient Boosting Machine,包括上一讲的GBDT都是抓小点和缝合为主。虽然XGBoost和LightGBM在GBDT的基础上各自还做了一些改进,但都是属于修补性质的。这两个工作更加为人熟知的是工具上的发展越来越好,开源的实现是很多人打比赛刷榜的利器。在实践中,好用的框架/工具就是算法长盛不衰的秘诀。

本讲的重点是一个很有意思的,别的地方没有讨论过的问题:在kaggle等比赛中,树模型非常强势,但是在实际业务中,树模型几乎不会成为精排的选择,为什么会出现这样一头热一头冷的情况?其本质原因是,要成为不断接受新数据新特征的门神模型,必须拥有形式上的不变性

XGBoost[1]:更加精致的GBM

我们先延续上一讲的GBDT的推导来介绍XGBoost,正如上一讲所说,GBM的核心是级联很多模型,后面的模型学习的都是前面模型综合后剩下的残差:

这里的公式含义都和上一讲完全保持一致。在这里,我们可以做一个二阶的近似,也就是按照泰勒展开到二阶项为止:

其中, , 分别表示在上一步对于 的一阶,二阶偏导。由于的结果基本之前都已经算过了,设现在这步需要拟合的目标是 的话,就有

为了能让这个式子继续简化,可以假设模型结构 是一个回归树,即样本对所有树都做一次预测,而每棵树的叶子节点都有权重,最后样本的概率是这些落入节点的权重的和(可以换个方式来理解:经过一些非线性操作,也就是决策树决策的过程,最后得到的仍然是一个binary的向量。1的点就是落入的叶子节点,其他则是0,然后相当于用一个LR来做分类)。那么这个模型可以表示为,若 还是一个二范数的正则化,那么把这个代入到上面的式子中得到的就是一个二次项(其中的按照维度拆解,找对称轴和 《水哥:推荐系统精排之锋(2):工业LR的稀疏要求(挑战全网最好懂推导(https://zhuanlan.zhihu.com/p/408205665))》都是一样的),就可以直接求解了。

算法上,XGBoost对寻找切割点的贪心做了效率上的优化,不是遍历每一个点,而是先通过特征分布寻找可能成为切割点的候选,在遍历这些候选的点。在工程上,XGBoost事先把排序结果存在Compressed Sparse Columns Format中,并且用块压缩和块分区来优化IO速度。但工程优化不是这个专栏的重点(主要是我也不会),就不展开讲了。

总结来说,相对于GBDT,XGBoost的主要优点有:1.使用了二阶项作为更细的近似,精度更高;2. 使用正则项并且把叶子结点个数加入到正则项中,可以控制模型的复杂度;3. 在特征排序上和寻找切割点的过程中都做了并行化处理。

LightGBM[1]:极大加速的GBDT

LightGBM是GBDT的另一种改进版本,它的出发点是从样本角度和特征角度来简化GBDT的运算过程:

  • 样本角度:GBDT对于每一个样本都要参与运算,而在LightGBM中,给出了一个假设:只有梯度大的哪些样本才会影响学习的过程,梯度小的样本是一定程度上可以忽略的。基于这个假设,我们要做的就是把梯度大的放回去继续优化,梯度小的丢弃。但是还不是这么简单的,如果梯度小的全丢了,那么可能会引入bias,所以我们可以选择梯度大的(也就是排序前top a%)全要,后面的部分中采样出b%。采样后的部分要乘以一个系数 ,为啥是这个系数呢?假如采样后和采样前均值 没发生变化,乘完系数之后两类样本的比值没变,这样可以尽量不让分布发生变化(有没有注意到和之前说过的样本负采样很像,还记得是哪一讲的吗?)。

  • 特征角度:特征中有很多特征是不会同时为1的,比如有一些one-hot特征,性别,年龄这样的,一个用户只会有其中一个值不为0.那么遍历这样的所有取值是不太合理的。LightGBM提出把这些不会同时取1的特征合并在一起,行成一个“束”,这样寻找切割点的时候,遍历起来会更快,这个就叫做互斥特征捆绑(Exclusive Feature Bundling)。不过在实现上,还有两个小问题,第一个问题是选择谁和谁拼成一个新的特征?第二个问题是具体怎么操作?对于第一个问题,lightGBM给出的做法是以特征为顶点,以冲突(同时为1)有多大为边建图。每个节点的度是与其他节点冲突的大小,由大到小挨个开始:如果加入一个“束”会导致总的冲突数超过既定阈值 ,就新开一个“束”,反之则加入。对于第二个问题,其实就是把值域合并一下,文章中举得例子是 的值域是 , 的值域是 ,那么给 加一个10的偏置,再合起来,新的特征值域就是。

上面虽然介绍了现在树模型比较好用的两种算法/工具,但是本讲的重点其实不是他们的原理,而是在实践中我们如何选择是否使用树模型?如果用的话,用在哪些场合是比较理想的?

因为没有embedding,树模型绝迹于精排

我们这两讲提到了很多树模型的优点,比如它的非线性是非常非线性的。但是大家如果对业界有所了解,就会发现很少在实际业务的精排中看到树模型的身影,这是为什么?

先抛出结论:因为树模型不能很好的处理在线学习过程中,源源不断的出现的ID类型的特征。虽然XGBoost和LightGBM都谈了对于未训练的值如何处理,但在实际场景中这个数字可能会非常夸张。从冷启动这个角度来想,如果我们希望我们的平台是富有活力的平台,就理应会源源不断的出现新的item,那么冷启动的规模就更大。现在的大平台上,新item的比例应该远远超过50%,在这么大的未出现样本面前,树模型就显得捉襟见肘了。不能很好的解决这个问题,树模型就不能负担得起精排的重任。

当然,树模型不是完全没有想过应对方案。前一讲的Facebook那篇文章其实就说了,他们的树模型是一天一更新的(如果不更新,就会失去树模型强化分桶的作用)。这个方案当然体现了他们对问题的深入思考,但你也能看得出来这中间的勉强。如果树模型后面接的环节是一天重新训练不能收敛的,这个方案还能用吗?

那么,现在的精排模型怎么解决这个问题?答案就是embedding,每当新出现了ID,我可以开辟一段新的空间来存储,让这段embedding保留该特征的信息。一个新的embedding的加入,虽然会引发冷启动问题,但是对于训练,部署的流程没有任何改动。因此,基于embedding的embedding+DNN无往不利。

有的同学可能会说那LR也没有embedding呀,为什么它可以?我们可以认为LR是有embedding的,但是只有1维,就是之前所说的特征的权重 。在未来还可能有新的形式或者模型出现,但是我认为,不管哪种模型来做精排,新的特征出现时,都不能在训练部署上出现中断,或者形式的改变

目前为止还没有看到树模型和embedding很好地结合的例子,或者准确地说是树模型没什么加embedding的必要和意义。embedding本质上是把低维的ID映射到一个更高的空间中,记录更细致的信息(我个人也有一些相关的经验,比如把所有特征的embedding长度都翻倍,基本上涨幅有大有小,但是从来不会掉点。这表明更大的embedding拥有更多的存储空间),而决策树是按照特征本身的信息划分的。

因为没有embedding,树模型得以长生

上面明明说没有embedding,树模型都快灭绝了,这里怎么又说长生了,乍一看这和上面的说法不是反着的吗?

可能这就是所谓的塞翁失马,焉知非福了。embedding是很强很暴力,但是embedding需要大量的空间(Parameter Server)来存。想想看,如果一个特征的embedding维度是64,原来LR中一台机器能存下的特征现在就需要64台机器来存,这是非常可怕的空间消耗。而且推荐系统也不是除了召回粗排精排就没东西了,还有许许多多小的环节需要模型来预估,难道各个都用embedding+DNN的模型结构吗?除了占用空间太大,可能其中有的模型ROI也不太高,不如就找个简单点的模型抗住呗?

这个时候,树模型就可以大展身手了。既然它不需要embedding,那它就很省空间。一些边边角角的地方,需要模型时都可以考虑用它。不要小看这些边边角角的场合,有些是发挥很大作用的,举两个例子:

  1. 判断一个item处于生命周期中的哪个阶段(在后面会讲讲这个概念,现在可以简单理解为,一个item有刚开始起量,稳定膨胀,流量下滑和死亡这么几个阶段,根据这个阶段可以做不同的针对性决策),此时Item ID做特征显然是没有意义的,而是item现在总的曝光量,已经投放了多久,每个阶段的曝光,转化等等。

  2. 预测一个用户第二天是不是还会来,有各种行为特征,比如在某个类别下观看了多少视频,用户已经用了多长时间,今天的总播放时长是多少等等。

这两个例子都是实践中使用树模型的典型场景,也是非常重要的应用场景。第一个场景关系到在线广告系统中,怎样为广告主分配流量。而第二个例子与留存-DAU这个漏斗的优化有关联。从这两个例子中归纳一下,当触发以下两个条件时,树模型自动进化为不二选择

  1. 特征中没有不断新增的ID类特征,categorical特征可以穷举,比如年龄,城市等。

  2. 当输入的特征混有各种各样的categorical,numeric等等类型的特征时,尤其对于像counter(计数类特征,比如用户在APP上的时间)类很有效果。

经过上面的分析,我们就能理解为什么在工业界,树模型从精排模型中绝迹了,但在kaggle等比赛中,经常出现树模型的身影。因为kaggle的比赛大部分是闭集,而且对特征设计要求较高,这种情况很适合树模型发挥强大的非线性分类能力。

开集与闭集:以人脸识别为例,闭集的含义是,测试集的人你都见过,只是现在给你的图片你没见过。而开集则指的是,测试集中会出现新的人,要判断这些没见过的人的图片之间是否相似。所以在公开数据集里面基本都是固定的人(闭集),而如果是产品则要面对开集场景。

下期预告

推荐系统精排之锋(10):DNN与两大门派

往期回顾

1.召回 粗排 精排,如何各司其职?

2.拍不完的脑袋:推荐系统打压保送重排策略

3.简单复读机LR如何成为推荐系统精排之锋?

4.召回粗排精排-级联漏斗(上)

5.召回粗排精排-级联漏斗(下)

6.推荐系统精排:看阿里妈妈再试线性模型

7.推荐精排之锋:FM的一小步,泛化的一大步

8.推荐中使用FNN/PNN/ONN/NFM优化特征交叉

9.聊聊推荐系统的高阶特征交叉问题

10.真正的高阶特征交叉:xDeepFM与DCN-V2

11.GBDT是如何成为推荐系统顶级工具人的?

e96c956b5afb3d9fa091e4efe88759ee.png后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

57f97a86e7d817e9b30a856ce73b7d52.gif 09471719c72715163c8602bcd688369b.png

[1] XGBoost: A Scalable Tree Boosting System,KDD,2016
(https://www.kdd.org/kdd2016/papers/files/rfp0697-chenAemb.pdf)

[2] LightGBM: A Highly Efficient Gradient Boosting Decision Tree,NIPS,2017
(https://proceedings.neurips.cc/paper/2017/file/6449f44a102fde848669bdd9eb6b76fa-Paper.pdf)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 - ACL2022 | 面向推理阅读理解的神经符号方法

转载公众号 | 南大Websoft概述近两年来NLP领域出现了一些富有挑战性的机器阅读理解数据集,如ReClor和LogiQA。这两个数据集中的问题需要对文本进行逻辑推理,然而传统的神经模型不足以进行逻辑推理,传统的符号推理器不能直接应用于文本。为了应…

LeetCode 1026. 节点与其祖先之间的最大差值(二叉树DFS)

1. 题目 给定二叉树的根节点 root,找出存在于不同节点 A 和 B 之间的最大值 V,其中 V |A.val - B.val|,且 A 是 B 的祖先。 (如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为…

凭“难听”上热搜的 idol 们,不如考虑下让 Transformer 帮您作曲?

视频制作 | 白鹡鸰编 | 小轶考虑到 “AI 音乐”这一主题的特殊性,唯有多媒体的视频形式才能更好地给大家带来视听上的多重感受。于是,小屋的白鸟鸟同学在科研间隙连续肝了好几个晚上,才得以完成这次视频。然而在上周的推送中,不知…

YUI3在美团的实践

美团网在2010年引爆了团购行业,并在2012年销售额超过55亿,实现了全面盈利。在业务规模不断增长的背后,作为研发队伍中和用户最接近的前端团队承担着非常大的压力,比如用户量急剧上升带来的产品多样化,业务运营系统的界…

论文浅尝 - ICLR2022 | OntoProtein:融入基因本体知识的蛋白质预训练

论文题目:OntoProtein: Protein Pretraining With Gene Ontology Embedding本文作者:张宁豫(浙江大学)、毕祯(浙江大学)、梁孝转(浙江大学)、程思源(浙江大学&#xff09…

LeetCode 540. 有序数组中的单一元素(位运算二分查找)

1. 题目 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。 示例 1: 输入: [1,1,2,3,3,4,4,8,8] 输出: 2示例 2: 输入: [3,3,7,7,10,11,11] 输出: 10注意: 您的方案应该在 O(log n) 时间复杂度 和 O…

迁移Prompt–解决Prompt Tuning三大问题!

文 | Harris刘鹏飞博士将近代NLP的研究划归为四种范式 [1] 并把预训练语言模型加持下的Prompt Learning看作是近代自然语言处理技术发展的“第四范式”。当我们使用新范式的方法的时候,能够意识到它带来的优异性可能是以某种“人力”牺牲为代价的。而如何让这种人力…

征文 | 2022年全国知识图谱与语义计算大会(CCKS 2022) 征稿通知

2022年全国知识图谱与语义计算大会征稿通知Call for Papers2022年8月25日-28日,秦皇岛征稿截止: 2022年5月22日第十六届全国知识图谱与语义计算大会(CCKS: China Conference on Knowledge Graph and Semantic Computing)由中国中文信息学会语…

Spring Cloud 和 Dubbo 哪个会被淘汰?

今天在知乎上看到了这样一个问题:Spring Cloud 和 Dubbo哪个会被淘汰?看了几个回答,都觉得不在点子上,所以要么就干脆写篇小文瞎逼叨一下。 简单说说个人观点 我认为这两个框架大概率会长期都存在。 时至今日,这两个…

DNN与推荐两大门派,一念神魔,功不唐捐

文 | 水哥源 | 知乎Saying1. embeddingDNN范式有两个流派,一个更关注DNN,叫逍遥派;一个更关注embedding,叫少林派2. embeddingDNN这种结构中,embedding一般是模型并行;DNN一般是数据并行3. 逍遥派能够创造奇…

会议交流—PPT下载|DataFunSummit2022:知识图谱在线峰会PPT合集!

点击上方公众号卡片,后台回复『20220312』,即可下载!有哪些PPT?下载方式点击下方公众号卡片,后台回复『20220312』,即可下载!OpenKGOpenKG(中文开放知识图谱)旨在推动以中…

Spring Cloud 2020年路线图发布,涵盖Spring Boot 2.3、2.4,Spring Cloud Ilford等重磅内容!

Spring Cloud 开发团队昨日公布了 Spring Cloud 2020 年的路线图,并对 Spring Cloud Greenwich 和 Hoxton 的生命周期进行了一些讲解。 Spring Cloud Ilford 开发团队称 Spring Cloud Ilford 将是下一个主要版本,这也将是自 Spring Cloud Finchley 发布…

LeetCode 398. 随机数索引(概率)

1. 题目 给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。 注意: 数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。 示例: int[] nums new int[] {1,2,3,3,3}; Solutio…

再论推荐特征与embedding生成

文 | 水哥源 | 知乎Saying1. 工业特征处理和学术特征处理存在巨大差异,这里建议同学们一定认真阅读。这个差异可能引发未来各种方法落地的矛盾。2. full embedding在概念上和one-hot的操作等价,但在操作上省略了这个过程。3. hash是最省事的,…

图谱实战 | 李翔:美团到店综合知识图谱的构建与应用

转载公众号 | DataFunTalk分享嘉宾:李翔 美团 算法专家编辑整理:王惠灵 合肥工业大学出品平台:DataFunTalk导读:美团到店综合业务涵盖了本地生活中的休闲玩乐、丽人、亲子、结婚、宠物等多个行业。为了不断提升到店综合业务场景下…

Spring Cloud Hoxton正式发布,Spring Boot 2.2 不再孤单

距离Spring Boot 2.2.0的发布已经有一个半月左右时间,由于与之匹配的Spring Cloud版本一直没有Release,所以在这期间碰到不少读者咨询的问题都是由于Spring Boot和Spring Cloud版本不匹配导致。 很多时候,我们在学习或重建系统的时候都喜欢直…

加了元学习之后,少样本学习竟然可以变得这么简单!

文 | Rukawa_Y编 | Sheryc_王苏,小轶去年年初 GPT-3 的论文在 arxiv 上出现,论文名为 “Language Models are Few-Shot Learners”,引起一阵轰动。除了前无古人的模型规模外,最抓人眼球的是, GPT-3 能够不需要 fine-tu…

Spring Cloud Alibaba基础教程:与Dubbo的完美融合

很早以前,在刚开始搞Spring Cloud基础教程的时候,写过这样一篇文章:《微服务架构的基础框架选择:Spring Cloud还是Dubbo?》,可能不少读者也都看过。之后也就一直有关于这两个框架怎么选的问题出来&#xff…

DIN+DIEN,机器学习唯一指定涨点技Attention

文 | 水哥源 | 知乎Saying1. 如果你面对一个全新的机器学习任务,让你来涨点。你可能第一个想到的往往是attention,第一个实现的是attention,第一个真的涨点了的技术也是attention;2. DIN的最主要的意义,把attention引入…

RabbitMQ延迟消息的极限是多少?

之前在写Spring Cloud Stream专题内容的时候,特地介绍了一下如何使用RabbitMQ的延迟消息来实现定时任务。最近正好因为开发碰到了使用过程中发现,延迟消息没有效果,消息直接就被消费了的情况。因此就继续深入研究了一下问题原因,在…