lightgbm的簡介
LightGBM 是一個梯度 boosting 架構, 使用基于學習算法的決策樹. 它是分布式的, 高效的, 裝逼的, 它具有以下優勢:
速度和記憶體使用的優化
減少分割增益的計算量
通過直方圖的相減來進行進一步的加速
減少記憶體的使用 減少并行學習的通信代價
稀疏優化
準确率的優化
Leaf-wise (Best-first) 的決策樹生長政策
類别特征值的最優分割
網絡通信的優化
并行學習的優化
特征并行
資料并行
投票并行
GPU 支援可處理大規模資料
1、效率
為了比較效率, 我們隻運作沒有任何測試或者度量輸出的訓練程序,并且我們不計算 IO 的時間。如下是耗時的對比表格:
Data xgboost xgboost_hist LightGBM
Higgs 3794.34 s 551.898 s 238.505513 s
Yahoo LTR 674.322 s 265.302 s 150.18644 s
MS LTR 1251.27 s 385.201 s 215.320316 s
Expo 1607.35 s 588.253 s 138.504179 s
Allstate 2867.22 s 1355.71 s 348.084475 s
我們發現在所有資料集上 LightGBM 都比 xgboost 快。
2、準确率
為了比較準确率, 我們使用資料集測試集部分的準确率進行公平比較。
Data Metric xgboost xgboost_hist LightGBM
Higgs AUC 0.839593 0.845605 0.845154
Yahoo LTR NDCG<sub>1</sub> 0.719748 0.720223 0.732466
NDCG<sub>3</sub> 0.717813 0.721519 0.738048
NDCG<sub>5</sub> 0.737849 0.739904 0.756548
NDCG<sub>10</sub> 0.78089 0.783013 0.796818
MS LTR NDCG<sub>1</sub> 0.483956 0.488649 0.524255
NDCG<sub>3</sub> 0.467951 0.473184 0.505327
NDCG<sub>5</sub> 0.472476 0.477438 0.510007
NDCG<sub>10</sub> 0.492429 0.496967 0.527371
Expo AUC 0.756713 0.777777 0.777543
Allstate
3、記憶體消耗
我們在運作訓練任務時監視 RES,并在 LightGBM 中設定 two_round=true (将增加資料載入時間,但會減少峰值記憶體使用量,不影響訓練速度和準确性)以減少峰值記憶體使用量。
Higgs 4.853GB 3.784GB 0.868GB
Yahoo LTR 1.907GB 1.468GB 0.831GB
MS LTR 5.469GB 3.654GB 0.886GB
Expo 1.553GB 1.393GB 0.543GB
Allstate 6.237GB 4.990GB
4、綜述
LightGBM是個快速的,分布式的,高性能的基于決策樹算法的梯度提升架構。可用于排序,分類,回歸以及很多其他的機器學習任務中。
Gbdt是受歡迎的機器學習算法,當特征次元很高或資料量很大時,有效性和可拓展性沒法滿足。lightgbm提出GOSS(Gradient-based One-Side Sampling)和EFB(Exclusive Feature Bundling)進行改進。lightgbm與傳統的gbdt在達到相同的精确度時,快20倍。
在競賽題中,我們知道XGBoost算法非常熱門,它是一種優秀的拉動架構,但是在使用過程中,其訓練耗時很長,記憶體占用比較大。在2017年年1月微軟在GitHub的上開源了一個新的升壓工具--LightGBM。在不降低準确率的前提下,速度提升了10倍左右,占用記憶體下降了3倍左右。因為他是基于決策樹算法的,它采用最優的葉明智政策分裂葉子節點,然而其它的提升算法分裂樹一般采用的是深度方向或者水準明智而不是葉,明智的。是以,在LightGBM算法中,當增長到相同的葉子節點,葉明智算法比水準-wise算法減少更多的損失。是以導緻更高的精度,而其他的任何已存在的提升算法都不能夠達。與此同時,它的速度也讓人感到震驚,這就是該算法名字 燈的原因。
LightGBM 中文文檔:
http://lightgbm.apachecn.org/#/ lightgbm github: https://github.com/Microsoft/LightGBM lightgbm pypi: https://pypi.org/project/lightgbm/lightgbm的安裝
pip install lightgbm