lightgbm使用手册——参数篇

这篇具有很好参考价值的文章主要介绍了lightgbm使用手册——参数篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

记录一下lgb的参数

有缺失再补充

LGB(LightGBM)是一种高效、分布式的梯度提升树算法,具有训练速度快、内存占用少等优点。在使用LGB时,可以设置一些参数来优化模型的性能。

一些常用的LGB参数包括:

1.boosting_typ

LGB的boosting_type参数决定了LGB使用的boosting方法,也就是构造决策树的方式。在选择boosting_type时,一般建议先尝试默认参数,即’gbdt’。如果需要加速训练速度而且数据集不是很大,可以尝试’rf’方法;如果需要更好的准确率,可以尝试’dart’或’goss’。

具体而言,不同的boosting_type参数对应的优缺点如下:

  • boosting_type=‘gbdt’:默认参数,基于梯度提升决策树的方法,可以用于回归和分类问题,速度较快、准确度较高;
  • boosting_type=‘rf’:随机森林的方式构造决策树,可以用于分类和回归问题,训练速度较快,但准确率略低;
  • boosting_type=‘dart’:dropout加了加性正则化的方法,训练时间较长,但能够取得较好的准确率,适合细调、调优;多了dropout_rate参数可以使用
  • boosting_type=‘goss’:去掉部分梯度较小的样本,可以加速训练速度,适合处理大数据集,训练时间会更少。

boosting_type的选择应该根据具体问题和数据集的性质进行抉择。

2.max_depth

max_depth决定了树的深度,即每个叶节点所达到的最大深度。
默认设置为-1,表示不限制树的深度。然而,这样的最大深度可能导致过拟合,因此必须小心使用。
max_depth的选择需要考虑到数据量、特征维度和连续特征的数量。在大多数情况下,建议设置max_depth为20或更少。 在数据量较小的情况下,通常可以设置较低的max_depth,以避免过度拟合。此外,当连续特征的数量较多时,也可能需要减少max_depth,以避免过拟合。

3.num_leaves

num_leaves参数控制了每个决策树的叶子节点数,num_leaves参数默认值为 31。
num_leaves值越大,模型的复杂度越高,但也容易出现过拟合。
num_leaves值越小,模型的复杂度越低,但也容易出现欠拟合。

4.min_child_samples:

min_child_samples是最小叶子节点样本数。min_child_samples 参数默认值为 20。它用于控制过拟合的情况,过大的值可能导致欠拟合,过小的值可能导致过拟合。

5.min_child_weight:

min_child_weight参数默认值为1。
它是最小子节点中的所有样本权重总和,当某个子节点的样本权重和小于min_child_weight时,该节点不会继续拆分。
如果这个值太小,那么模型就会过拟合;如果这个值太大,那么模型就会欠拟合,这个参数需要根据数据进行调整。

6.feature_fraction:

该参数控制在每一次树木生长时选择多少特征。常用的取值范围是0.5到1。较小的值可以减少过度拟合,较大的值可以增加模型的多样性。可以使用交叉验证来确定最合适的值。

7.bagging_fraction:

这个参数控制在每次迭代中,模型将使用多少数据。0.5到1是一个常见的取值范围,值越小,模型的多样性更强,越不容易过度拟合。但是,如果拟合不足,准确性也可能下降。

8.bagging_freq:

bagging_freq告诉模型考虑每n次迭代进行子采样。例如,如果您将其设置为5,则每5个迭代中,模型才会考虑子采样。减少子采样的频率可以提高准确性,但会增加训练时间。默认为0。

9.objective

LGB的objective参数根据具体问题而定,可从以下两个方向入手选择:

  1. 回归问题:
    如果是回归问题,可以选择以下参数:
  • mean_squared_error:均方误差,适用于连续变量。
  • mean_absolute_error:绝对值误差,适用于连续变量,可以抵抗异常值。
  • huber:是在均方误差和平均绝对误差之间取得平衡的一种鲁棒损失函数,可以缓解异常值的影响。
  1. 分类问题:
    如果是分类问题,可以选择以下参数:
  • binary:二分类函数,根据标签的类别进行分类。
  • multi-class(softmax):多分类函数,可以在多个类别之间进行选择,并且每个样本只属于一种分类。
  • multi-class(ova):多分类函数,每个二分类处理来预测每个类别(样本可以属于多个分类)。

