LightGBM(Light Gradient Boosting Machine,輕量級梯度提升機)梳理總結

LGB微軟團隊在 2017 年提出的梯度提升樹模型,核心定位是 “更高效的 XGBoost”—— 它在保持精度接近 XGBoost 的同時,通過“數據采樣優化”“特征壓縮”“樹生長策略改進”三大創新,將訓練速度提升 10-100 倍,內存消耗降低數倍,尤其適合大數據、高維特征場景(如千萬級樣本、百萬級特征)。

總結一下:LightGBM是以梯度提升框架為基礎,通過 “直方圖優化” 對特征分箱減少計算量、“單邊梯度采樣” 篩選關鍵樣本、“互斥特征捆綁” 壓縮特征維度,迭代訓練決策樹(每次擬合前序模型的殘差梯度),最終將所有樹的預測結果加權求和得到最終輸出。(通過梯度采樣(GOSS)減少樣本、特征捆綁(EFB)壓縮維度、葉子 - wise 生長提升精度的高效梯度提升樹;實現了 “速度提升 10 倍 + 精度不減 + 內存降低”)

一、LightGBM 與 GBDT、XGBoost 的關系

同屬 “梯度提升樹” ,核心邏輯都是 “串行訓練弱學習器,用新樹糾正舊樹錯誤”,但優化方向不同:

  • GBDT:基礎版,僅用一階導數,無工程優化,速度慢;
  • XGBoost:優化版,用一階 + 二階導數,加入正則化,支持并行計算分裂點,速度比 GBDT 快;
  • LightGBM:高效版,在 XGBoost 基礎上,通過 “梯度采樣”“特征捆綁”“葉子優先生長” 進一步提升效率,速度遠超 XGBoost,同時內存更省。

二、LightGBM 的核心原理:“用更少的計算,達到近似的效果”

LightGBM 的效率提升不是 “犧牲精度換速度”,而是通過 “精準減少無效計算”實現的。核心創新是兩大技術:GOSS(梯度 - based 單邊采樣)?和EFB(互斥特征捆綁),再加上葉子 - wise 樹生長策略 ,共同構成其核心原理。

1. GOSS(梯度 - based 單邊采樣):減少樣本量,保留關鍵信息

傳統梯度提升樹(如 XGBoost)訓練每棵樹時需遍歷全量樣本計算分裂增益,當樣本量達千萬級時,耗時極長。GOSS 的核心思想是:梯度絕對值大的樣本對模型優化更重要,可優先保留;梯度小的樣本可部分丟棄,同時補償分布偏差

具體操作(以訓練第 m 棵樹為例):
  • 步驟 1:按樣本的梯度絕對值降序排序,保留前a×100%的大梯度樣本(如 a=0.2,保留 Top20%),記為集合 A;
  • 步驟 2:從剩余(1-a)×100%的小梯度樣本中,隨機采樣b×100%(如 b=0.1,采樣 10%),記為集合 B;
  • 步驟 3:計算分裂增益時,對集合 B 的樣本權重乘以(1-a)/b(補償因丟棄部分小梯度樣本導致的分布偏移);
  • 步驟 4:僅用A\bigcup B(總采樣率 a+b,通常 20%-30%)計算分裂增益,替代全量樣本。
為什么有效?

梯度絕對值大的樣本(如預測錯誤大的樣本)是模型需要重點糾正的,保留它們可保證分裂增益計算的準確性;梯度小的樣本(預測較準)對優化貢獻小,適當丟棄可大幅減少計算量(如樣本量從 1000 萬降至 300 萬,計算量減少 70%)。

2. EFB(互斥特征捆綁):壓縮特征數,適配高維稀疏場景

現實數據中,大量特征是 “互斥的”—— 即不同時取非零值(如 “性別 = 男” 和 “性別 = 女” 不會同時為 1,“職業 = 學生” 和 “職業 = 教師” 也不會同時為 1)。這些互斥特征可被 “捆綁” 成一個 “特征束”,減少特征總數,降低計算成本。

