import lightgbm as lgb
PS:注意,當使用lgb時一定要注意參數名稱是否寫錯,當參數名稱輸入錯時,lgb是不會報錯的,參數名寫錯時lgb會當做無輸入處理。
lightgbm.cv使用方法
params_lgb = {
'boosting': 'gbdt',
'objective': 'quantile',
'n_jobs':-1,
'learning_rate': 0.1,
'num_leaves': 50,
'max_depth': 6,
'subsample': 0.8,
'colsample_bytree': 0.8,
}
train_data_lgb = lgb.Dataset(train_x, train_y, silent=True)
cv_results = lgb.cv(
params_lgb, train_data_lgb, num_boost_round=10000, nfold=5, stratified=False, shuffle=False, metrics='l2',
early_stopping_rounds=100, verbose_eval=50, show_stdv=True, seed=2020)
lightgbm官方文檔
重要參數
params 基學習器的參數。詳細參數就是LGBRegressor或者LGBClassifier的參數。
train_set 訓練集,需要首先使用train_data = lgb.Dataset(train_x,train_y,silient = True)。
num_boost_round 最大疊代次數,建議寫大一些,可以通過早停機制提前終止訓練
nfold n折交叉驗證。
metrics 評價标準。
early_stopping_rounds 早停決策,若n輪疊代之後metrics沒有進步,則終止訓練。注意,設定此項務必設定metrics,否則lgb會按照metrics缺失處理。
shuffle是否洗牌。
verbose_eval 進行n次驗證後,報告metrics情況。
fobj 自定義目标函數。
feval 自定義評價标準。如有需要,自己去官網檢視一下怎麼實作,暫時我沒有用到。
lgb.cv的傳回值
傳回值是一個字典,show一下python小白都會用,一般用到的方法有。
len(cv_results[‘l2-mean’]) 确定基學習器的數量。
cv_results[‘l2-mean’][-1] 确定最後得分
LGMRegressor使用方法
LGM官方文檔
參數
PART1 不需要調試的參數
boosting_type :‘gbdt’,‘rf’,‘dart’
n_jobs 幾核cpu
silent 預設選擇True,選擇False會輸出很多模組化中的細節,作用不大還刷屏。
objective 目标函數
random_state 随機數
PART2 需要調試的參數
learning_rate:學習率,初始狀态建議選擇較大的學習率,設定為0.1.
n_estimators :樹的數量,初始狀态适配lr = 0.1
這兩個參數是一對情侶,調整一個另外一個也需要調整,互相影響巨大!
這兩個參數作用于樹的數量,不關心樹的内部。
++++++++++++++++這兩個參數需要聯調++++++++++++++++++++++++++
max_depth:每棵樹的最大深度,防止過拟合。初始狀态設定3~8。
num_leaves :每棵樹的最多葉子數,因為CART是二叉樹,是以葉子數量最大值為2 **depth,是以num_leaves要小于該值才有意義。然後lightgbm是leaf-wise,depth = leaf-1,是以depth和leaf調試一個即可。
min_child_samples:又稱為min_data_in_leaf,指要想建立一個葉子所需要的的最少樣本數,增大它可以降低過拟合。
min_child_weight:又稱為min_sum_hessian_in_leaf,指要想建立一個葉子,該葉子需要提供的最小hessian值。這兩個參數都是對建立葉子設定了門檻,可以降低葉子數量,減小過拟合。
feature_fraction:每次建立一棵樹時,随機使用多少的特征。
bagging_fraction:每次進行bagging時,随機使用多少的樣本。
bagging_freq:每建立多少棵樹,就進行一次bagging。
reg_alpha :L1正則化參數
reg_lambda :L2正則化參數
+++++++++++++上面的參數是調整每棵樹的屬性++++++++++++++++++++
lLGBMClassifier API參數解釋
和回歸差不多,參考官網看一下吧。
調參參考
參考:調參筆記1
調參筆記2