基于GBDT+LR模型的深度学习推荐算法

2023-11-14

GBDT+LR算法最早是由Facebook在2014年提出的一个推荐算法,该算法分两部分构成,第一部分是GBDT,另一部分是LR.下面先介绍GBDT算法,然后介绍如何将GBDT和LR算法融合

1.1 GBDT算法

GBDT的全称是 Gradient Boosting Decision Tree,梯度提升决策树。是Boost的一种典型算法,Boost的原理:首先对样本集进行训练得到第一个模型,然后对模型分类错误的样本进行提权得到新的样本集,在新的样本集上进行训练得到第二个模型,如此类推得到n个预测模型。预测的时候通过每个模型的预测值进行加权,模型的权重可以用模型的准确率衡量。

Decision Tree:CART回归树

GBDT使用的决策树就是CART回归树。

对于回归树算法来说最主要的是寻找最佳的划分点,那么回归树中的可划分点包含了所有特征的所有可取的值。在分类树中最佳划分点的判别标准是熵或者基尼系数,都是用纯度来衡量的,但是在回归树中的样本标签也是连续数值,所以再使用熵之类的指标不再合适,取而代之的是平方误差,它能很好的评判数据分散程度。我们希望最佳划分节点能够使得划分得到的两组数据组内的标签值相近,如果每组的方差都很小,这就说明每组的组内相似度很高,确实应该被划分。
在这里插入图片描述
从上图可以看出:利用方差寻找最佳划分点,预测值选择决策树的叶子节点中所有样本的真实值的均值。

Gradient Boosting: 负梯度——残差
假如有个人30岁,我们首先用20岁去拟合,发现损失有10岁,这时我们用6岁去拟合剩下的损失,发现差距还有4岁,第三轮我们用3岁拟合剩下的差距,差距就只有一岁了。如果我们的迭代轮数还没有完,可以继续迭代下面,每一轮迭代,拟合的岁数误差都会减小。
在GBDT的迭代中,假设我们前一轮迭代得到的强学习器是ft−1(x)ft−1(x), 损失函数是L(y,ft−1(x))L(y,ft−1(x)), 我们本轮迭代的目标是找到一个CART回归树模型的弱学习器ht(x)ht(x),让本轮的损失损失L(y,ft(x)=L(y,ft−1(x)+ht(x))L(y,ft(x)=L(y,ft−1(x)+ht(x))最小。也就是说,本轮迭代找到决策树,要让样本的损失尽量变得更小。
常见的损失函数:
在这里插入图片描述
GBDT选取了相对来说容易优化的损失函数——平方损失。针对怎样去拟合这个损失,大牛Freidman提出了用损失函数的负梯度来拟合本轮损失的近似值。第t轮的第i个样本的损失函数的负梯度为:
在这里插入图片描述
对应损失函数列表可知,GBDT使用的平方损失,经过负梯度拟合得到了y−f(xi)y−f(xi),这就是我们最终要去拟合的,它的另一个名字叫作残差。回到我们上面讲的那个通俗易懂的例子中,第一次迭代的残差是10岁,第二 次残差4岁……

在这里插入图片描述
1.初始化弱学习器
在这里插入图片描述
2.对迭代轮数m=1,2,…M有:
a)对每个样本i=1,2,…,N,计算负梯度,即残差
在这里插入图片描述
b)将上步得到的残差作为样本新的真实值,并将数据(xi,rim)(i=1,2,…N)(xi,rim)(i=1,2,…N)作为下棵树的训练数据,得到一颗新的回归树fm(x)fm(x)其对应的叶子节点区域为Rjm,j=1,2,…,JRjm,j=1,2,…,J。其中JJ为回归树t的叶子节点的个数。
c)对叶子区域j=1,2,…Jj=1,2,…J计算最佳拟合值
在这里插入图片描述
d)更新强学习器
在这里插入图片描述
3.得到强学习器
在这里插入图片描述
GBDT算法首先对训练样本建立一颗决策树,然后每个样本的目标变量调整为第一颗决策树预测值与实际值的残差,得到一个新的训练样本,在新的训练样本下建立第二课决策树,依次类推得到m颗决策树。详细构造如下:

Step1:数据准备,设原始的训练样本为在这里插入图片描述
Step2:生成第1颗决策树,运用CART算法,对原始样本生成1颗决策树,第1颗决策树定义为,表示第1颗决策树对样本的预测值。

Step3:生成第2颗决策树,构造第2颗决策树的训练样本数据,对每个样本的目标变量用残差表示,具体如下,同样运用CART算法生成第2课决策树,第2颗决策树定义为DT2,DT2(Xi)表示第2颗决策树对样本Xi的预测值:
在这里插入图片描述
Step4:生成第m颗决策树,构造第m颗决策树的训练样本数据如下:
在这里插入图片描述
运用CART算法生成第m课决策树,第m颗决策树定义为DTm,DTm(Xi)表示第m颗决策树对样本Xi的预测值,预测的时候,将每一颗决策树的预测结果加起来就是GBDT模型的预测值。

GBDT是一个Boosting的模型,通过组合多个弱模型逐步拟合残差得到一个强模型。树模型具有天然的优势,能够很好的挖掘组合高阶统计特征,兼具较优的可解释性。GBDT的主要缺陷是依赖连续型的统计特征,对于高维度稀疏特征、时间序列特征不能很好的处理。

1.2 GBDT与LR融合的算法
在这里插入图片描述
Facebook提出来的论文当中,把样本在GBDT模型中决策树的叶子节点作为样本的特征,输入到LR模型里面。简单理解就是让GBDT模型来做特征工程。

1.3 扩展

沿着上述算法的思路,我们可以将one-hot离散化特征,以及BP模型融合到与GBDT并行的一层,在外面在接一层LR算法。这里面并行的模块有GBDT、one-hot离散化特征、BP,可以理解为3种不同方法的特征工程,结构图如下:
在这里插入图片描述
1.4实例代码
https://github.com/wolf-bailang/tensorflow_practice/tree/master/recommendation/GBDT%2BLR-Demo

参考来源
[1] http://quinonero.net/Publications/predicting-clicks-facebook.pdf
[2] http://blog.csdn.net/zpalyq110/article/details/79527653
[3] https://blog.csdn.net/kingzone_2008/article/details/81225385

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于GBDT+LR模型的深度学习推荐算法 的相关文章