具體操作:
  • 步驟 1:識別互斥特征:構建 “特征沖突圖”,若兩個特征的非零值有重疊(不互斥),則標記為 “沖突”;
  • 步驟 2:貪心捆綁:優先將沖突少的特征加入同一束(控制沖突率,如允許≤5% 的沖突),沖突多的特征單獨成束;
  • 步驟 3:特征值映射:對同一束內的特征,按其取值范圍分配 “偏移量”(如特征 A 的取值范圍是 [0,10),特征 B 是 [0,20),則 B 的取值加 10,變為 [10,30)),確保捆綁后仍能區分原始特征值。
效果:

高維稀疏場景(如 One-Hot 編碼后的特征)中,特征數可從百萬級壓縮至數千級(如 5400 萬特征→1 萬束),直方圖構建時間從O(樣本數×5400萬)降至O(樣本數×1萬),直接帶來 10 倍以上速度提升。

3. 葉子 - wise 樹生長:用更少的樹達到更高精度

XGBoost 等模型采用 “層 - wise” 生長策略(按層分裂所有葉子節點),會生成許多對精度提升無關的葉子;而 LightGBM 采用 “葉子 - wise” 策略:每次從當前所有葉子中,選擇分裂增益最大的葉子進行分裂,直到達到樹深限制。

優勢:
  • 用更少的葉子節點(更少的樹)達到與 XGBoost 相當的精度(如 XGBoost 需要 1000 棵樹,LightGBM 可能只需 500 棵);
  • 避免 “層 - wise” 中對低增益葉子的無效分裂,減少計算量。

4. 直方圖優化:進一步加速分裂計算

XGBoost 已采用 “直方圖” 代替原始特征值(將連續特征分桶,用桶統計量替代逐個樣本計算),LightGBM 在此基礎上做了兩點優化:

  • 直方圖差加速:右子節點的直方圖 = 父節點直方圖 - 左子節點直方圖,無需單獨計算右子節點,節省 50% 時間;
  • 內存優化:用 “離散化的 bin 值” 存儲特征,而非原始浮點值,內存消耗降低約 70%。

三、LightGBM 的訓練流程

LightGBM 的流程與 XGBoost 類似,但每一步都融入了上述優化,具體步驟如下:

步驟 1:初始化模型

與 GBDT、XGBoost 一致,初始模型為常數(如樣本均值),最小化初始損失。

步驟 2:迭代訓練 M 棵樹(核心步驟)

對每輪m=1,2,...,M,執行:

2.1 計算梯度(一階導數)和二階導數

與 XGBoost 相同,計算每個樣本的一階導數g_i(梯度)和二階導數h_i(Hessian),作為后續計算的基礎。

2.2 GOSS 采樣:減少樣本量

按梯度絕對值排序,保留大梯度樣本(A)和部分小梯度樣本(B),得到采樣后的樣本集(A∪B),并對 B 的權重進行補償。

2.3 EFB 特征捆綁:壓縮特征數

對高維稀疏特征,通過互斥性檢測,將特征捆綁成特征束,減少特征總數(如從 100 萬→1 萬)。

2.4 構建直方圖

基于采樣后的樣本集和捆綁后的特征束,為每個特征束構建直方圖(統計每個 bin 的g_{i}h_{i}之和),并利用 “直方圖差加速” 計算左右子節點的直方圖。

2.5 葉子 - wise 分裂:生成第 m 棵樹
  • 從當前所有葉子中,選擇分裂增益最大的葉子(用g_{i}h_{i}計算增益,同 XGBoost 的增益公式);
  • 對該葉子進行分裂(按最優特征和閾值),生成左右子節點;
  • 重復分裂,直到達到樹深限制(max_depth)或葉子數限制(num_leaves),或增益小于閾值(min_gain_to_split)。
2.6 計算葉子權重并更新模型

用與 XGBoost 相同的公式計算葉子節點權重,并以學習率\eta縮放后,累加到當前模型中:

步驟 3:得到最終模型

四、LightGBM的應用場景與優勢

