LightGBM, Light Gradient Boosting Machine
演算法如何使用,那天我突然覺得會使用machine learning的package固然很厲害,但有些時候還是要有一個尋根的心態,所以想帶給大家一個新的系列:Lightgbm explained系列
如果想更了解LightGBM,可以看我的LightGBM explained系列文:
- LightGBM + GridSearchCV 調整參數(調參)feat. Categorical Data處理
- LightGBM explained系列——Histogram-based algorithm是什麼?
- LightGBM explained系列——Exclusive Feature Bundling(EFB)是什麼?
- LightGBM explained系列——Gradient-based One-Side Sampling(GOSS)是什麼?
中文名稱翻作"直方圖優化演算法"
LightGBM explained-Histogram-based algorithm
要搞懂LightGBM的演算法架構,必須先理解基底演算法:
Histogram-based algorithm直方圖優化演算法:針對split
point finding的優化
針對連續型特徵資料,特徵值(feature)進行裝箱(bin)處理,裝箱處理就是特徵工程中的離散化。換句話說,將某個區間的數據映射到離散的數據值。
四個for迴圈:
- 第一個for 針對當前模型所有葉子節點(也就是資料的特徵/欄位)進行處理。
→根據前面的例子,就是對”身高”、”體重”欄位進行處理。
建立直方圖
- 第二個for針對訓練資料中的每個feature進行處理,開始先建立一個新的直方圖。
→對”身高”、”體重”創立一個直方圖。
- 第三個for 針對所有樣本,以直方圖儲存/表達兩個資訊:
- 每個bin中樣本的梯度之和(H[ f.bins[i] ].g)
- 每個bin中樣本數量(H[ f.bins[i] ].n)
身高直方圖H[“身高”f.bins[0]].g梯度 + 累積梯度g0 = 0 bin的樣本梯度身高直方圖H[“身高”f.bins[1]].g梯度 + 累積梯度g1 = 1 bin的樣本梯度……→180歸屬於3 bin,計算梯度,加上g3;175歸屬於2 bin,計算梯度,加上g2;160歸屬於2 bin,計算梯度,加上g2;……。 - 有幾個bin?依據已事先分好的bins數決定。
身高直方圖H[“身高”f.bins[0]].n數量+1= 0 bin的數量總和……
→g2數量總和= 2;g3數量總和= 1;……。
尋找最佳spliting point
- 第四個for 針對所有直方圖(即所有bin),尋找最佳的spliting point。
- 以當前bin做為分割點,計算SL(=當前bin為基準向左所有bin的總梯度和)
和nL(=當前bin為基準向左所有bin的數量總和) - 計算SR(當前bin為基準向右所有bin的數量總和) = SP(所有bin的梯度總和) – SL和nR(當前bin為基準向右所有bin的數量總和) = nP(所有bin的數量總和) – nL
有加速的作用? 從#data變成#bin,減少複雜度。 - 計算∆Loss=(SL^2)/nL +(SR^2)/nR -(SP^2)/n_P
Loss的計算依據? 應是依據使用loss function而訂。 - 以information gain最高(=Loss最小)的bin做為spliting point
例如:
”身高”的連續數值0~200
- [0, 100) → B11
- [100, 150) → B12
- [150, 180) → B13
- [180, 200) → B14
身高
|
性別
| |
0
|
180
|
0
|
1
|
175
|
1
|
2
|
160
|
0
|
j父節點
k左節點
l右節點=父節點-左節點
計算:B13 = 2 – 2 = 0;B14 = 1 – 0 = 0
B21 = 2 – 1 = 1;B22 = 1 – 1 = 0
Reference
- Guolin Ke, Qi Meng, Thomas Finley, Taifeng Wang, Wei Chen, Weidong Ma, Qiwei Ye, and Tie-Yan Liu. “LightGBM: A Highly Efficient Gradient Boosting Decision Tree”. In Advances in Neural Information Processing Systems (NIPS), pp. 3149-3157. 2017. https://www.microsoft.com/en-us/research/wp-content/uploads/2017/11/lightgbm.pdf
- LightGBM 中文文档
- LightGBM and XGBoost Explained
- 学习笔记——LightGBM(Light Gradient Boosting Machine) https://blog.rocuku.cc/lightgbm-summary/
- 快的不要不要的lightGBM
https://zhuanlan.zhihu.com/p/31986189 - LightGbm之直方图优化理解
https://www.deeplearn.me/2315.html - Lightgbm 直方图优化算法深入理解 https://blog.csdn.net/anshuai_aw1/article/details/83040541
- Learning Decision Trees From Histogram Data https://people.dsv.su.se/~tony/papers/dmin_2015.pdf
- Lightgbm 直方圖優化演算法深入理解
https://www.itread01.com/content/1544818691.html - 『我爱机器学习』集成学习(四)LightGBM https://www.hrwhisper.me/machine-learning-lightgbm/
沒有留言:
張貼留言