首页 > 编程语言 >20240318-1-推荐算法gbdt_lr

20240318-1-推荐算法gbdt_lr

时间:2024-03-24 17:01:48浏览次数:27  
标签:特征 样本 20240318 gbdt lr GBDT ID

gbdt lr

在这里插入图片描述

gbdt+lr是facebook提出在线广告模型,我们知道LR之前在广告和推荐系统由于其快速的计算
而被广泛使用,使用由于lr是线性模型,其模型表现能力不强,需要做大量的特征工程。
facebook提出提出使用决策树进行特征embedding。
为了提升线性分类器的准确度,有两种方法进行特征变换:

  1. 对于连续特征。先进行离散化bin,然后把bin的编号作为离散型特征。这样的话,线性模型可以分段的学习到一个非线性的映射,在每一段内的映射是不变的。另外,对于bin边界的学习非常重要
  2. 对于离散特征。做笛卡尔积,生成的是tuple input features。笛卡尔积穷举了所有的特征组合,其中也包含部分没用的组合特征,不过可以筛选出来。
    提升决策树(boosted decision tree)就可以很方便很好的实现上面我们说的这种非线性和tuple特征变换。对于一个样本,针对每一颗树得到一个类别型特征。该特征取值为样本在树中落入的叶节点的编号。举例来说:

    上图中的提升决策树包含两棵子树,第一棵树包含3个叶节点,第二棵树包含2个叶节点。输入样本x,在两棵树种分别落入叶子节点2和叶子节点1。那么特征转换就得到特征向量[0 1 0 1 0]。也就是说,把叶节点编号进行one-hot编码。
    那么, 怎么样直观的理解这种特征变化:
  • 看做是一种有监督的特征编码。把实值的vector转换成紧凑的二值的vector。
  • 从根节点到叶节点的一条路径,表示的是在特征上的一个特定的规则。所以,叶节点的编号代表了这种规则。表征了样本中的信息,而且进行了非线性的组合变换。
  • 最后再对叶节点编号组合,相当于学习这些规则的权重。

核心思想

  1. 数据更新

由于推荐和广告等相关的问题,是一个动态的环境,需要对模型进行实时更新,所有对于lr进行在线学习和更新,gbdt可以每天或者几天更新一次。

  1. 在线学习的学习率如何设置

一般情况有很多学习率更新的方法,可以根据当前系统进行实验得到最好的学习率设置策略。论文中给出一下几种方法:

  • Per-coordinate learning rate:
    η t , i = α β + ∑ j = 1 t ▽ j , i 2 \eta_{t,i}=\frac{\alpha}{\beta+\sqrt{\sum_{j=1}^{t}}\bigtriangledown_{j,i}^2} ηt,i​=β+∑j=1t​ ​▽j,i2​α​
    其中, α , β \alpha, \beta α,β是两个超参数.
  • Per-weight square root learning rate:
    η t , i = α n t , i \eta_{t,i}=\frac{\alpha}{\sqrt{n_{t,i}}} ηt,i​=nt,i​ ​α​
    其中, n t , i n_{t,i} nt,i​是特征i所有实例的前t次的总和。
  • Per-weight learning rate:
    η t , i = α n t , i \eta_{t,i}=\frac{\alpha}{n_{t,i}} ηt,i​=nt,i​α​
  • Global learning rate:
    η t , i = α t \eta_{t,i}=\frac{\alpha}{\sqrt{t}} ηt,i​=t ​α​
  • Constant learning rate:
    η t , i = α \eta_{t,i}=\alpha ηt,i​=α
  1. 为了保证数据的新鲜性,需要进行在线数据加入,所有的曝光的实例,设置时间t,在时间t内被点击设置为label=1,否则设置label=0,注意时间t不能太大也不能太小,根据现实业务进行设置.

  2. 样本的均匀采样和负样本数据的下采样,由于负样本太多需要对负样本进行下采样。

  3. Model Re-Calibration