1. 應用場景

  • 超大規模樣本:百萬至億級樣本(如電商用戶行為數據、搜索引擎日志);
  • 高維稀疏特征:One-Hot 編碼后的類別特征(如用戶標簽、物品屬性)、文本特征(如詞袋模型);
  • 實時性要求高的任務:在線推薦、實時風控(需快速訓練和預測);
  • 各類機器學習任務:分類(二分類 / 多分類)、回歸、排序(如 CTR 預估、推薦排序)。

2. 優勢

優勢具體說明對比 XGBoost
訓練速度極快GOSS 減少樣本量(20%-30%)、EFB 壓縮特征數(10-100 倍)、直方圖差加速,三者結合使速度提升 10-100 倍XGBoost 無樣本采樣和特征捆綁,速度較慢
內存消耗低EFB 壓縮特征、直方圖存儲 bin 值(而非原始值),內存消耗降低 50%-70%XGBoost 需存儲全量特征的直方圖,內存占用高
精度接近最優葉子 - wise 生長策略 + GOSS/EFB 的理論誤差保證,精度與 XGBoost 基本持平(多數場景差距 < 1%)精度略高,但差距在可接受范圍內
原生支持類別特征無需手動 One-Hot 編碼(內置優化的類別特征處理,通過直方圖映射實現)需手動編碼(One-Hot 或標簽編碼),高基數類別特征處理繁瑣

五、其他

1. 與 XGBoost 的區別

維度XGBoostLightGBM
樹生長方式層 - wise(按層分裂所有葉子)葉子 - wise(優先分裂高增益葉子)
樣本處理全量樣本計算GOSS 采樣(保留關鍵樣本)
特征處理全量特征計算EFB 捆綁(壓縮特征數)
類別特征需手動編碼原生支持(自動處理)
過擬合風險較低(層 - wise 生長較穩健)較高(葉子 - wise 易過擬合,需嚴格控制樹深)

2. 關鍵超參數

LightGBM 的參數與 XGBoost 類似,但有幾個獨特參數需重點關注(調參優先級從高到低):

參數作用推薦范圍注意事項
num_leaves葉子節點最大數量(控制樹復雜度)31-255(默認 31)過大易過擬合(通常設為2^max_depth附近)
learning_rate學習率0.01-0.1n_estimators配合(小學習率需多樹)
max_depth樹的最大深度(限制葉子 - wise 生長)3-8防止樹過深導致過擬合(比 XGBoost 更重要)
subsample?&?colsample_bytree樣本 / 特征采樣比例0.7-0.9增加隨機性,抗過擬合
bagging_freq采樣頻率(每 k 輪采樣一次)0-5(0 表示不采樣)配合subsample使用,進一步減少過擬合
min_data_in_leaf葉子節點最小樣本數10-100過小易過擬合(尤其葉子 - wise 生長時)
boosting_type提升類型gbdt(默認)、dart( dropout 提升)dart可進一步抗過擬合,但速度稍慢

3. 常見誤區

  • ? 誤區 1:LightGBM 的葉子 - wise 生長 “一定更好”。
    ? 正確:葉子 - wise 生長精度高,但過擬合風險大,需嚴格控制num_leavesmax_depth(如num_leaves不超過2^max_depth);數據量小時,層 - wise 可能更穩健。

  • ? 誤區 2:LightGBM 處理類別特征 “無需任何操作”。
    ? 正確:需手動指定categorical_feature參數(標記哪些是類別特征);高基數類別特征(如用戶 ID,百萬級類別)仍需預處理(如哈希分桶),否則會導致直方圖構建緩慢。

  • ? 誤區 3:參數調優 “越復雜越好”。
    ? 正確:LightGBM 對參數的敏感度低于 XGBoost,優先調num_leavesmax_depthlearning_rate三個核心參數,其他參數用默認值即可。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/94869.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/94869.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/94869.shtml

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

相關文章

畢業項目推薦:29-基于yolov8/yolov5/yolo11的光伏板檢測識別系統(Python+卷積神經網絡)

文章目錄 項目介紹大全&#xff08;可點擊查看&#xff0c;不定時更新中&#xff09;概要一、整體資源介紹技術要點功能展示&#xff1a;功能1 支持單張圖片識別功能2 支持遍歷文件夾識別功能3 支持識別視頻文件功能4 支持攝像頭識別功能5 支持結果文件導出&#xff08;xls格式…

