LightGBM 分類樹- 調參
-
- 參數1 n_estimators
- 參數2 learning_rate
- 參數3 max_depth
- 參數4 num_leaves
- 參數5 feature_fraction
- 參數6 bagging_fraction+bagging_freq
- 參數7 feature_fraction
對lightgbm幾個比較重要的參數進行調優,以下是模型主要用到的幾個包
# 導入資料分割, 模型驗證,cv參數搜尋,以及lightgbm包
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score,roc_auc_score, roc_curve, f1_score
from sklearn.model_selection import GridSearchCV
import lightgbm as gbm
參數可以分開進行,因為每次耗時也較多,可以按照參數的重要程度,每次搜尋一個或者2個參數。整體參考如下:
param = {
'n_estimators': range(200,1000,50),
'learning_rate': [0.1, 0.05, 0.01, 0.001]
'max_depth': range(5,40,5)
'num_leaves': [20,30,40],
'feature_fraction': [0.6, 0.8, 1],
'bagging_fraction': [0.8,0.9,1],
'bagging_freq': [2,3,4]}
gc = GridSearchCV( lgb.LGBMClassifier(), param_grid=param,
scoring = 'roc_auc', cv=5)
''' 資料分割'''
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=4, shuffle=True)
''' 模型訓練'''
gc.fit(x_train, y_train )
''' 列印出效果最好的參數及其值 '''
print(gc.best_params_ , gc.best_score_)
參數1 n_estimators
訓練循環的次數,預設是100次,根據需要手動調整。 可以先設定一個大的區域範圍找到較優次數,在附近,再設定門檻值範圍。
param = {
'n_estimators': range(200,1000,50),
}
參數2 learning_rate
學習率,預設是0.1。也被稱為shrinkage_rate, 梯度下降的步長。根據資料需要進行探索變化,不是越小越好。
param = {
'learning_rate': [0.1, 0.05, 0.01]
}
參數3 max_depth
樹的最大深度,預設是沒有限制,但是深度值并非越大越好。容易産生過拟合。是以建議進行參數設定。查找較優的深度。
param = {
'max_depth': range(5,20,2)
}
參數4 num_leaves
預設值是31,根據資料情況而定,也被稱為num_leaf。一棵樹上的葉子數目。(即沒有子節點的節點樹),一般設定小于2^(max_depth)
param = {
'num_leaves': [20,30,40],
}
參數5 feature_fraction
随機選擇一定比列的特征去模型中。資料中樣本或者特征值資料過多時,可考慮進行設定。
param = {
'feature_fraction': [0.6, 0.8, 1],
}
參數6 bagging_fraction+bagging_freq
bagging_fraction+bagging_freq參數必須同時設定,這裡參考來自知乎的說明
LightGBM+gridsearchcv調參
param = {
'bagging_fraction': [0.8,0.9,1],
'bagging_freq': [2,3,4],
}
bagging_fraction和bagging_freq參數必須同時設定,
bagging_fraction相當于subsample樣本采樣,可以使bagging更快的運作,同時也可以降拟合。
bagging_freq預設0,表示bagging的頻率,0意味着沒有使用bagging,k意味着每k輪疊代進行一次bagging。
參數7 feature_fraction
随機選擇一定比列的特征去模型中。資料中樣本或者特征值資料過多時,可考慮進行設定。
param = {
'feature_fraction': [0.6, 0.8, 1],
}
其他更多的參數調整見官網
LightGBM params