一、概念

        GBDT-LR模型由FaceBook(现在的Meta)团队于2014年在论文《Practial Lessons from Predicting Clicks on Ads at Facebook》中提出,目标是用于预测FaceBook的广告点击量(实际上广告和推荐领域很多算法模型都是共用的)。GBDT-LR模型结合了梯度提升决策树(Gradient Boosting Decision Tree,GBDT)和逻辑回归(Logistic Regression,LR)模型。它利用GBDT的强大特征提取能力和LR的高效分类能力,在推荐系统、点击率预估等领域发挥着重要作用。模型的基本思想是先用GBDT对数据进行特征提取,然后将提取的特征输入到LR模型中进行分类。

二、原理

1、GBDT部分

        GBDT是一种集成学习方法,通过构建多个决策树来提升模型的预测性能。每棵树都是在前一棵树的残差基础上进行训练的,逐步减少预测误差。最终,GBDT会生成一组新的特征,这些特征是通过树的叶子节点编码得到的:

  • 训练多棵CART回归树(通常为浅层树,深度3-5),每棵树拟合前一轮残差(负梯度方向)。
  • 每棵树的叶子节点生成离散化特征(One-Hot编码),例如第k棵树的第m个叶子节点对应特征值为1,其余为0。
  • 所有树的叶子节点特征拼接形成新特征向量(维度=树数量×每棵树叶子数)。

        一般来说,GBDT部分的输入可以是各种能获取到的特征,如下:

  • 用户特征:用户ID、历史行为(点击/购买/浏览)、人口属性(年龄/性别)、兴趣标签、实时行为序列
  • 物品特征:物品ID、类别、标签、文本描述、热度值、上下文信息(发布时间/位置)
  • 上下文特征:时间戳、设备类型、地理位置、网络环境
  • 交互特征:用户与物品的交叉统计(如点击率、曝光转化率)

2、LR部分

        逻辑回归是一种广泛使用的线性分类模型,适用于二分类问题。它通过学习特征与标签之间的线性关系来进行分类。将GBDT生成的特征向量输入逻辑回归模型,通过线性组合和Sigmoid函数计算概率:

        基于上述结果,可预测用户对推荐物品的点击概率(CTR预估),输出值为0-1之间的概率值,用于排序阶段确定推荐优先级。

三、python实现

        实际应用需根据具体任务调整GBDT模型的入参、LR模型的输入特征等内容。此外,这里的实现使用了lightGBM的GBDT,原因是lightGBM支持TB级大规模的数据处理和分布式训练,在内存占用和训练速度上也由于sklearn。

        更重要的是,在GBDT-LR模型中,关键步骤是将GBDT的叶子节点索引进行one-hot编码后作为新特征输入到LR中。这里的核心要求是相同的输入样本在不同的树中对应的叶子节点索引应该是稳定且唯一的。而sklearn方法返回的是全局节点编号(所有树的节点统一编号),而不是每个树独立的叶子节点编号,这容易导致不同树的叶子节点可能被编码到相同的特征维度上,且当树的结构发生变化(如增加树的数量)时,节点编号可能会重排,导致模型不稳定。在lightGBM中,每个树的叶子节点编号是独立的,从而避免了特征冲突和编号不稳定的问题。