【實時Linux實戰系列】實時數據可視化技術實現

在當今數據驅動的世界中&#xff0c;實時數據可視化已成為理解和利用實時信息的關鍵工具。無論是在金融交易監控、工業生產監控、智能交通管理還是物聯網設備監控中&#xff0c;能夠將復雜的數據以直觀的圖表形式展示出來&#xff0c;對于快速決策和問題解決至關重要。實時數據…

【LeetCode每日一題】21. 合并兩個有序鏈表 2. 兩數相加

每日一題21. 合并兩個有序鏈表題目總體思路算法步驟時間復雜度與空間復雜度代碼2. 兩數相加題目總體思路算法步驟時間復雜度與空間復雜度代碼知識感悟2025.8.3021. 合并兩個有序鏈表 題目 將兩個升序鏈表合并為一個新的 升序 鏈表并返回。新鏈表是通過拼接給定的兩個鏈表的所…

DVWA靶場通關筆記-文件包含(Impossible級別)

目錄 一、源碼分析 二、文件包含防范分析 1、明確指定允許包含的文件 2、拒絕所有未在白名單中的輸入 3、總結 &#xff08;1&#xff09;白名單 (Allow List) &#xff08;2&#xff09;硬編碼/映射 (Hardcoding/Mapping) &#xff08;3&#xff09;輸入過濾 (Input F…

構建堅不可摧的數據堡壘:深入解析 Oracle 高可用與容災技術體系

在當今數字化時代&#xff0c;數據是企業的核心資產&#xff0c;而承載這些數據的數據庫系統的連續性與穩定性直接關系到企業的生死存亡。一次計劃外的停機或災難性的數據丟失&#xff0c;帶來的不僅是經濟上的巨大損失&#xff0c;更是對品牌信譽和客戶信任的致命打擊。因此&a…

【3D算法技術入門】如何基于建筑圖片重建三維數字資產?

要基于建筑圖片重建三維數字資產是一個復雜的計算機視覺任務&#xff0c;涉及圖像采集、特征提取、相機姿態估計、稠密重建和三維模型優化等多個步驟。下面我將提供一個基于Python的解決方案框架&#xff0c;使用開源庫實現從圖片到三維模型的基本流程。 首先需要安裝必要的庫&…

?CVPR2025 自動駕駛半監督 LiDAR 分割新范式:HiLoTs 框架深度解析

&#x1f4c4;論文題目&#xff1a;HiLoTs: High-Low Temporal Sensitive Representation Learning for Semi-Supervised LiDAR Segmentation in Autonomous Driving ??作者及機構&#xff1a; R.D. Lin、Pengcheng Weng、Yinqiao Wang、Fei Wang&#xff08;西安交通大學軟件…

【 MYSQL | 基礎篇 函數與約束 】

摘要&#xff1a;本文介紹數據庫中的函數與約束&#xff0c;函數含字符串、數值、日期、流程四類&#xff0c;可實現字符串處理、數值計算等需求。約束分六類&#xff0c;重點講外鍵約束的語法、刪除更新行為&#xff0c;保證數據正確完整。思維導圖1. 函數函數是指一段可以直接…

Oracle 數據庫性能調優:從瓶頸診斷到精準優化之道

引言&#xff1a;性能優化的本質在當今數據驅動的時代&#xff0c;數據庫性能直接關系到企業的運營效率和用戶體驗。Oracle 作為全球領先的關系型數據庫管理系統&#xff0c;承載著眾多企業的核心業務。然而&#xff0c;隨著數據量的增長和業務復雜度的提升&#xff0c;數據庫性…

楊校老師競賽課堂之C++語言GESP一級筆記

考試大綱 GESP一級考試大綱 計算機基礎與編程環境 計算機歷史 變量的定義與使用 基本數據類型&#xff08;整型、浮點型、字符型、布爾型&#xff09; 輸入與輸出&#xff08;cin與cout、scanf與printf&#xff09; 基本運算&#xff08;算術運算、關系運算、邏輯運算&am…