负样本欠采样可以加快训练速度并提升模型性能。但是同样带来了问题:改变了训练数据分布。所以需要进行校准。
q = p p + ( 1 − p ) / w q=\frac{p}{p+(1-p)/w} q=p+(1−p)/wp​
其中:

  • w是采样率
  • p是在采样后空间中给出的CTR预估值
  • 计算得到的q就是修正后的结果

面试十问

  1. lr的权重个数和gbdt的什么有关?

lr的权重个数,等于gbdt所有叶子节点的个数.

  1. 负样本欠采样之后会对模型有什么影响,怎么解决?

负样本欠采样可以加快训练速度并提升模型性能。但是同样带来了问题:改变了训练数据分布。所以需要进行校准。
q = p p + ( 1 − p ) / w q=\frac{p}{p+(1-p)/w} q=p+(1−p)/wp​

  1. GBDT特征的重要性是如何评估的?

特征j的全局重要度通过特征j在单颗树中的重要度的平均值来衡量:
J ^ j 2 = 1 M ∑ m = 1 M J ^ j 2 ( T m ) \hat J_j^2=\frac{1}{M}\sum_{m=1}^{M}\hat J_j^2(T_m) J^j2​=M1​m=1∑M​J^j2​(Tm​)
其中,M是树的数量,特征j在单棵树中的重要度如下:
J ^ j 2 ( T ) = ∑ t = 1 L − 1 i ^ j 2 I ( v t = j ) \hat J_j^2(T)=\sum_{t=1}^{L-1}\hat i_j^2 I(v_t=j) J^j2​(T)=t=1∑L−1​i^j2​I(vt​=j)

  1. gbdt+lr如何训练

一般是先训练gbdt在训练lr,首先将数据data分成两部分a和b,a用来训练gbdt,b用来训练lr。其中用a训练gbdt的时候,需要将a分成train_a, valid_a, test_a, 得到gbdt之后。将b通过gbdt得到所有对应叶子节点的下标进行one-hot编码.
继续训练b,将b通过gbdt得到update_b, 将update_b分成训练、验证和测试集,训练得到LR.

  1. 为什么建树采用ensemble决策树?

一棵树的表达能力很弱,不足以表达多个有区分性的特征组合,多棵树的表达能力更强一些。GBDT每棵树都在学习前面棵树尚存的不足,迭代多少次就会生成多少颗树。按paper以及Kaggle竞赛中的GBDT+LR融合方式,多棵树正好满足LR每条训练样本可以通过GBDT映射成多个特征的需求。

  1. 为什么建树采用GBDT而非RF?

RF也是多棵树,但从效果上有实践证明不如GBDT。且GBDT前面的树,特征分裂主要体现对多数样本有区分度的特征;后面的树,主要体现的是经过前N颗树,残差仍然较大的少数样本。优先选用在整体上有区分度的特征,再选用针对少数样本有区分度的特征,思路更加合理,这应该也是用GBDT的原因。

  1. GBDT与LR融合方案

AD ID类特征在CTR预估中是非常重要的特征,直接将AD ID作为feature进行建树不可行,故考虑为每个AD ID建GBDT树。但互联网时代长尾数据现象非常显著,广告也存在长尾现象,为了提升广告整体投放效果,不得不考虑长尾广告。在GBDT建树方案中,对于曝光充分训练样本充足的广告,可以单独建树,发掘对单个广告有区分度的特征,但对于曝光不充分样本不充足的长尾广告,无法单独建树,需要一种方案来解决长尾广告的问题。

综合考虑方案如下,使用GBDT建两类树,非ID建一类树,ID建一类树。

1)非ID类树:不以细粒度的ID建树,此类树作为base,即便曝光少的广告、广告主,仍可以通过此类树得到有区分性的特征、特征组合。

2)ID类树:以细粒度 的ID建一类树,用于发现曝光充分的ID对应有区分性的特征、特征组合。如何根据GBDT建的两类树,对原始特征进行映射?以如下图3为例,当一条样本x进来之后,遍历两类树到叶子节点,得到的特征作为LR的输入。当AD曝光不充分不足以训练树时,其它树恰好作为补充。

