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