網(wǎng)站建設(shè)最新教程網(wǎng)絡(luò)營(yíng)銷外包收費(fèi)
????????LightGBM(Light Gradient Boosting Machine)是一種基于梯度提升決策樹(GBDT)的框架,由微軟提出。它具有高效的訓(xùn)練速度、低內(nèi)存占用、支持并行和GPU加速等特點(diǎn),非常適合大規(guī)模數(shù)據(jù)的訓(xùn)練任務(wù),尤其在分類和回歸任務(wù)中表現(xiàn)突出。LightGBM的核心原理可以從以下幾個(gè)方面來理解:
?LightGBM模型特點(diǎn)
(一)基于梯度提升的樹模型
????????LightGBM是一個(gè)梯度提升決策樹(GBDT, Gradient Boosting Decision Tree)算法的改進(jìn)版本,利用多個(gè)決策樹的集合來進(jìn)行學(xué)習(xí)。GBDT的基本思想是通過迭代地構(gòu)建一系列弱學(xué)習(xí)器(通常是決策樹)來提升模型的整體性能,每一步都構(gòu)建一個(gè)新的樹以減少前一階段的誤差。通過累積的方式使得預(yù)測(cè)誤差不斷減少,最終得到一個(gè)準(zhǔn)確的預(yù)測(cè)模型。
注:如果要了解?LightGBM 的具體實(shí)現(xiàn)原理,可以先看文章XGBoost模型,之后再來看本篇文章,這里我就不反復(fù)寫啦。在本篇文章,涉及相對(duì)于XGBoost,LightGBM有哪些優(yōu)秀的特點(diǎn),便于大家選擇合適的模型。大佬的話就當(dāng)我在說廢話吧hhhh
(二)葉子生長(zhǎng)策略(Leaf-wise Growth)
????????傳統(tǒng)的GBDT通常采用層級(jí)生長(zhǎng)(Level-wise Growth)方式,即每一層的節(jié)點(diǎn)同時(shí)擴(kuò)展,直到達(dá)到預(yù)設(shè)深度。而LightGBM采用葉子生長(zhǎng)策略,即每次選擇增益最大的葉子節(jié)點(diǎn)繼續(xù)分裂。葉子生長(zhǎng)能夠顯著降低訓(xùn)練時(shí)間,因?yàn)樗佑羞x擇性,只擴(kuò)展當(dāng)前最有助于提升模型效果的節(jié)點(diǎn)。不過,這種策略會(huì)導(dǎo)致樹結(jié)構(gòu)不平衡,容易產(chǎn)生過擬合,因此需要使用正則化和控制樹的最大深度來緩解。
-
層級(jí)生長(zhǎng)(Level-wise Growth): 傳統(tǒng)GBDT通常采用層級(jí)生長(zhǎng)策略,即每次在當(dāng)前層中的所有節(jié)點(diǎn)上都進(jìn)行分裂,保證所有葉子節(jié)點(diǎn)的深度相同。這種策略較為簡(jiǎn)單,但會(huì)浪費(fèi)大量計(jì)算資源在效果有限的節(jié)點(diǎn)上,尤其在數(shù)據(jù)量較大時(shí),效率較低。
-
葉子生長(zhǎng)(Leaf-wise Growth): LightGBM采用葉子生長(zhǎng)策略,即在每一輪中,只選擇增益最大的葉子節(jié)點(diǎn)進(jìn)行分裂,而不是讓所有節(jié)點(diǎn)都分裂。這種策略使得模型能夠更好地聚焦于最具提升潛力的節(jié)點(diǎn),從而加速模型訓(xùn)練,同時(shí)也在相同樹深度下實(shí)現(xiàn)更好的性能。
示例圖1(層級(jí)生長(zhǎng)):
示例圖2(葉子生長(zhǎng)):?
(三)?直方圖算法(Histogram-based Algorithm)
?????????LightGBM引入了直方圖算法來加速特征分裂的過程。它將連續(xù)的特征值離散化成一定數(shù)量的bins(區(qū)間),每個(gè)bin代表一段連續(xù)的特征值范圍。訓(xùn)練過程中,LightGBM會(huì)根據(jù)這些bins計(jì)算每個(gè)分裂點(diǎn)的增益值,從而減少了計(jì)算量并加快了分裂速度。此外,直方圖算法在內(nèi)存占用上也更高效,因?yàn)樗恍枰鎯?chǔ)每個(gè)bin的統(tǒng)計(jì)信息,而非每個(gè)樣本的特征值。
(四)GOSS單側(cè)采樣(Gradient-based One-Side Sampling)
????????在處理大規(guī)模數(shù)據(jù)時(shí),LightGBM引入了基于梯度的單側(cè)采樣(GOSS)策略。GOSS的核心思想是對(duì)梯度絕對(duì)值較大的樣本保留較高的比例,而對(duì)梯度較小的樣本隨機(jī)采樣。因?yàn)樘荻却蟮臉颖就ǔ?duì)模型的更新更為重要,因此這種策略能夠保留更多關(guān)鍵信息,同時(shí)顯著減少樣本數(shù)量,加速訓(xùn)練過程。
(五)特征捆綁技術(shù)(EFB)
????????為了進(jìn)一步提高效率,LightGBM提出了排他特征捆綁(EFB)技術(shù)。EFB通過將互斥的稀疏特征捆綁在一起,減少了特征的維數(shù)?;コ馓卣魇侵冈谝粋€(gè)樣本中不會(huì)同時(shí)取非零值的特征,例如在一個(gè)文本分類任務(wù)中,某些詞匯不會(huì)同時(shí)出現(xiàn)。將這些特征打包為一個(gè)特征列,從而減少計(jì)算量和內(nèi)存占用。
(六)支持并行和分布式訓(xùn)練
????????LightGBM支持特征并行和數(shù)據(jù)并行。特征并行指的是多個(gè)工作節(jié)點(diǎn)分配到不同的特征上,減少在計(jì)算分裂點(diǎn)時(shí)的特征遍歷時(shí)間。而數(shù)據(jù)并行則將數(shù)據(jù)劃分到不同的機(jī)器中,每個(gè)機(jī)器上訓(xùn)練子集數(shù)據(jù)的模型,再將結(jié)果合并。這使得LightGBM能夠高效處理大規(guī)模數(shù)據(jù)集,尤其在分布式環(huán)境中表現(xiàn)出色。
(七)高效的正則化
為了控制模型的復(fù)雜度和防止過擬合,LightGBM提供了多種正則化手段,包括L1、L2正則化以及對(duì)葉節(jié)點(diǎn)數(shù)和樹深的控制。此外,通過設(shè)置最大深度、最小數(shù)據(jù)量等參數(shù),可以防止樹的過擬合問題,提升模型的泛化能力。
LightGBM 與?XGBoost 對(duì)比
(一)樹的生長(zhǎng)方式
-
XGBoost:
-
按層生長(zhǎng)(Level-wise growth):XGBoost 使用傳統(tǒng)的按層生長(zhǎng)策略,即每次擴(kuò)展樹的所有層級(jí),直到樹的每一層都填充完。這種策略在每一層都嘗試平衡樹的深度,有時(shí)可能導(dǎo)致樹的結(jié)構(gòu)較為均勻,但并不一定是最優(yōu)的。
-
-
LightGBM:
-
按葉生長(zhǎng)(Leaf-wise growth):LightGBM 使用按葉子生長(zhǎng)的策略。每次分裂時(shí),它選擇增益最大的葉子節(jié)點(diǎn)進(jìn)行擴(kuò)展。這使得樹的深度較大,能夠更快速地?cái)M合訓(xùn)練數(shù)據(jù),通常會(huì)提高模型的準(zhǔn)確性。
-
優(yōu)點(diǎn):按葉子生長(zhǎng)通常能帶來更高的預(yù)測(cè)準(zhǔn)確率,因?yàn)樗械財(cái)M合最難預(yù)測(cè)的部分。
-
缺點(diǎn):按葉生長(zhǎng)可能導(dǎo)致過擬合,尤其是當(dāng)樹的深度很大時(shí),因此需要更多的正則化措施來避免過擬合。
-
(二)特征處理與數(shù)據(jù)格式
-
XGBoost:
-
XGBoost 對(duì)數(shù)據(jù)進(jìn)行優(yōu)化,可以處理稀疏數(shù)據(jù)集,并且可以處理不同的數(shù)據(jù)類型(連續(xù)、類別等)。XGBoost 對(duì)類別特征的處理相對(duì)簡(jiǎn)單,通常需要通過手動(dòng)編碼(如獨(dú)熱編碼)將類別變量轉(zhuǎn)化為數(shù)值型特征。
-
-
LightGBM:
-
LightGBM 自帶對(duì)類別特征的處理機(jī)制,能夠直接處理原始的類別特征,而不需要手動(dòng)進(jìn)行獨(dú)熱編碼(One-Hot Encoding)。它通過特殊的類別特征分裂策略(如基于統(tǒng)計(jì)信息的分裂方法)來處理類別數(shù)據(jù),減少了內(nèi)存消耗和計(jì)算復(fù)雜度。
-
特征桶化(Bin):LightGBM 會(huì)通過將連續(xù)特征離散化成多個(gè)桶(bin)來加速訓(xùn)練過程,這個(gè)過程通過直方圖的方式進(jìn)行。
-
?(三)訓(xùn)練過程中的優(yōu)化
-
LightGBM:
-
直方圖優(yōu)化:LightGBM 使用直方圖來優(yōu)化數(shù)據(jù)存儲(chǔ)和分裂點(diǎn)計(jì)算,將數(shù)據(jù)離散化成多個(gè)區(qū)間(桶)。這種方法在特征分裂時(shí)大大減少了計(jì)算的復(fù)雜度,因?yàn)橹恍枰谕暗幕A(chǔ)上進(jìn)行分裂增益的計(jì)算,而不需要考慮每個(gè)樣本。
-
單邊梯度優(yōu)化(GOSS):LightGBM 引入了 GOSS 技術(shù),通過保留梯度較大的樣本并隨機(jī)采樣梯度較小的樣本,來減少計(jì)算量而不犧牲模型精度。
-
類別特征的高效處理:LightGBM 對(duì)類別特征的優(yōu)化非常高效,減少了對(duì)內(nèi)存的使用和計(jì)算時(shí)間。
-
(四)并行化與分布式訓(xùn)練
-
XGBoost:
-
XGBoost 支持?jǐn)?shù)據(jù)并行和模型并行。數(shù)據(jù)并行是指將訓(xùn)練數(shù)據(jù)分配到多個(gè)機(jī)器或 CPU 核心上,模型并行則是在不同的樹或不同的葉子節(jié)點(diǎn)上進(jìn)行并行計(jì)算。
-
在分布式環(huán)境中,XGBoost 采用了一種類似于 MapReduce 的框架來處理分布式訓(xùn)練,但在處理非常大規(guī)模數(shù)據(jù)時(shí),性能可能不如 LightGBM。
-
-
LightGBM:
-
LightGBM 支持高效的分布式訓(xùn)練。它對(duì)數(shù)據(jù)和任務(wù)進(jìn)行了更精細(xì)的劃分,可以在多機(jī)多卡環(huán)境下進(jìn)行高效的并行訓(xùn)練。LightGBM 可以在多臺(tái)機(jī)器上分布式訓(xùn)練,處理大規(guī)模數(shù)據(jù)時(shí),通常會(huì)比 XGBoost 更加高效。
-
(五)使用場(chǎng)景對(duì)比
-
XGBoost:在許多傳統(tǒng)機(jī)器學(xué)習(xí)任務(wù)中,XGBoost 的表現(xiàn)非常優(yōu)秀,尤其在小數(shù)據(jù)集或中等規(guī)模的數(shù)據(jù)集上,經(jīng)過精心調(diào)節(jié)參數(shù)后能獲得非常高的準(zhǔn)確性。
-
LightGBM:特別適合大規(guī)模數(shù)據(jù)集和高維稀疏數(shù)據(jù),在內(nèi)存使用和訓(xùn)練速度上有顯著優(yōu)勢(shì)。LightGBM 在大規(guī)模機(jī)器學(xué)習(xí)和工業(yè)應(yīng)用中往往表現(xiàn)得更為高效。
選擇建議:
-
如果數(shù)據(jù)集比較小或者中等,且需要非常高的精度,XGBoost 是一個(gè)不錯(cuò)的選擇。
-
如果數(shù)據(jù)集非常大,特別是具有大量特征和稀疏特征的情況,LightGBM 更為適用。
#??文章內(nèi)容來源于各渠道整理。若對(duì)大噶有幫助的話,希望點(diǎn)個(gè)贊支持一下叭!
#??文章如有錯(cuò)誤,歡迎大噶指正!