面试真题

  1. 为什么建树采用GBDT而非RF?

标签:特征,样本,20240318,gbdt,lr,GBDT,ID
From: https://blog.csdn.net/qq_24428851/article/details/136990626

相关文章

  • PhpStrom启动报错, java.net.BindException: Address already in use: bind
    问题描述:今天启动phpstromIDE时,突然报错,报错信息如下图:问题分析1.不正确关闭应用(强制关闭):可能是之前启动了一个本地web服务占了端口,在没有停掉服务,直接关闭IDE导致的(尝试了重启电脑也没解决)2.其他应用占用端口:安装了Hyper-V导致端口被占用?显然我的是第一种情况问题解决......
  • LR_Scheduler(torch.optim.lr_scheduler)
    ......
  • Linux/Ubuntu/Debian终端terminal中ls的详细用法-l -lt -ld -lR -lh -F
    使用各种选项列出当前目录中的文件和目录:以长(表格)格式列出:ls-l列出有关特定目录的信息:ls-lddir-name列出所有文件(包括隐藏文件):ls-a附加指示文件类型的符号:ls-F按上次修改时间排序列出文件:ls-lt以人类可读的格式列出文件大小:......
  • LRC软件、Adobe Lightroom Classic最新版破解安装下载合集教程
    AdobeLightroomClassic(简称LR)是AdobeCreativeCloud大家庭中的一款专业的图片管理和编辑工具,用于专业摄影师、摄影爱好者以及所有不断优化数码影像的人等。其目标是以丰富的功能提供高效、一致的体验,帮助用户汇聚、组织、管理、编辑和分享数码图片。AdobeLightroomClassi......
  • 通过XMLRpc控制海康VB2200视觉控制器自带光源接口
    在使用HikVB2200视觉控制器时,由于并未使用VisionMaster软件,但是使用了视觉控制器的光源接口。导致无法直接控制该光源接口。VB2200视觉控制器提供了一个IOController应用程序,其中对应的exe文件可以设置为对应光源接口的亮度等参数,基本满足需求。但是IOController只能设置......
  • Photoshop2024(PS)和Lightroom(LR)设计的智能磨皮插件Portraiture下载
     打造完美肤质,PortraiturePS/LR专用智能磨皮插件让你的照片焕发魅力副标题:让你的照片告别粗糙皮肤和毛孔,展现自然细腻的肤质在摄影后期处理中,给照片进行磨皮和肤质优化是一项必不可少的步骤。而今天,我们为你带来了一款专为Photoshop(PS)和Lightroom(LR)设计的智能磨皮插件——......
  • 打造专业人像照片的必备神器Portraiture2024免费PS/LR专用智能磨皮插件
    在摄影后期处理中,人像照片的磨皮处理是一项必不可少的技能。今天,我们为大家带来了一款专为Photoshop(PS)和Lightroom(LR)设计的智能磨皮插件——Portraiture。这款插件凭借其出色的表现和便捷的操作,深受广大摄影爱好者和专业摄影师的喜爱。接下来,让我们一起探索Portraiture的魅力......
  • Cannot connect to already running IDE instance. Exception: Process 6,367 is stil
    当IntelliJIDEA显示“CannotconnecttoalreadyrunningIDEinstance.Exception:Process6,367isstillrunning”这个错误消息时,意味着它试图连接到一个已经在运行中的实例,但因为某些原因,这个操作失败了。这通常发生在IDEA无法正常关闭或在后台无法正确管理其进程......
  • SQLServer CLR程序集创建Http函数
    设计程序集-SQLServer|MicrosoftLearnMicrosoft.VisualBasic.dllMicrosoft.VisualC.dllmscorlib.dllSystem.dllSystem.Configuration.dllSystem.Core.dllSystem.Data.dllSystem.Data.OracleClient.dllSystem.Data.SqlXml.dllSystem.Deployment.dllSyst......
  • 20240318打卡
    第四周第一天第二天第三天第四天第五天第六天第七天所花时间1h代码量(行)212博客量(篇)1知识点了解Kotlin编写用户注册与登录功能......