LightGBM 重要参数、方法、函数理解及调参思路、网格搜索(附例子)

lightGBM的介绍 AdaBoost(Adaptive Boosting)是一种集成学习算法,通过组合多个弱分类器来构建一个强分类器。它是由Freund和Schapire在1996年提出的,是集成学习中最早被广泛应用的算法之一。如何改变训练数据的权重或概率分布提高前一轮被弱分类器错误分类的样本的权重,降低前一轮被分对的权重。如何将弱分类器组合成一个强分类器,亦即,每个分类器,前面的权重如何设置采取“多数表决”的方法。 阅读详情
AI摘要

本文深入解析LightGBM的参数配置与调优策略,涵盖原生接口与sklearn风格接口的使用,通过实例演示分类与回归任务,同时提供参数网格搜索技巧。

与 xgboost 类似,LightGBM包含原生接口和 sklearn 风格接口两种,并且二者都实现了分类和回归的功能。如果想了解一些理论性的内容,可以看看之前的文章:LightGBM 相关知识理解

一、LightGBM 原生接口

重要参数

boosting / boost / boosting_type

用于指定弱学习器的类型,默认值为 ‘gbdt’,表示使用基于树的模型进行计算。还可以选择为 ‘gblinear’ 表示使用线性模型作为弱学习器。

可选的参数值有:

  • ‘gbdt’,使用梯度提升树
  • ‘rf’,使用随机森林
  • ‘dart’,不太了解,官方解释为 Dropouts meet Multiple Additive Regression Trees
  • ‘goss’,使用单边梯度抽样算法,速度很快,但是可能欠拟合。

推荐设置为 'gbdt’

objective / application

用于指定学习任务及相应的学习目标,常用的可选参数值如下:

  • “regression”,使用L2正则项的回归模型(默认值)。
  • “regression_l1”,使用L1正则项的回归模型。
  • “mape”,平均绝对百分比误差。
  • “binary”,二分类。
  • “multiclass”,多分类。

num_class

用于设置多分类问题的类别个数。

min_child_samples

叶节点样本的最少数量,默认值20,用于防止过拟合。

learning_rate / eta

LightGBM 不完全信任每个弱学习器学到的残差值,为此需要给每个弱学习器拟合的残差值都乘上取值范围在(0, 1] 的 eta,设置较小的 eta 就可以多学习几个弱学习器来弥补不足的残差。

推荐的候选值为:[0.01, 0.015, 0.025, 0.05, 0.1]

max_depth

指定树的最大深度,默认值为-1,表示不做限制,合理的设置可以防止过拟合。

推荐的数值为:[3, 5, 6, 7, 9, 12, 15, 17, 25]。

num_leaves

指定叶子的个数,默认值为31,此参数的数值应该小于 2 m a x _ d e p t h 2^{max\_depth} 2max_depth。

feature_fraction / colsample_bytree

构建弱学习器时,对特征随机采样的比例,默认值为1。

推荐的候选值为:[0.6, 0.7, 0.8, 0.9, 1]

bagging_fraction / subsample

默认值1,指定采样出 subsample * n_samples 个样本用于训练弱学习器。注意这里的子采样和随机森林不一样,随机森林使用的是放回抽样,而这里是不放回抽样。 取值在(0, 1)之间,设置为1表示使用所有数据训练弱学习器。如果取值小于1,则只有一部分样本会去做GBDT的决策树拟合。选择小于1的比例可以减少方差,即防止过拟合,但是会增加样本拟合的偏差,因此取值不能太低。

注意: bagging_freq 设置为非0值时才生效。

推荐的候选值为:[0.6, 0.7, 0.8, 0.9, 1]

bagging_freq / subsample_freq

数值型,默认值0,表示禁用样本采样。如果设置为整数 z ,则每迭代 k 次执行一次采样。

lambda_l1

L1正则化权重项,增加此值将使模型更加保守。

推荐的候选值为:[0, 0.01~0.1, 1]

lambda_l2

L2正则化权重项,增加此值将使模型更加保守。

推荐的候选值为:[0, 0.1, 0.5, 1]

min_gain_to_split / min_split_gain

指定叶节点进行分支所需的损失减少的最小值,默认值为0。设置的值越大,模型就越保守。

**推荐的候选值为:[0, 0.05 ~ 0.1, 0.3, 0.5, 0.7, 0.9, 1] **

min_sum_hessian_in_leaf / min_child_weight

指定孩子节点中最小的样本权重和,如果一个叶子节点的样本权重和小于min_child_weight则拆分过程结束,默认值为1。

推荐的候选值为:[1, 3, 5, 7]

metric

用于指定评估指标,可以传递各种评估方法组成的list。常用的评估指标如下:

  • ‘mae’,用于回归任务,效果与 ‘mean_absolute_error’, ‘l1’ 相同。
  • ‘mse’,用于回归任务,效果与 ‘mean_squared_error’, ‘l2’ 相同。
  • ‘rmse’,用于回归任务,效果与 ‘root_mean_squared_error’, ‘l2_root’ 相同。
  • ‘auc’,用于二分类任务。
  • ‘binary’,用于二分类任务。
  • ‘binary_logloss’,用于二分类任务。
  • ‘binary_error’,用于二分类任务。
  • ‘multiclass’,用于多分类。
  • ‘multi_logloss’, 用于多分类。
  • ‘multi_error’, 用于多分类。

