天天看点

LightGBM-调参

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