import numpy as np
import pandas as pd
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import OneHotEncoder
from sklearn.metrics import roc_auc_score
import lightgbm as lgb# 生成示例数据
def generate_sample_data():X, y = make_classification(n_samples=10000, n_features=50, n_informative=20, n_redundant=10,random_state=42)return X, y# 构建GBDT-LR模型
def gbdt_lr_model(X, y):# 划分训练集和测试集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# ------------------------# 第一步:训练GBDT模型# ------------------------gbdt = lgb.LGBMClassifier(num_leaves=31,learning_rate=0.05,n_estimators=100,objective='binary',random_state=42)gbdt.fit(X_train, y_train)# 第二步:使用GBDT生成新特征# 兼容旧版本LightGBM的写法X_train_gbdt = gbdt.predict(X_train, pred_leaf=True)  # 得到叶子节点索引X_test_gbdt = gbdt.predict(X_test, pred_leaf=True)# 第三步:对叶子节点索引进行one-hot编码encoder = OneHotEncoder()X_train_transformed = encoder.fit_transform(X_train_gbdt)X_test_transformed = encoder.transform(X_test_gbdt)# 第四步:将原始特征与GBDT生成的特征拼接X_train_combined = np.hstack([X_train, X_train_transformed.toarray()])X_test_combined = np.hstack([X_test, X_test_transformed.toarray()])# ------------------------# 第五步:训练LR模型# ------------------------lr = LogisticRegression(penalty='l2',C=0.1,solver='lbfgs',max_iter=1000,random_state=42)lr.fit(X_train_combined, y_train)# 第六步:预测并评估y_pred_proba = lr.predict_proba(X_test_combined)[:, 1]auc = roc_auc_score(y_test, y_pred_proba)print(f"GBDT-LR模型的AUC: {auc:.4f}")# 为了对比,单独训练一个LR模型lr_only = LogisticRegression(penalty='l2',C=0.1,solver='lbfgs',max_iter=1000,random_state=42)lr_only.fit(X_train, y_train)y_pred_proba_lr_only = lr_only.predict_proba(X_test)[:, 1]auc_lr_only = roc_auc_score(y_test, y_pred_proba_lr_only)print(f"仅使用LR模型的AUC: {auc_lr_only:.4f}")return {'gbdt_model': gbdt,'lr_model': lr,'encoder': encoder,'auc': auc,'auc_lr_only': auc_lr_only} X, y = generate_sample_data()
model = gbdt_lr_model(X, y)
print('AUC: ', model['auc'])

四、应用场景

        在推荐系统的各个模块中,GBDT-LR模型一般用于精排环节。通常使用它进行点击率(CTR)预估,从而对召回/粗排后的候选集(通常百至千级别)进行精准的打分排序,最后优先展示高CTR商品。

阶段任务GBDT-LR适用性解释
召回海量大数据候选集快速筛选->万级返回结果GBDT-LR需逐条计算点击率,效率不足
粗排万级->千级候选集初步排序GBDT-LR需逐条计算点击率,效率不足
精排千级->百级需高精度CTR预估,计算量小
重排业务规则调整最终排序依赖规则

 

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

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

相关文章

Java实现Excel图片URL筛选与大小检测

Java实现Excel图片URL筛选与大小检测 在数据处理场景中,我们常需筛选Excel中的图片URL。本文分享一个完整的Java方案,涵盖从读取图片URL到检测有效性、筛选大小,再到生成新Excel文件的全过程,同时讲解开发与优化过程,…

Java 实现后端调用 Chromium 浏览器无头模式截图的方案

Java 实现后端调用 Chromium 浏览器无头模式截图的方案 1. 使用 Playwright 优点:功能强大、支持多浏览器(Chromium/Firefox/WebKit)、支持异步操作。实现方式: 利用 Playwright 创建无头浏览器实例;使用 Java 的调度…

基于多模态文档解析与RAG的行业知识库构建技术指南

1. 技术背景 随着企业非结构化数据(扫描件、PDF、图像等)占比超过80%,传统关键词检索已无法满足精准问答需求。本文提出融合**计算机视觉(CV)与大语言模型(LLM)**的解决方案,关键技…

基于YOLOv11+PP-OCRv5深度学习的智能车牌检测与识别系统python源码+pytorch模型+评估指标曲线+精美GUI界面

【算法介绍】 智能车牌检测与识别系统借助当下前沿的 YOLOv11 算法以及 PP-OCRv5 算法,能够在复杂多样的环境场景中,快速且精准地达成实时车牌检测与识别任务。在现代交通管理领域,该技术意义重大,它能够推动涉及车辆识别与记录的…

[深度学习]全连接神经网络

目录 一、实验目的 二、实验环境 三、实验内容 3.1 完成解压数据集相关操作 3.2分析代码结构并运行代码查看结果 3.3修改超参数(批量大小、学习率、Epoch)并对比分析不同结果 3.4修改网络结构(隐藏层数、神经元个数)并对比分…

openEuler安装BenchmarkSQL

BenchmarkSQL是一个用于评估数据库性能的开源工具。它模拟TPC-C(Transaction Processing Performance Council)基准测试场景,该场景主要用于衡量数据库在处理大量并发事务时的能力。TPC-C测试场景模拟了一个典型的批发分销商的业务环境&#…

分库分表之优缺点分析

大家好,我是工藤学编程 🦉一个正在努力学习的小博主,期待你的关注实战代码系列最新文章😉C实现图书管理系统(Qt C GUI界面版)SpringBoot实战系列🐷【SpringBoot实战系列】Sharding-Jdbc实现分库…