seed / random_state

指定随机数种子。

训练参数

以lightgbm.train为主,参数及默认值如下:

lightgbm.train(params, train_set, num_boost_round=100, valid_sets=None, valid_names=None, fobj=None, feval=None, init_model=None, feature_name='auto', categorical_feature='auto', early_stopping_rounds=None, evals_result=None, verbose_eval=True, learning_rates=None, keep_training_booster=False, callbacks=None)

1,params

字典类型,用于指定各种参数,例如:{‘booster’:‘gbtree’,‘eta’:0.1}

2,train_set

用于训练的数据,通过给下面的方法传递数据和标签来构造:

train_data = lgb.Dataset(train_x, train_y)

3,num_boost_round

指定最大迭代次数,默认值为10

4,valid_sets

列表类型,用于指定训练过程中用于评估的数据及数据的名称。例如:[train_data, valid_data]

train_data = lgb.Dataset(train_x, train_y)
valid_data = lgb.Dataset(valid_x, valid_y, reference=train)

5,fobj

可以指定二阶可导的自定义目标函数。

6,feval

自定义评估函数。

7,categorical_feature

指定哪些是类别特征。

8,early_stopping_rounds

指定迭代多少次没有得到优化则停止训练,默认值为None,表示不提前停止训练。

注意:valid_sets 必须非空才能生效,如果有多个数据集,则以最后一个数据集为准。

9,verbose_eval

可以是bool类型,也可以是整数类型。如果设置为整数,则每间隔verbose_eval次迭代就输出一次信息。

10,init_model

加载之前训练好的 lgb 模型,用于增量训练。

预测方法

predict(data, num_iteration=None)

参数说明:

  • data:string, numpy array, pandas DataFrame
  • num_iteration:选择第几次迭代用于预测,如果使用了 early_stopping_rounds,那么最佳的一次迭代将被使用

注意,对于分类问题,predict 方法返回的是属于各个类别的概率,需要执行下面的语句才能获取到预测的类别:

y_pred = model.predict(X_test)
y_pred = np.argmax(y_pred, axis=1)

绘制特征重要性

代码如下:

from lightgbm import plot_importance
# 显示重要特征,max_num_features 指定显示多少个特征
plot_importance(lgb_model, max_num_features)
plt.show()

分类例子

from sklearn.datasets import load_iris
import lightgbm as lgb
from lightgbm import plot_importance
import matplotlib.pyplot  as plt
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载鸢尾花数据集
iris = load_iris()
X,y = iris.data,iris.target
# 数据集分割
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=
GBDT、XGBoost、LightGBM算法详解 在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。然后我们拿残差替代A,B,C,D的原值,到第二棵树去学习,如果我们的预测值和它们的残差相等,则只需把第二棵树的结论累加到第一棵树上就能得到真实年龄了。从树深度0开始,每一节点都遍历所有的特征,比如年龄、性别等等,然后对于某个特征,先按照该特征里的值进行排序,然后线性扫描该特征进而确定最好的分割点,最后对所有特征进行分割后,我们选择所谓的增益Gain最高的那个特征。 阅读详情

相关推荐

PSO优化LightGBM回归预测模型实战

粒子群优化算法(PSO)是一种基于群体智能的全局优化方法,通过模拟鸟群觅食行为高效搜索最优解。在机器学习领域,PSO常用于超参数优化,相比网格搜索能更快找到全局最优区域。LightGBM作为高效的梯度提升决策树实现,凭借直方图算法和Leaf-wise生长策略,特别适合处理结构化数据的回归预测任务。将PSO与LightGBM结合,可以自动搜索最优超参数组合,显著提升模型在商品销量预测、电力负荷预测等连续值预测场景中的表现。实践表明,这种组合策略相比手动调参能降低23%的MAE指标,同时避免陷入局部最优。

weixin_30599769的博客 504

超参数调优实战指南:从网格搜索到贝叶斯优化

超参数调优是机器学习模型性能优化的核心工程环节,其本质是在高维、非凸、黑盒的超参数空间中,高效搜索最优配置以提升模型泛化能力与业务指标。它并非经验式调参,而是依赖统计原理(如随机采样的概率优势、贝叶斯优化的代理建模与不确定性引导)实现可复现、可归因的自动化决策。技术价值在于显著降低GPU资源消耗、缩短交付周期、增强模型稳定性,并支撑多目标权衡(如精度vs延迟)。典型应用场景涵盖金融风控XGBoost调参、电商推荐模型优化、工业视觉微调及NLP模型蒸馏等生产级任务。本文聚焦超参数调优、贝叶斯优化两大核心热词,

chuanzhuanxian8669的博客 541

【算法底座研究室】机器学习基础算法 (十一) - LightGBM-微软

