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