任務五 LightGBM模型的嘗試

LightBGM理論

LightGBM 是一個輕量級梯度 boosting 框架,使用基於學習算法的決策樹。它可以說是分佈式的,高效的,有以下優勢:
更快的訓練效率
低內存使用
更高的準確率
支持並行化學習
可處理大規模數據

特點:
基於Histogram的決策樹算法
帶深度限制的Leaf-wise的葉子生長策略
直方圖做差加速
直接支持類別特徵(Categorical Feature)
Cache命中率優化
基於直方圖的稀疏特徵優化
多線程優化

Histogram算法

直方圖算法的基本思想:先把連續的浮點特徵值離散化成k個整數,同時構造一個寬度爲k的直方圖。遍歷數據時,根據離散化後的值作爲索引在直方圖中累積統計量,當遍歷一次數據後,直方圖累積了需要的統計量,然後根據直方圖的離散值,遍歷尋找最優的分割點。

帶深度限制的Leaf-wise的葉子生長策略

Level-wise過一次數據可以同時分裂同一層的葉子,容易進行多線程優化,也好控制模型複雜度,不容易過擬合。但實際上Level-wise是一種低效算法,因爲它不加區分的對待同一層的葉子,帶來了很多沒必要的開銷,因爲實際上很多葉子的分裂增益較低,沒必要進行搜索和分裂。

Leaf-wise則是一種更爲高效的策略:每次從當前所有葉子中,找到分裂增益最大的一個葉子,然後分裂,如此循環。因此同Level-wise相比,在分裂次數相同的情況下,Leaf-wise可以降低更多的誤差,得到更好的精度。

Leaf-wise的缺點:可能會長出比較深的決策樹,產生過擬合。因此LightGBM在Leaf-wise之上增加了一個最大深度限制,在保證高效率的同時防止過擬合。

LightGBM實踐

自己設定參數

import lightgbm as gbm
GBM = gbm.sklearn.LGBMClassifier(num_leaves = 30,learning_rate = 0.1,n_estimators = 20)
GBM.fit(x_train,y_train)

在這裏插入圖片描述

GBM_predict = GBM.predict(x_val)sklearn.metrics.f1_score(y_val,GBM_predict,average ='weighted')

在這裏插入圖片描述

GridSearchCV調參

From sklearn.model_selection import GridSearchCV 
GBM_grid =gbm.sklearn.LGBMClassifier(num_leaves=30) param_grid = { 'learning_rate': [0.01, 0.1, 0.5], 'n_estimators': [30, 40] } 
gbm = GridSearchCV(GBM_grid, param_grid ) 
gbm.fit(x_train, y_train)
print(''The optimal parameters for grid search are:', gbm.best_params_)

在這裏插入圖片描述

GBM_best = gbm.sklearn.LGBMClassifier(num_leaves = 30,learning_rate = 0.1,n_estimators = 40)
GBM_best.fit(x_train,y_train)
GBM_predict = lgb_best.predict(x_val)
sklearn.metrics.f1_score(y_val,GBM_predict,average =“weighted” “)

在這裏插入圖片描述

參考文獻:
https://izhangh.cn/2018/06/19/機器學習-LightGBM-基於決策樹算法的分佈式梯度提升框架/index.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章