LightGBM(Light Gradient Boosting Machine)是由微软(Microsoft)研发的一种基于梯度提升算法(Gradient Boosting)的机器学习框架,它在处理大规模数据时非常高效。作为一种集成学习方法,LightGBM通过构建多个弱学习器来提高模型的整体性能,尤其擅长处理高维稀疏数据、类别特征和大规模数据集。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 3935

贝叶斯优化超参数调参实战:Optuna+LightGBM可复现方案

机器学习模型性能高度依赖超参数设定,传统网格搜索与随机搜索要么计算成本高,要么缺乏记忆,调参效率低下。贝叶斯优化作为一种有记忆的全局优化策略,通过代理模型估计参数空间表现,并用采集函数权衡探索与开发,以更少的实验次数逼近最优配置。这一技术在单次训练耗时较长的场景下价值显著,尤其适合LightGBM等树模型与深度学习模型的超参数搜索。结合Optuna工具,可以利用TPE代理模型、对数均匀采样、条件参数与剪枝策略,构建一套完整可复现的调参流程。从贝叶斯优化原理出发,既剖析了超参数搜索的关键参数设置,也总结了工程

weixin_26757939的博客 239

LightGBM风电功率预测实战:从特征工程到调参全流程

在时间序列预测任务中,数据规模与特征质量往往比模型复杂度更能决定最终效果。机器学习中的梯度提升树模型,凭借其对非线性关系的强大拟合能力以及对表格数据的高效处理,在诸多业务场景中展现出极佳性价比。风电功率预测作为典型的气象依赖型时序问题,具有强波动性、非线性及数据质量参差等特征,常规线性模型难以胜任,而深度学习在小样本条件下又易陷入过拟合。本文从梯度提升树的基本原理出发,逐步拆解如何完成数据清洗、时序特征与滞后特征构造、训练验证集划分等关键环节,并结合风电功率预测实例介绍lightGBM的核心参数调优路线与交

weixin_33971977的博客 334

【从零开始学Skynet】基础篇(一):Skynet环境搭建

Skynet运行于Linux操作系统,我们可以在自己的电脑上搭建虚拟机系统,也可以购买阿里云、腾讯云服务器,笔者这个系列的所有代码都是在Ubuntu16.04版本的虚拟机系统下运行编辑。

我是一条寻水的鱼 3167

从SAR信号到洪涝地图:基于Sentinel-1数据的水体快速提取实战

本文详细介绍了如何利用Sentinel-1 SAR数据快速提取水体信息并生成洪涝地图的实战方法。通过预处理五部曲和SDWI指数计算,结合具体案例展示了SAR技术在洪涝灾害应急监测中的高效性和准确性,为救援决策提供关键支持。

weixin_29201313的博客 463

Python爬虫实战:5分钟搞定政府网站公开数据抓取(附完整代码)

本文详细介绍了如何使用Python爬虫快速抓取政府网站公开数据,包括环境配置、网站结构分析、请求头构建、数据处理与存储等关键步骤。通过实战案例和完整代码,帮助开发者高效获取结构化数据,适用于数据分析、市场研究等场景。

weixin_29057065的博客 941

YOLOv8【第十一章:视频追踪与流处理篇·第3节】匈牙利算法(Hungarian Algorithm)与 KM 算法匹配机制详解!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 444

小米汽车车载多摄像头视频链路深度解析 | MAX96792/MAX96724/MAX96781 实战分享

通过合理的输入输出规划 + 虚拟通道管理 + 加串行策略,可以在成本和性能之间取得最佳平衡,这就是多摄像头系统设计的核心精髓。

weixin_43199439的博客 1547

【OpenClaw从入门到精通】第19篇:OpenClaw电商实战:从零搭建比价+库存监控+自动调价全自动化系统(2026实测附完整代码)

2026年OpenClaw成为全球最火开源项目,电商行业因其场景高频、数据标准化成为其核心落地领域。本文针对电商从业者面临的比价繁琐、库存混乱、调价滞后三大痛点,基于OpenClaw的“接入层-执行层-决策层”三层架构,从零拆解智能比价、多平台库存监控、动态自动调价三大核心场景的实现逻辑。文中包含完整的环境配置、技能安装、代码实现(含Python脚本与YAML配置)、执行结果验证,同时补充关键算法原理与避坑指南,兼顾新手入门与进阶提升。读者可直接参考本文实操流程,快速搭建属于自己的电商自动化系统,实现7×2

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2238

不使用工具箱,通过MATLAB纯编程实现lstm网络的训练过程

长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。在标准RNN中,这个重复的结构模块只有一个非常简单的结构,例如一个tanh层。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 1013

【从零开始vnpy量化投资】十一. 实盘接入测试与正式实盘

本篇主要讲解如何使用vnpy进行实盘交易,由于上一节我们已经学习了模拟盘运行,如果一切顺利的话,只需要通过穿透测试,就可以正式部署实盘了。

魔落的博客 4231

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: XGBoost 重要参数、方法、函数理解及调参思路(附例子)
下一篇: 【推荐系统(一)】协同过滤之基于领域的方法(UserCF,ItemCF)
VariableX
博客等级 码龄7年 142粉丝 62原创
评论 14
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值