10. metric

LGB(LightGBM)作为一种机器学习算法,有很多可供选择的评价指标,不同的评价指标适用于不同的场景和任务。以下是一些常用的LGB的评价指标及其适用场景:

  1. 二分类任务:
  • binary_logloss: 对数损失函数,可用于训练二分类模型,并可以计算预测概率值。
  • auc: ROC曲线下的面积,常用于评估二分类模型的效果。
  1. 多分类任务:
  • multi_logloss: 多分类的对数损失函数,对于多分类问题,需要设置num_class作为类别数目。
  • multi_error: 多分类的误差率,表示分类错误的样本数占总样本数的比例。
  1. 回归任务:
  • l2: 均方误差,常用于回归问题。
  • rmse: 均方根误差,对于异常值较多的情况,建议使用此指标。

需要根据具体的任务选择合适的评价指标。

11.reg_alpha

LightGBM模型中的reg_alpha参数是一个正则化参数,用于控制模型中L1正则化项的强度。L1正则化是模型训练过程中用于惩罚模型的复杂度,以防止过拟合并提高模型的泛化能力。

具体来说,reg_alpha参数控制L1正则化项的权重大小,它的值越大,对模型的约束越强,从而更有效地控制过拟合。reg_alpha参数的取值过大也可能导致欠拟合。
取值范围:
reg_alpha参数的取值范围为[0,∞)。

12.reg_lambda

reg_lambda是正则化参数,该参数用于控制模型复杂度,防止过拟合。它在目标函数中加入L2正则化惩罚项,使得大的权重被缩小,从而控制模型的复杂度。默认值为0.

取值范围:一般情况下,reg_lambda的取值范围是[0,∞),表示正则化强度的程度。如果该参数为0,则不会有任何正则化影响。如果该参数设置得太大,则可能会导致在训练集上出现欠拟合。

13.subsample

LightGBM中subsample参数的默认值为1,即默认使用全量数据进行训练。subsample参数用于控制每次迭代时用于构建树模型的样本比例,取值范围为(0,1],表示使用的样本比例。当subsample=0.5时,每次树构建时将随机抽取50%的样本用于训练,这可以有效地避免过拟合问题。对于较大的数据集,可以适当减小subsample值,以提高训练速度。而对于较小的数据集,为了保证模型的泛化性能,一般建议将subsample设置为1,即使用全量数据进行训练。

14.随机种子

  1. seed:控制数据的随机排序和划分。默认为0,即每次运行时都会产生相同的结果。
  2. bagging_seed:控制bagging操作的随机种子,用于生成不同的训练样本。默认为0。
  3. feature_fraction_seed:控制特征选择过程中的随机种子,用于生成不同的特征。默认为0。

15.学习率learning_rate

learning_rate参数的默认值是0.1。learning_rate是梯度提升算法中控制步长的参数,也称为学习率。它是梯度下降过程中更新每个模型的权重的速度。较小的学习率会导致模型需要更多的迭代次数才能收敛,但更大的学习率可能会导致模型不收敛或过拟合。

在LightGBM中,learning_rate取值范围一般是0.001到1之间,但也取决于数据集的大小和质量。可以先试用较大的学习率调整其他参数,最后再用较小的学习率获得更优的性能。

16.迭代次数n_estimators

LightGBM中n_estimators参数默认值为100,表示迭代的次数(即树的数量)。

n_estimators的取值范围是正整数,通常在100-1000之间进行调整。增加树的数量可以提高模型的性能,但也会增加模型的计算时间。需要根据数据量和模型复杂度进行适当调整,以达到平衡性能和效率的目的。
当设定了early_stopping_rounds参数时,n_estimators的实际值将根据早期停止的情况进行调整。文章来源地址https://www.toymoban.com/news/detail-467714.html

