LightGBM参数说明与参数调优建议

Posted ybdesire

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LightGBM参数说明与参数调优建议相关的知识,希望对你有一定的参考价值。

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,参数很多,但具体来说也就分为如下几类:

  1. 影响模型结构的参数,也就是影响基分类器(决策树)结构的参数
  • 结构越复杂,模型的拟合能力越强,但也容易过拟合
  1. 影响训练准确率的参数,比如树的棵数
  • n_estimators在一定程度上,是越大准确率越高,但高到一定程度后再增加则可能降低准确率
  1. 对抗过拟合的参数,比如正则化参数
  • 防止模型过拟合

3. 模型结构参数调优

  1. num_leaves
  • 单个基分类器(决策树)中,叶子结点的最大数量
  • num_leaves越大,对训练集的分类越准确,但太大了可能会过拟合了
  • 思考一种极端情况:num_leaves很大,直接等于训练集样本数量;每个训练集样本都能分类正确,但对测试集就不一定了
  • 根据官方参考3,选择 num_leaves的值不超过2^(max_depth);参考2中作者一般选择的参数范围是(20, 3000)
  1. max_depth
  • 单个基分类器(决策树)中,树的最大深度
  • max_depth越大,模型越复杂,越容易过拟合
  • max_depth越小,模型越简单,越容易欠拟合
  • 大部分情况下选择3~12就可以
  1. min_data_in_leaf
  • 在参考1中等同于参数 min_child_samples
  • LGBM使用的是一种叫做“leaf-wise tree growth algorithm”的算法,这个参数是防止该算法过拟合的一个参数
  • 这个值增大了可以防止过拟合
  • 实际使用时,这个值设置为几百到几千都可以

4. 影响准确率的参数调优

  1. n_estimators
  • 决策树的棵数
  • 在一定程度上,是越大准确率越高,但高到一定程度后再增加则可能降低准确率
  • 笔者一般取200~3000
  1. learning_rate
  • 学习速率影响模型训练的快慢
  • 一般设置为 0.01 到 0.3

5. 影响过拟合的参数调优

  1. reg_alpha
  • L1正则化
  • 一般设置为0~100
  1. reg_lambda
  • L2正则化,同上
  1. min_gain_to_split
  • 同min_split_gain
  • 表示 分裂的最小增益阈值
  • 参考2中作者将其当做extra regularization来看待,调参时搜索范围是 (0, 15)
  1. subsample
  • 同 bagging_fraction
  • 训练样本的采样比例
  • 这个值设置为(0,1)之间的小数
  • 必须设置如下参数为大于0的整数后,才会按照该比率进行样本采样
  • 根据参考4中说明,调小该参数可以防止过拟合,加快运算速度
  1. subsample_freq
  • 每隔多少轮iteration进行一次“按比例采样”
  • 默认设置为0,即disable
  • 选择这个参数为大于0的整数k,说明第k次iteration进行“按比例采样”,比例值为上面的参数subsample
  1. colsample_bytree
  • 同feature_fraction
  • 0.0 < feature_fraction <= 1.0
  • 在训练时,对某一棵树,随机选取的特征比例
  • 即 LightGBM will randomly select a subset of features on each iteration (tree)
  • 根据参考4中说明,调小可以防止过拟合,加快运算速度

6. 参考

  1. lightgbm官方参数说明文档
  • https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.LGBMClassifier.html
  1. lightgbm参数调优博客
  • https://towardsdatascience.com/kagglers-guide-to-lightgbm-hyperparameter-tuning-with-optuna-in-2021-ed048d9838b5
  1. lightgbm官方参数调优文档
  • https://lightgbm.readthedocs.io/en/latest/Parameters-Tuning.html#tune-parameters-for-the-leaf-wise-best-first-tree
  1. GBDT、XGBoost、LightGBM 的使用及参数调优
  • https://zhuanlan.zhihu.com/p/33700459
  1. lightgbm官方参数细节说明(各个参数及其别名)
  • https://lightgbm.readthedocs.io/en/latest/Parameters.html

以上是关于LightGBM参数说明与参数调优建议的主要内容,如果未能解决你的问题,请参考以下文章

民间最全的Linux系统内核参数调优说明

AutoML之flaml:基于flaml框架对比lightgbm和xgboost模型进行自动化参数调优实现体内脂肪含量值回归预测案例之详细攻略

lightgbm的sklearn接口和原生接口参数详细说明及调参指点

spark shuffle参数及调优建议(转)

03JVM调优调优--2.基础:参数说明(堆参数说明),垃圾收集器(前置知识:垃圾回收算法,GC种类),垃圾收集器(种类,相关介绍)

JVM性能优化--JVM参数配置,使用JMeter简单测试配合说明参数调优