随机推荐

  • Linux下yum命令及软件的安装

    yum命令 1 yum install softwarename 安装 2 yum remove softwarename 卸载 安装dhcp及卸载 mkdir iso 建立目录 mv home kiosk Desktop iso iso
  • tcp 是一个安全的网络协议

    1 tcp 是一个安全的网络协议 确定双方的收发能力之后 才会真正传输数据 2 tcp 建立起一个连接 比较消耗成本 所以比较平稳 安全 3 3次握手 发起连接 双方确认 确认双方的收发能力 客户端告诉服务器i我要创建连接i 一次 服务器告
  • 出栈的合法性检测

    对于一个给定的入栈顺序 可能的出栈顺序会有很多 但是肯定都要遵循栈 后进先出 的特点 那么怎么进行合法性检测呢 算法思想如下 定义变量InIndex标记入栈序列的当前位置 定义OutIndex标记出栈序列的当前位置 对InIndex和Out
  • 利用纯净语音和噪声合成不同信噪比的训练数据

    如题 这应该算是我前往语音这座大山的第一步 在此做出记录 一 工作背景 由于需要进行单通道降噪的实验 但是现在只有纯净语音和噪声数据 而在阅读文章的过程中 大家并没有将这个细小的内容写道论文中 的确也不应该 做出来之后确实感觉蛮简单的 所以
  • python爬虫ip被封怎么办?

    用python写的爬虫 设置了headers 包括host和useragent 设置了cookies 访问的结果是 访问过于频繁 请输入验证码 但是用浏览器访问怎么刷新都没有问题 这个时候大致可以判定你被反爬虫锁定 那怎样解决 你可能不太了
  • Python无法识别csv文件

    我的报错 utf 8 codec can t decode byte 0xc9 in position 84 invalid continuation byte 大概意思是utf 8无法识别文件里的一些信息 后面将encoding里面改成下
  • 【Java编程】图书管理系统

    图书管理系统 我们用一个列表存放书籍信息 private static List
  • paxos算法_共识算法(8) —— PBFT 算法详解

    本文翻译自 伊利诺伊大学厄巴纳 香槟分校助理教授 Ling Ren 开设的讨论课 CS598 Consensus Algorithm 参考论文 PBFT 原论文 1999 pmg csail mit edu 前言 上一节中我们介绍了经典的P
  • IDEA项目初次上传到git(超简单)

    IDEA上传到git 1 右键项目 打开 终端 2 在打开的终端输入 git init 3 右键项目 选择 git gt 添加 add 4 右键项目 选择 git gt 提交 commit 输入 init 点击 提交并推送 commit a
  • Ehoney开源欺骗防御系统

    一 特点 支持丰富的蜜罐类型 通用蜜罐 SSH 蜜罐 Http蜜罐 Redis蜜罐 Telnet蜜罐 Mysql蜜罐 RDP 蜜罐 IOT蜜罐 RTSP 蜜罐 工控蜜罐 ModBus 蜜罐 基于云原生技术 基于k3s打造saas平台欺骗防御
  • 创建一们计算机语言_建立自己的计算机语言

    创建一们计算机语言 只需编码 如果您想构建自己的计算机语言 但又不知道该如何开始 或者您认为自己没有时间和技能来做到这一点 那么请看鲍勃 尼斯特罗姆 Bob Nystrom 的 技巧翻译 一书 即从刮 从一开始到成熟的面向对象的东西就是这样
  • JDBC工具类——JdbcUtils

    JdbcUtils 一 JDBC的工具类 二 JdbcUtils工具类的组成 1 类加载时加载驱动 2 连接池 db properties 3 ThreadLocal控制事务 4 dbcp连接池提高资源利用率 三 JDBC工具类的实例演变
  • Ubuntu opencv的搭建

    打开终端 apt install cmake 依次输入以下的命令 sudo apt get install cmake git libgtk2 0 dev pkg config libavcodec dev libavformat dev
  • Linux字符集的查看及修改

    一 查看字符集 字符集在系统中体现形式是一个环境变量 以CentOS6 5为例 其查看当前终端使用字符集的方式可以有以下几种方式 第一种 root Testa www tmp echo LANG zh CN UTF 8 第二种 root T
  • Nvidia显卡硬件编解码能力表 官方链接

    记录用 便于快速查找 从表中得知 1070支持 H265 10bit 硬件编码 似乎不错 官方链接 https developer nvidia com video encode and decode gpu support matrix
  • C++虚函数表地址偏移

    include
  • 架构图以及vue的简介

    架构图 前后端分离总架构图 前端架构设计图 MVVM 架构模式 MVVM 的简介 MVVM 由 Model View ViewModel 三部分构成 Model 层代表数据模型 也可以在Model中定义数据修改和操作的业务逻辑 View 代
  • 公务员和事业单位的差别有多大?

    公务员和事业单位是两种不同的就业形式和组织类型 它们在以下几个方面存在一些差别 1 归属关系 公务员属于政府部门的编制人员 直接依附于政府机构 而事业单位是独立法人实体 独立承担法人责任 不隶属于政府机构 2 支付方式 公务员工资由政府财政
  • 算法训练 P0505

    标题 include
  • 基于GBDT+LR模型的深度学习推荐算法

    GBDT LR算法最早是由Facebook在2014年提出的一个推荐算法 该算法分两部分构成 第一部分是GBDT 另一部分是LR 下面先介绍GBDT算法 然后介绍如何将GBDT和LR算法融合 1 1 GBDT算法 GBDT的全称是 Grad