【推薦算法系列十七】: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+e?z1?.
在這里插入圖片描述

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.pswp.cn/news/717312.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717312.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717312.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AAAI2024-分享若干篇有代碼的優秀論文-圖神經網絡、時間序列預測、知識圖譜、大模型等

圖神經網絡、大模型優化方向系列文章目錄 為了方便大家根據自己的興趣查看自己的研究方向論文,在這里進行了細分。如果有對其中的論文感興趣的,可以查看對應的文章在論文相應的代碼,方便快速上手學習,也可以借助這些代碼的學習快…

16 Educational Codeforces Round 142 (Rated for Div. 2)C. Min Max Sort(遞歸、思維、dp)

C. Min Max Sort 很不錯的一道題目,不過腦電波和出題人每對上, q w q 。 qwq。 qwq。 正難則反。 我們考慮最后一步是怎么操作的。 最后一步一定是對 1 1 1和 n n n進行操作 那么上一步呢? 上一步應該是對 2 2 2和 n ? 1 n-1 n?1 以此類推…

AMD“高級洞察”系列揭示Epyc Naples和Rome原型CPU早期無法啟動問題

AMD在其新的YouTube視頻系列《高級洞察》第一集中,由AMD首席技術官Mark Papermaster擔任主持人,討論了AMD在數據中心領域的突破性進展及其持續增長。然而,AMD在服務器業務的發展并非一帆風順,兩位高管公開討論了早期Epyc Naples和…

【Python】環境管理怎么選擇【virtualenv】【pipenv】【 poetry】【 conda】

前言 剛入門Python,看到PyCharm的環境管理選擇有好幾個選擇,分別是virtualenv、pipenv、venv、conda,只知道這些都可以用來管理Python環境的,但不知道這些環境有什么區別,所以,本文將對這些環境管理進行總…

Avalonia學習(二十九)-儀表

Avalonia制作儀表盤&#xff0c;把控件給大家演示一下&#xff0c;Avalonia有三類自定義控件&#xff0c;分別是用戶控件、模版控件、自主控件。前面已經很多用戶控件了&#xff0c;這個是演示模版控件&#xff0c;另外一種不知道哪種情況下使用。 前端代碼&#xff1a; <…

想從事數據方向職場小白看過來, 數據方面的一些英文解釋

想從事數據方向職場小白看過來&#xff0c;一些英文名詞解釋 文章目錄 想從事數據方向職場小白看過來&#xff0c;一些英文名詞解釋 英文類解釋NoSQL&#xff1a;ESB&#xff1a;ACID &#xff1a;Data Vault&#xff1a;MDM&#xff1a;OLAP&#xff1a;SCD:SBA&#xff1a;MP…

【Django】執行查詢——比較、刪除、復制、批量修改對象

以下述模型為基礎&#xff0c;討論檢索對象的方式方法&#xff1a; from datetime import datefrom django.db import modelsclass Blog(models.Model):name models.CharField(max_length100)tagline models.TextField()def __str__(self):return self.nameclass Author(mod…

【vue】v-if、v-show、v-for 相關所有面試題總結

v-if 和 v-show 的區別 兩個重點【dom】和【生命周期】 v-if 惰性指令&#xff0c;false 不會被編譯、渲染不會存在 DOM 中切換開銷大&#xff0c;需要重新創建元素值變化&#xff0c;使用 v-if 的組件生命周期執行順序 true 變為 false【組件的銷毀】 beforeDestroy / befor…

[Flutter]shared_preferences基本用法以及可視化管理存儲的key和value類型

shared_preferences 是一個Flutter插件&#xff0c;它提供了一種簡單的方式來在應用程序中存儲和獲取持久化的鍵值對數據。它可以用于存儲應用程序的配置信息、用戶偏好設置、登錄狀態等。 使用 shared_preferences 插件&#xff0c;你可以在應用程序中輕松地保存和讀取數據&a…

Java中線程相關的知識

創建子線程的三種方式: 1.自定義線程任務類繼承線程類&#xff0c;以便繼承其功能,重寫其run方法(里面寫自己需要實現的功能)&#xff0c;在main方法調用時創建其任務類實例化對象&#xff0c;然后調用對象的start方法(繼承自父類)&#xff0c;即成功創建線程 優點:創建方式簡…