到了这里,关于lightgbm使用手册——参数篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记录一下使用vs2022 上传到gitee项目

    第一个红框的地址一会需要用到

    2024年02月16日
    浏览(60)
  • 记录一下在工作中使用 LayUI bug的问题

    前言: LayUI是一个很老的框架了,经常会碰到一些 bug。不过由于他的轻量级,仍然有一些项目在使用。之前在公司解决的这些 bug,现在有时间发出来,可能会对大家产生一些意义。 layui中 slect form表单元素 不美化显现的问题 layui中美化的表单元素 在渲染完成要添加 form.ren

    2024年02月11日
    浏览(37)
  • 记录一下易语言post get使用WinHttp的操作

    最近在学易语言,在进行通讯的时候,出现一些问题,现在记录下来,避免以后继续忘记, 先声明文本型变量jsonPostData .变量搞定了 然后声明一个对象变量httpObj post方法如下: get 方法如下: 亲自测试能通过,稳稳的在运行

    2024年04月17日
    浏览(34)
  • js 小数相乘后,精度缺失问题,记录四舍五入,向下取整

    在做项目的时候,有一个计算金额的,结果发现计算的金额总是缺失0.01,发现相乘的时候,会失去精度,如图所示。被这整的吐血,由于计算逻辑由前端计算,所以传值后端总出错(尽量后端计算)。 还发现toFixed也会失去进度,简单来说原因:算法不一样,叫说“银行家算法

    2024年02月07日
    浏览(42)
  • 浅浅记录一下对某音的X-Agus、X-Gorgon、X-Khronos、X-Ladon研究(仅学习使用)

    近期比较闲,于是对该app进行了逆向研究 前两年也对这个app进行了研究,那时候还没有什么加密参数 可以很正常的进行采集 现在发现连包都抓不到了 于是查看了相关资料 发现该app走的不是正常的http/s协议 于是我hook了传输协议 就可以正常抓包了 抓包后就发现多了好几个加

    2024年01月19日
    浏览(36)
  • 文本----简单编写文章的方法(中),后端接口的编写,自己编写好页面就上传到自己的服务器上,使用富文本编辑器进行编辑,想写好一个项目,先分析一下需求,再理一下实现思路,再搞几层,配好参数校验,lomb

    1.1 今天在编写代码的时候,突然想实现一个目标:怎样能够在自己的网站上发一些文章  (lingyidianke.com) 1.2 参考自己之前写的一些资料,做一做试试,那么怎么做呢?首先,我们参考一下我们之前的资料,之前写过的大事件资料: 1.2.1 从项目结构上看,我们要创两个项目 1

    2024年02月19日
    浏览(52)
  • Qt:记录一下好看的配色

    2024年02月13日
    浏览(41)
  • XSS攻击是怎么回事?记录一下

    title: XSS攻击 date: 2023-08-27 19:15:57 tags: [XSS, 网络安全] categories: 网络安全 今天学习了一个网络攻击的手段,XSS攻击技术,大家自建网站的朋友,记得看看是否有此漏洞。 🎈 XSS 攻击 全称跨站脚本攻击 Cross Site Scripting 。 为了与重叠样式表 CSS 进行区分,所以换了另一个缩写名称

    2024年02月11日
    浏览(46)
  • 重新记录一下ArcGisEngine安装的过程

    好久不用Arcgis,突然发现想用时,有点不会安装了,所以这里记录一下安装过程。 首先,下载一个arcgis版本,我这里下的是10.1。 推荐【 gis思维(公众号)】,【麻辣GIS(网站)】。 当然了,这都是很旧很旧的版本了,基本上没有三维功能。 一定要下载带注册机的。 arcgi

    2024年03月21日
    浏览(42)
  • JDK收费的各个版本(记录一下)

     JDK收费的各个版本(记录一下) Java收费的安装包使用的时候要闭坑 从2019年1月份开始,Oracle JDK 开始对 Java SE 8 之后的版本开始进行商用收费,确切的说是 8u201/202 之后的版本。如果你用 Java 开发的功能如果是用作商业用途的,如果还不想花钱购买的话,能免费使用的最新版

    2024年04月28日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包