【推荐算法系列十七】:GBDT+LR 排序算法

排序算法经典中的经典

参考

推荐系统之GBDT+LR
极客时间 手把手带你搭建推荐系统 课程

逻辑回归(LR)模型

逻辑回归(LR,Logistic Regression)是一种传统机器学习分类模型,也是一种比较重要的非线性回归模型,其本质上是在线性回归模型的基础上,加了一个 Sigmoid 函数(也就是非线性映射),由于其简单、高效、易于并行计算的特点,在工业界受到了广泛的应用。

作为广义线性模型的一种,LR 假设因变量 y 服从伯努利分布。在推荐系统中我们用它来预估点击率,实际上就是来预测“点击”这个事件是否发生。这个“是否发生”实际上就是因变量 y。因为点击事件只有两种可能性,点击或者不点击(二分类问题)。这个问题,实际上就是服从伯努利分布的。总结一下,逻辑回归实际上就是在数据服从伯努利分布的假设下,通过极大似然的方法,运用梯度下降算法对参数进行求解,从而达到二分类。

在线性回归的基础上,把它的输出通过另一个函数映射到[0, 1]这个区间范围内就能解决这个问题。这个映射函数我们一般用 Sigmoid 函数,而映射之后的函数就是一个逻辑回归模型,它对应的逻辑回归图像如下。

在这里插入图片描述

其函数原型为 y = 1 1 + e − z y = \frac{1}{1+ e^{-z}} y=1+ez1.
在这里插入图片描述

GBDT 模型

GBDT(Gradient Boosting Decision Tree)算法是一种基于决策树的集成学习算法,它通过不断训练决策树来提高模型的准确性。GBDT 在每一次训练中都利用当前的模型进行预测,并将预测误差作为新的样本权重,然后训练下一棵决策树模型来拟合加权后的新数据。

GBDT 中的 B 代表 Boosting。Boosting 算法的基本思想是通过将多个弱分类器线性组合形成一个强分类器,达到优化训练误差和测试误差的目的。具体应用时,每一轮将上一轮分类错误的样本重新赋予更高的权重,这样一来,下一轮学习就容易重点关注错分样本,提高被错分样本的分类准确率。
GBDT 由多棵 CART 树组成,本质是多颗回归树组成的森林。每一个节点按贪心分裂,最终生成的树包含多层,这就相当于一个特征组合的过程。

在推荐系统中,我们使用 GBDT 算法来优化和提高个性化推荐的准确性。通过 GBDT 算法对用户历史行为数据进行建模和学习,可以很容易地学习到学习用户的隐式特征(例如品味、购买能力、口味偏好等)。另外,GBDT 算法可以自动选择重要的特征,对离散型和连续型特征进行处理(如缺失值填充、离散化等),为特征工程提供更好的支持。

FM模型通过隐变量的方式,发现两两特征之间的组合关系,但这种特征组合仅限于两两特征之间,后来发展出来了使用深度神经网络去挖掘更高层次的特征组合关系。但其实在使用神经网络之前,GBDT也是一种经常用来发现特征组合的有效思路。

GBDT+LR

在推荐系统中,GBDT+LR 使用最广泛的场景就是点击率预估,然后根据点击率预估的结果进行排序,因此 GBDT+LR 一般被应用于排序层中。

在这里插入图片描述
可以看到,整个模型实际上被分成两个部分,下面是 LR 上面是 GBDT。从上往下看,整个模型的训练可以分成下面五个步骤。

  • GBDT 训练:使用 GBDT 对原始数据进行训练并生成特征。在训练过程中,每棵树都是基于前一棵树的残差进行构建。这样,GBDT 可以逐步减少残差,生成最终的目标值。
  • 特征转换:使用 GBDT 生成的特征进行转换。这些特征是树节点的输出,每个特征都对应于一个叶子节点。在转换过程中,每个叶子节点都会被转换为一个新的特征向量,代表这个叶子节点与其他节点的相对位置,并将这些特征向量连接起来形成新的训练集。
  • 特征归一化:对生成的特征进行归一化处理,确保不同维度的特征在训练过程中具有相等的权重。
  • LR 训练:使用 LR 对转换后的特征进行二分类或回归。特征向量被送入逻辑回归模型中进行训练,以获得最终的分类模型。在训练过程中,使用梯度下降法来更新模型参数,以最小化损失函数,损失函数的选择取决于分类问题的具体情况。
  • 模型预测:训练完成后,使用 LR 模型对新的数据进行预测。GBDT+LR 模型将根据特征生成函数和逻辑回归模型预测新数据的类别或值。

