IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> LightGBM参数说明与参数调优建议 -> 正文阅读

[数据结构与算法]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
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-24 10:50:25  更:2021-09-24 10:52:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:43:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码