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使用方法
model_lgb = lgb.LGBMRegressor()
参数
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参数解释
和回归差不多,参考官网看一下吧。