1. 引入
从识别率上来说,LGBM并不逊色于XGB和RF;LGBM在笔者很多场景下都优于CatBoost。 从工程化上来说,LGBM的模型size小、训练速度快、支持并发训练、兼容sklearn接口、支持GPU训练,这都使得LGBM的工程化能力更强。 和RF比较,在准确率相当的前提下,LGBM的size也是比RF小很多倍(LGBM=4M,RF=100MB)。
所以接下来写一下LGBM的调参思路, LGBM的参数以参考1中的接口LGBMClassifier命名为准(兼容sklearn的接口)。
2. 调参重点
模型中的参数具体见参考1,参数很多,但具体来说也就分为如下几类:
- 影响模型结构的参数,也就是影响基分类器(决策树)结构的参数
- 影响训练准确率的参数,比如树的棵数
- n_estimators在一定程度上,是越大准确率越高,但高到一定程度后再增加则可能降低准确率
- 对抗过拟合的参数,比如正则化参数
3. 模型结构参数调优
- num_leaves
- 单个基分类器(决策树)中,叶子结点的最大数量
- num_leaves越大,对训练集的分类越准确,但太大了可能会过拟合了
- 思考一种极端情况:num_leaves很大,直接等于训练集样本数量;每个训练集样本都能分类正确,但对测试集就不一定了
- 根据官方参考3,选择 num_leaves的值不超过2^(max_depth);参考2中作者一般选择的参数范围是(20, 3000)
- max_depth
- 单个基分类器(决策树)中,树的最大深度
- max_depth越大,模型越复杂,越容易过拟合
- max_depth越小,模型越简单,越容易欠拟合
- 大部分情况下选择3~12就可以
- min_data_in_leaf
- 在参考1中等同于参数 min_child_samples
- LGBM使用的是一种叫做“leaf-wise tree growth algorithm”的算法,这个参数是防止该算法过拟合的一个参数
- 这个值增大了可以防止过拟合
- 实际使用时,这个值设置为几百到几千都可以
4. 影响准确率的参数调优
- n_estimators
- 决策树的棵数
- 在一定程度上,是越大准确率越高,但高到一定程度后再增加则可能降低准确率
- 笔者一般取200~3000
- learning_rate
- 学习速率影响模型训练的快慢
- 一般设置为 0.01 到 0.3
5. 影响过拟合的参数调优
- reg_alpha
- reg_lambda
- min_gain_to_split
- 同min_split_gain
- 表示 分裂的最小增益阈值
- 参考2中作者将其当做extra regularization来看待,调参时搜索范围是 (0, 15)
- subsample
- 同 bagging_fraction
- 训练样本的采样比例
- 这个值设置为(0,1)之间的小数
- 必须设置如下参数为大于0的整数后,才会按照该比率进行样本采样
- 根据参考4中说明,调小该参数可以防止过拟合,加快运算速度
- subsample_freq
- 每隔多少轮iteration进行一次“按比例采样”
- 默认设置为0,即disable
- 选择这个参数为大于0的整数k,说明第k次iteration进行“按比例采样”,比例值为上面的参数subsample
- colsample_bytree
- 同feature_fraction
- 0.0 < feature_fraction <= 1.0
- 在训练时,对某一棵树,随机选取的特征比例
- 即 LightGBM will randomly select a subset of features on each iteration (tree)
- 根据参考4中说明,调小可以防止过拟合,加快运算速度
6. 参考
- lightgbm官方参数说明文档
- https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.LGBMClassifier.html
- lightgbm参数调优博客
- https://towardsdatascience.com/kagglers-guide-to-lightgbm-hyperparameter-tuning-with-optuna-in-2021-ed048d9838b5
- lightgbm官方参数调优文档
- https://lightgbm.readthedocs.io/en/latest/Parameters-Tuning.html#tune-parameters-for-the-leaf-wise-best-first-tree
- GBDT、XGBoost、LightGBM 的使用及参数调优
- https://zhuanlan.zhihu.com/p/33700459
- lightgbm官方参数细节说明(各个参数及其别名)
- https://lightgbm.readthedocs.io/en/latest/Parameters.html
|