操作系統-管程

1. 為什么需要管程&#xff1f;—— 信號量 (Semaphore) 的困境在理解管程之前&#xff0c;你必須先知道它要解決什么問題。之前&#xff0c;我們使用信號量 (Semaphore) 來實現進程/線程間的同步與互斥。雖然信號量功能強大&#xff0c;但它存在兩個主要問題&#xff1a;編程復…

日志的實現

目錄 日志與策略模式 Log.hpp class LogStrategy基類 class ConsoleLogStrategy派生類 classFileLogStrategy派生類 日志等級 獲得時間戳 localtime_r函數詳解 函數原型 struct tm結構的指針 Logger類(重點) class LogMessage 日志信息類 std::stringstream 用法 重…

【論文閱讀】Sparse4D v2:Recurrent Temporal Fusion with Sparse Model

標題&#xff1a; Sparse4D v2&#xff1a;Recurrent Temporal Fusion with Sparse Model 作者&#xff1a; Xuewu Lin, Tianwei Lin, Zixiang Pei, Lichao Huang, Zhizhong Su motivation 在v1的基礎上&#xff0c;作者發現長時序有更好的效果&#xff0c;但v1的計算量太大&am…

構建免費的音視頻轉文字工具:支持多語言的語音識別項目

在當今數字時代&#xff0c;音視頻內容越來越多&#xff0c;但如何快速將其轉換為文字一直是一個挑戰。本項目提供了一個免費的解決方案&#xff0c;支持將視頻和音頻文件轉換為文字&#xff0c;并且支持多語言識別。 一個支持中英文的音視頻轉文字工具&#xff0c;集成了 Vos…

【開題答辯全過程】以 基于SpringBootVue的智能敬老院管理系統為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人&#xff0c;語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

Linux 830 shell:expect,ss -ant ,while IFS=read -r line,

[rootsamba caozx26]# scp /home/caozx26/pub root192.168.235.3:~/ root192.168.235.3s password: /home/caozx26/pub: not a regular file [rootsamba caozx26]# ls app km nntp.sh ntp.sh until1.sh 公共 圖片 音樂 find.sh l2 ntp1.sh pub u…

???????GPT-5發布引爆爭議,奧特曼連夜回應!付費充值的Plus用戶成最大贏家?

摘要&#xff1a; GPT-5發布后&#xff0c;社區口碑兩極分化&#xff0c;從“強無敵”到“還我4o”的呼聲并存。面對技術故障和用戶質疑&#xff0c;OpenAI CEO薩姆奧爾特曼及團隊火速回應&#xff0c;公布了一系列補救措施和未來計劃。本文將帶你速覽這場風波始末&#xff0c;…

Python 操作 Redis 的客戶端 - Redis Stream

Python 操作 Redis 的客戶端 - Redis Stream1. Redis Stream2. Redis Commands2.1. CoreCommands.xadd() (生產端)2.2. CoreCommands.xlen() (生產端)2.3. CoreCommands.xdel() (生產端)2.4. CoreCommands.xrange() (生產端)2.5. RedisClusterCommands.delete()3. Redis Stream…

【Qt開發】按鈕類控件(一)-> QPushButton

目錄 1 -> 什么是 PushButton&#xff1f; 2 -> 相關屬性 3 -> 代碼示例 3.1 -> 帶有圖標的按鈕 3.2 -> 帶有快捷鍵的按鈕 4 -> 總結 1 -> 什么是 PushButton&#xff1f; 在 Qt 框架中&#xff0c;QPushButton 是最基礎且最常用的按鈕控件之一&am…

Citrix 零日漏洞自五月起遭積極利用

安全研究員 Kevin Beaumont 披露了有關 CVE-2025-6543 的驚人細節&#xff0c;這是一個嚴重的 Citrix NetScaler 漏洞&#xff0c;在該公司發布補丁之前的幾個月里&#xff0c;該漏洞被積極利用作為零日攻擊。 Citrix 最初將其輕描淡寫為簡單的“拒絕服務”漏洞&#xff0c;但…