【2025年超详细】Git 系列笔记-4 git版本号及git相关指令运用。

系列笔记 【2025年超详细】Git 系列笔记-1 Git简述、Windows下git安装、Linux下git安装_displaying 2e144 commits. adjust this setting in -CSDN博客 【2025年超详细】Git 系列笔记-2 github连接超时问题解决_2025访问github-CSDN博客 【2025年超详细】Git 系列笔记-3 Git…

图像特征检测算法SuperPoint和SuperGlue

SuperPoint 背景与概述 :SuperPoint 是一个自监督的全卷积神经网络,用于提取图像中的兴趣点及其描述子。它在 2018 年由 Magic Leap 提出,通过在合成数据集上预训练一个基础检测器 MagicPoint,然后利用同胚适应技术对真实图像数据…

nginx 和 springcloud gateway cors 跨域如何设置

在跨域资源共享(CORS)配置中,Nginx 和 API Gateway(如Spring Cloud Gateway、Kong等)是两种常见的解决方案,它们的配置逻辑和适用场景有所不同。以下是详细对比和配置示例: 一、核心区别 维度NginxAPI Gateway定位反向代理/Web服务器微服务流量入口配置位置基础设施层应…

电路笔记(信号):一阶低通RC滤波器 一阶线性微分方程推导 拉普拉斯域表达(传递函数、频率响应)分析

目录 RC 低通滤波器电路一阶线性微分方程推导拉普拉斯域表达(传递函数)传递函数 H ( s ) H(s) H(s)频率响应(令 s j ω s j\omega sjω)幅频特性:相位特性:Bode 图(线性系统频率响应&#x…

【Git】删除远程分支时,本地分支还能看到

当远程仓库的分支被删除后,本地通过 git branch -a 或 git remote show origin 仍能看到这些分支的引用,是因为本地存储的远程跟踪分支(位于 refs/remotes/origin/)未被同步更新。以下是解决方法: 解决方案&#xff1…

Cubase 通过 MIDIPLUS MIDI 键盘进行走带控制的设置方法

第一步,在官网下载xml配置文件。 https://midiplus.com/upload/202101/29/Xpro & Xpro_mini控制脚本(Cubase).zip 第二步,Cubase中按如图步骤添加映射。 将MIDI键盘连接到电脑后打开Cubase软件,点选菜单“工作室”->“工作室设置”&…

第十八章 Linux之Python定制篇——Python开发平台Ununtu

1. Ubuntu介绍 Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的开源GUN/Linux操作系统,Ubuntu基于GUN/Linux,支持x86、amd64(即x64)和ppc架构,有全球专业开发团队(Canonical…

推荐轻量级文生视频模型(Text-to-Video)

1. ModelScope T2V by 阿里达摩院(推荐) 模型名:damo/text-to-video-synthesis 输入:一句文字描述(如:"a panda is dancing") 输出:2秒视频(16帧&#xff0c…

流编辑器sed

sed简介 sed是一种流编辑器,处理时,把当前处理的行存储在临时缓冲区中,称为模式空间,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下行,这样不断重复&#xf…

商用密码基础知识介绍(上)

一、密码的基础知识 1、密码分类 根据《中华人民共和国密码法》,国家对密码实行分类管理,分为密码分为核心密码、普通密码和商用密码。 (1)核心密码、普通密码 核心密码、普通密码用于保护国家秘密信息,核心密码保护…

PROFINET主站S7-1500通过协议网关集成欧姆龙NJ系列TCP/IP主站

一、项目背景 某大型新能源电池生产企业,致力于提升电池生产的自动化水平和智能化程度。其生产线上,部分关键设备采用了不同的通信协议。在电池生产的前段工序,如原材料搅拌、涂布等环节,使用了西门子S7-1500系列PLC作为ROFINET协…

Vue3 + TypeScript + Element Plus + el-input 输入框列表按回车聚焦到下一行

应用效果:从第一行输入1,按回车,聚焦到第二行输入2,按回车,聚焦到第三行…… 一、通过元素 id,聚焦到下一行的输入框 关键技术点: 1、动态设置元素 id 属性为::id"input-appl…

FramePack 全面测评:革新视频生成体验

在 AI 视频生成领域,FramePack 自问世便备受瞩目,它凭借独特的技术架构,号称能打破传统视频生成对高端硬件的依赖,让普通电脑也能产出高质量视频。此次测评,我们将全方位剖析 FramePack,探究它在实际应用中…