Pandas DataFrame 基本操作實例100個

Pandas 是一個基于NumPy的數據分析模塊&#xff0c;最初由AQR Capital Management于2008年4月開發&#xff0c;并于2009年底開源。Pandas的名稱來源于“Panel Data”&#xff08;面板數據&#xff09;和“Python數據分析”&#xff08;data analysis&#xff09;。這個庫現在由…

來不及了!大學必須完成的四件事!

老師們常說&#xff0c;上大學就輕松了 其實不然 大學不是人生的終點&#xff0c;而是新的起跑線 不是休息站&#xff0c;而是進入社會的最后沖刺跑道 大學生活苦樂參半&#xff0c;成人世界即將來臨 出了校門&#xff0c;你會發現社會復雜多變&#xff0c;需要不斷學習 稍…

excel中如何使用VLOOKUP和EXACT函數實現區分大小寫匹配數據

在 Excel 中&#xff0c;VLOOKUP 函數默認情況下是不區分大小寫的&#xff1a; 比如下面的案例&#xff0c;直接使用VLOOKUP函數搜索&#xff0c;只會搜索匹配到不區分大小寫的第一個 如果我們想要實現區分大小寫的精確匹配&#xff0c;可以使用 EXACT 函數結合 VLOOKUP 函數 …

【簡說八股】Redisson的守護線程是怎么實現的

Redisson Redisson 是一個 Java 語言實現的 Redis SDK 客戶端&#xff0c;在使用分布式鎖時&#xff0c;它就采用了「自動續期」的方案來避免鎖過期&#xff0c;這個守護線程我們一般也把它叫做「看門狗」線程。 Redission是一個在Java環境中使用的開源的分布式緩存和分布式鎖實…

PyTorch-卷積神經網絡

卷積神經網絡 基本結構 首先解釋一下什么是卷積&#xff0c;這個卷積當然不是數學上的卷積&#xff0c;這里的卷積其實表示的是一個三維的權重&#xff0c;這么解釋起來可能不太理解&#xff0c;我們先看看卷積網絡的基本結構。 通過上面的圖我們清楚地了解到卷積網絡和一般網…

【Javascript】設計模式之發布訂閱模式

文章目錄 1、現實中的發布&#xff0d;訂閱模式2、DOM 事件3、簡單的發布-訂閱模式4、通用的發布-訂閱模式5、先發布再訂閱6、小結 發布—訂閱模式又叫觀察者模式&#xff0c;它定義對象間的一種一對多的依賴關系&#xff0c;當一個對象的狀態發生改變時&#xff0c;所有依賴于…

Mysql深入學習 基礎篇 Ss.02 詳解四類SQL語句

我親愛的對手&#xff0c;亦敵亦友&#xff0c;但我同樣希望你能成功&#xff0c;與我一起&#xff0c;站在人生的山頂上 ——24.3.1 一、DDL 數據定義語言 1.DDL —— 數據庫操作 查詢 查詢所有數據庫 show databases; 查詢當前數據庫 select database(); 創建 create databa…

【簡說八股】Nginx、GateWay、Ribbon有什么區別?

前言 在現代的微服務架構中&#xff0c;Nginx、Gateway 和 Ribbon 都是處理網絡請求和服務的組件&#xff0c;但它們各自扮演的角色和提供的功能有所不同。下面我將詳細解釋它們之間的區別&#xff1a; Nginx Nginx 是一個高性能的 HTTP 和反向代理服務器&#xff0c;它也可…

Golang Vs Java:為您的下一個項目選擇正確的工具

Java 首次出現在 1995 年&#xff0c;由 James Gosling 和 Sun Microsystems 的其他人開發的一種新編程語言。從那時起&#xff0c;Java 已成為世界上最受歡迎和廣泛使用的編程語言之一。Java 的主要特點包括其面向對象的設計、健壯性、平臺獨立性、自動內存管理以及廣泛的內置…

MSMFN

CDFI是彩色多普勒血流成像 輔助信息 作者未提供數據