优缺点

使用 GBDT+LR 结合的形式进行点击率预测好处:

  • 可以利用 GBDT 对复杂数据进行非线性特征提取和降维,又可以运用 LR 对特征进行加权和融合,提高模型的预测精度。
  • BDT+LR 不需要手动选择特征(通过 GBDT 自动选择),使得模型更具有鲁棒性和可扩展性。
  • GBDT+LR 具有良好的可解释性,可以通过分析 GBDT 中的特征重要度和 LR 中的权重,得到每个特征在模型中的贡献程度,从而更好地理解模型的预测结果。

虽然 GBDT+LR 来进行点击率预测有很多的好处,但是同时也有很多的问题,比如下面三点。

  • GBDT+LR 建模复杂度较高,需要调节多个超参数,如 GBDT 中的树深度、叶子节点数量、学习率等,LR 中的正则化参数等,增加了模型调优的难度。
  • GBDT+LR 需要大量的数据和计算资源进行训练,尤其是对于大规模的数据集,训练时间和计算成本都较高。
  • GBDT+LR 对异常值和噪声数据敏感,需要进行数据预处理和异常值处理,以提高模型的稳定性和鲁棒性。

现在的GBDT和LR的融合方案真的适合现在的大多数业务数据么?现在的业务数据是什么?是大量离散特征导致的高维度离散数据。而树模型对这样的离散特征,是不能很好处理的,要说为什么,因为这容易导致过拟合。GBDT只是对历史的一个记忆罢了,没有推广性,或者说泛化能力。

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

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

相关文章

js监听网页iframe里面元素变化其实就是监听iframe变化

想要监听网页里面iframe标签内容变化,需要通过监听网页dom元素变化,然后通过查询得到iframe标签,再通过iframe.contentWindow.document得到ifram内的document,然后再使用选择器得到body元素,有了body元素,就…

2024年 前端JavaScript Web APIs 第一天 笔记

1.1 -声明变量const优先 1.2 -DOM树和DOM对象 1.3 -获取DOIM元素 1.4 -DOM修改元素内容以及年会抽奖 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content&quo…

【JAVA重要知识 | 第三篇】深入理解并暴打AQS原理、ReentrantLock锁

文章目录 3.深入理解AQS、ReentrantLock3.1AQS3.1.1AQS简介3.1.2核心结构&#xff08;1&#xff09;设计模型&#xff08;2&#xff09;组成部分&#xff08;3&#xff09;State关键字 3.1.3实现的两类队列&#xff08;1&#xff09;同步队列①CLH②Node③主要行为 img条件队列…

Maven实战(2)之搭建maven私服

一, 背景: 如果使用国外镜像,下载速度比较慢; 如果使用阿里云镜像,速度还算OK,但是假如网速不好的时候,其实也是比较慢的; 如果没有网的情况下更加下载不了. 二, 本地仓库、个人/公司私服、远程仓库关系如下: 三, 下载安装nexus私服 略

【代码】Android|获取压力传感器、屏幕压感数据(大气压、原生和Processing)

首先需要分清自己需要的是大气压还是触摸压力&#xff0c;如果是大气压那么就是TYPE_PRESSURE&#xff0c;可以参考https://source.android.google.cn/docs/core/interaction/sensors/sensor-types?hlzh-cn。如果是触摸压力就是另一回事&#xff0c;我需要的是触摸压力。 不过…

在golang中使用protoc

【Golang】proto生成go的相关文件 推荐个人主页&#xff1a;席万里的个人空间 文章目录 【Golang】proto生成go的相关文件1、查看proto的版本号2、安装protoc-gen-go和protoc-gen-go-grpc3、生成protobuff以及grpc的文件 1、查看proto的版本号 protoc --version2、安装protoc-…

鸿蒙App开发新思路:小程序转App

国家与国家之间错综复杂&#xff0c;在谷歌的安卓操作系统“断供”后&#xff0c;鸿蒙系统的市场化&独立化的道路便显而易见了。 2024年1月18日&#xff0c;华为宣布&#xff0c;不再兼容安卓的“纯血鸿蒙”--HarmonyOS NEXT鸿蒙星河版最终面世&#xff0c;并与2024年Q4正…

