機器學習 lightgbm

2021-09-24 16:48:15 字數 1474 閱讀 9024

lightgbm是微軟推出的一款boosting框架,相對於傳統的xgboost有以下優點 

更快的訓練效率

低記憶體使用

更好的準確率

支援並行學習

可處理大規模資料

它摒棄了現在大部分gbdt使用的按層生長(level-wise)的決策樹生長策略,使用帶有深度限制的按葉子生長(leaf-wise)的策略。level-wise過一次資料可以同時**同一層的葉子,容易進行多執行緒優化,也好控制模型複雜度,不容易過擬合。但實際上level-wise是一種低效的演算法,因為它不加區分的對待同一層的葉子,帶來了很多沒必要的開銷,因為實際上很多葉子的**增益較低,沒必要進行搜尋和**。 

leaf-wise則是一種更為高效的策略,每次從當前所有葉子中,找到**增益最大的乙個葉子,然後**,如此迴圈。因此同level-wise相比,在**次數相同的情況下,leaf-wise可以降低更多的誤差,得到更好的精度。leaf-wise的缺點是可能會長出比較深的決策樹,產生過擬合。因此lightgbm在leaf-wise之上增加了乙個最大深度的限制,在保證高效率的同時防止過擬合。 

傳統的xgboost生長方式如下,按層生長。 

lightgbm增加了葉子節點的**增益

**參考

import lightgbm as lgb

train_data = lgb.dataset(xtrain, label=ytrain)

test_data = lgb.dataset(xtest, label=ytest)

# specify parameters via map

params =

num_round = 10

# start training

start_time = time.time()

bst = lgb.train(params, train_data, num_round)

end_time = time.time()

print('the training time = {}'.format(end_time - start_time))

# get prediction and evaluate

ypred_onehot = bst.predict(xtest)

ypred =

for i in range(len(ypred_onehot)):

accuracy = np.sum(ypred == ytest) / len(ypred)

print('test accuracy = {}'.format(accuracy))

機器學習 LightGBM

lightgbm light gradient boosting machine 是乙個基於決策樹演算法的快速的 分布式的 高效能 gradient boosting gbdt gbrt gbm 或 mart 框架,可被用於排行 分類以及其他許多機器學習任務中。gbdt 雖然是個強力的模型,但卻有著...

機器學習演算法 整合學習 lightGBM

lightgbm 是整合學習的一種,是梯度提公升決策樹的高效實現。主要有幾方面優化 機器學習 lightgbm a highly efficient gradient boosting decision tree lightgbm 特性 features lightgbm 直方圖演算法用於搜尋特徵的...

LightGBM演算法梳理

leaf wise vs level wise 特徵並行和資料並行 順序訪問梯度 直接支援類別特徵 調參 參考資料 lightgbm包含兩個關鍵點 1 light,輕量級 2 gbm,梯度提公升機。lightgbm是乙個梯度boosting框架,使用基於學習演算法的決策樹。具有以下特點 它是針對xg...