推薦模型之GBDT-LR

一、概念

? ? ? ? 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,探究它在實際應用中…