2024全国水科技大会暨水环境新污染物控制青年学者论坛

论坛召集人&#xff1a;李江 贵州大学资源与环境工程学院教授 鼓励广大学者不负时代召唤&#xff0c;努力参与到我国的新污染物污染防治、有毒有害化学品环境安全、环境保护和生态守护等领域的理论研究和技术创新之中&#xff0c;并为从事环境及相关学科领域研究的研究生和学者…

Legacy Mirror Shaders and Post Effects

下载&#xff1a;​​Unity资源商店链接资源下载链接 效果图&#xff1a;

快递平台独立版小程序源码|带cps推广营销流量主+前端

源码介绍&#xff1a; 快递代发快递代寄寄件小程序可以对接易达云洋一级总代 快递小程序&#xff0c;接入云洋/易达物流接口&#xff0c;支持选择快递公司&#xff0c;三通一达&#xff0c;极兔&#xff0c;德邦等&#xff0c;功能成熟 如何收益: 1.对接第三方平台成本大约4元…

操作系统(1)——学习导论(Ⅱ)

目录 小程一言专栏链接: [link](http://t.csdnimg.cn/6grrU) 学习导论&#xff08;Ⅱ&#xff09;操作系统-赏前人佳作大型操作系统大型操作系统的一些特点和功能举例 服务器操作系统服务器操作系统特点和功能举例 多处理器操作系统举例 个人计算机操作系统举例 掌上计算机操作…

buildadmin 入口文件index.php的代码解析

buildadmin的入口文件和一般的tp8的入口文件是不一样的&#xff0c;参考这个入口文件的写法&#xff0c;我们可以大至了解&#xff0c; 为什么&#xff0c;前端的 index.html 和 php的入口文件同在 public 的目录下&#xff0c;而可以不冲突 先看一下 buildadmin的入口文件 &l…

WebSocket介绍+3分钟时间使用WebSocket搭建属自己的聊天室

WebSocket 的由来 在 WebSocket 出现之前&#xff0c;我们想实现实时通信、变更推送、服务端消息推送功能&#xff0c;我们一般的方案是使用 Ajax 短轮询、长轮询两种方式&#xff1a;比如我们想实现一个服务端数据变更时&#xff0c;立即通知客户端功能&#xff0c;没有 WebS…

【网站项目】308学生档案管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【PDF技巧】网上下载的pdf文件怎么才能编辑

不知道大家有没有遇到过网上下载的PDF文件不能编辑的情况&#xff0c;今天我们来详细了解一下导致无法编辑的原因即解决方法有哪些。 第一种原因&#xff1a;PDF文件中的内容是否是图片&#xff0c;如果确认是图片文件&#xff0c;那么我们想要编辑&#xff0c;就可以先使用PD…

HTML5:七天学会基础动画网页6

CSS3自定义字体 ①&#xff1a;首先需要下载所需字体 ②&#xff1a;把下载字体文件放入 font文件夹里&#xff0c;建议font文件夹与 css 和 image文件夹平级 ③&#xff1a;引入字体&#xff0c;可直接在html文件里用font-face引入字体&#xff0c;分别是字体名字和路径 例…

《TCP/IP详解 卷一》第12章 TCP初步介绍

目录 12.1 引言 12.1.1 ARQ和重传 12.1.2 滑动窗口 12.1.3 变量窗口&#xff1a;流量控制和拥塞控制 12.1.4 设置重传的超时值 12.2 TCP的引入 12.2.1 TCP服务模型 12.2.2 TCP可靠性 12.3 TCP头部和封装 12.4 总结 12.1 引言 关于TCP详细内容&#xff0c;原书有5个章…

上位机图像处理和嵌入式模块部署(上、下位机通信的三个注意点)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 如果最终部署在客户现场的是一个嵌入式设备&#xff0c;那么上位机在做好了算法编辑和算法部署之后&#xff0c;很重要的一步就是处理上位机和下位…

【网站项目】139选课排课系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

spring注解驱动系列--自动装配

Spring利用依赖注入&#xff08;DI&#xff09;&#xff0c;完成对IOC容器中中各个组件的依赖关系赋值&#xff1b;依赖注入是spring ioc的具体体现&#xff0c;主要是通过各种注解进行属性的自动注入。 一、Autowired&#xff1a;自动注入 一、注解介绍 1、默认优先按照类型去…