LGBM调参方法学习

article/2025/9/24 10:29:51

一、了解LGBM参数:

LGBM是微软发布的轻量梯度提升机,最主要的特点是快,回归和分类树模型。使用LGBM首先需要查看其参数含义:
微软官方github上的说明:
https://github.com/Microsoft/LightGBM/blob/master/docs/Parameters.rst#early_stopping_round
LGBM中文手册:
http://lightgbm.apachecn.org/#/docs/2

所以大致了解参数设置:
1、核心参数:
“objective”: “regression”,
‘boosting’:‘gbdt’,
“learning_rate”: 0.05,
‘num_iterations’:100,
“num_leaves”: 31,
‘num_threads’:-1,
2、学习控制参数
“max_depth”: 10,
‘feature_fraction’:1,
‘bagging_fraction’:0.8,
‘bagging_freq’:8,
‘lambda_l1’:0,
‘lambda_l2’:0,
“min_data_in_leaf”: 20
‘min_sum_hessian_in_leaf’:1e-3
‘early_stopping_round’
3、指标函数:
“metric”: “rmse”,可选的有很多,针对不同的问题

根据问题的性质,可以确定"metric":、“objective”: “regression”,其实主要需要调节的参数就有: “learning_rate”:、‘num_iterations’:、max_depth 和 num_leaves、min_data_in_leaf 和 min_sum_hessian_in_leaf、feature_fraction 和 bagging_fraction、正则化参数:lambda_l1(reg_alpha), lambda_l2(reg_lambda)

二、调参过程

网上的的代码,由于采用不同的工具,显得有点乱:在此总结一下:
参考:
网友的简书:(顺便讲了一下XGB)
https://www.jianshu.com/p/1100e333fcab
一篇csdn:
https://blog.csdn.net/ssswill/article/details/85235074
一篇慕课手记:
https://www.imooc.com/article/43784?block_id=tuijian_wz

1、 使用sklearn的GridSearchCV

先上例子:

import pandas as pd
import lightgbm as lgb
from sklearn.grid_search import GridSearchCV  # Perforing grid search
from sklearn.model_selection import train_test_splittrain_data = pd.read_csv('train.csv')   # 读取数据
y = train_data.pop('30').values   # 用pop方式将训练数据中的标签值y取出来,作为训练目标,这里的‘30’是标签的列名
col = train_data.columns   
x = train_data[col].values  # 剩下的列作为训练数据
train_x, valid_x, train_y, valid_y = train_test_split(x, y, test_size=0.333, random_state=0)   # 分训练集和验证集
train = lgb.Dataset(train_x, train_y)
valid = lgb.Dataset(valid_x, valid_y, reference=train)parameters = {'max_depth': [15, 20, 25, 30, 35],'learning_rate': [0.01, 0.02, 0.05, 0.1, 0.15],'feature_fraction': [0.6, 0.7, 0.8, 0.9, 0.95],'bagging_fraction': [0.6, 0.7, 0.8, 0.9, 0.95],'bagging_freq': [2, 4, 5, 6, 8],'lambda_l1': [0, 0.1, 0.4, 0.5, 0.6],'lambda_l2': [0, 10, 15, 35, 40],'cat_smooth': [1, 10, 15, 20, 35]
}
gbm = lgb.LGBMClassifier(boosting_type='gbdt',objective = 'binary',metric = 'auc',verbose = 0,learning_rate = 0.01,num_leaves = 35,feature_fraction=0.8,bagging_fraction= 0.9,bagging_freq= 8,lambda_l1= 0.6,lambda_l2= 0)
#有了gridsearch我们便不需要fit函数
gsearch = GridSearchCV(gbm, param_grid=parameters, scoring='accuracy', cv=3)
gsearch.fit(train_x, train_y)print("Best score: %0.3f" % gsearch.best_score_)
print("Best parameters set:")
best_parameters = gsearch.best_estimator_.get_params()
for param_name in sorted(parameters.keys()):print("\t%s: %r" % (param_name, best_parameters[param_name]))

可以从参数看出,该代码的面对的问题是二分类,objective = ‘binary’,以AUC为指标, verbose 指多少轮迭代打印一次日志。
接下来重点讲:GridSearchCV()函数:
官方说明文档:
https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html
其实主要就几个参数:
GridSearchCV(estimator, param_grid, scoring=None, fit_params=None, n_jobs=None, iid=’warn’, refit=True, cv=’warn’, verbose=0, pre_dispatch=‘2*n_jobs’, error_score=’raise-deprecating’, return_train_score=’warn’)
estimator:估计器对象
param_grid : 参数字典
scoring : 评分指标,支持多个,逗号分隔
n_jobs : 线程数,-1全部
cv : 交叉验证折数,把gsearch.fit(train_x, train_y)中(train_x, train_y)cv等分,一份做验证

对于scoring 需要查看GridSearchCV支持的指标:
https://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter
如要使用其他指标,首先导入该函数,然后在scoring 一项中写入对应地字符串,这里必须说一下,sklearn模型评估里的scoring参数都是采用的higher return values are better than lower return values(较高的返回值优于较低的返回值)。
在这里插入图片描述
缺点:无法使用估计器自带的earlystoping功能,很有可能调出来的参数过拟合,虽然可以设置一些参数和交叉验证来防止过拟合,


http://chatgpt.dhexx.cn/article/ux9UsscY.shtml

相关文章

使用线性回归、LGBM对二手车价格进行预测

使用线性回归、LGBM对二手车价格进行预测 目录 使用线性回归、LGBM对二手车价格进行预测说明 数据导入、查看和清洗数据说明导入训练集导入测试集合并数据查看数据整体情况处理数据检查并处理缺失变量 EDA年份和价格地区和价格前任里程和价格燃料类型和价格传动装置类型Mileage…

MFC VS2010 Open CASCADE新建自己的工程

最近磕磕绊绊的去尝试用open cascade建立自己需要的工程文件,终于成功了,一直从网上获取方法,今天自己写一点心得,分享给大家。 一、准备: 1、安装 open cascade , 我安装后目录是: C:\OpenCAS…

[C++] OpenCasCade空间几何库的模型展现

OpenCasCade是什么 Open CASCADE(简称OCC)平台是由法国Matra Datavision公司开发的CAD/CAE/CAM软件平台,可以说是世界上最重要的几何造型基础软件平台之一。开源OCC对象库是一个面向对象C类库,用于快速开发设计领域的专业应用程序…

MFC中使用OpenCasCade示例

目录: 一、OpenCasCade开发环境搭建 二、创建一个MFC应用程序 三、在MFC工程中添加代码 四、画个瓶子 一、OpenCasCade开发环境搭建 参见《OpenCasCade开发环境搭建》,这篇文章最后运行示例前所做的工作为以后开发OpenCasCade工程铺平了路&#xff…

HTML<HBuilder X>

一&#xff1a;网页基本标签元素 HTML常用标签(HTML不是一种编程语言&#xff0c;而是一种标记语言&#xff09;&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>文档标题</title> </head><…

Opencascade 开发 1章

序 这一系列的文章旨在介绍一个方便大家开始开发自己CAD的方法。需要指出的是&#xff0c;本人主要希望通过分享一些相关技术&#xff0c;提升国人软件自主的意识和途径。通过本文构建自己的CAD只是软件自主化的非常非常小的一步&#xff0c;希望大家在不停尝试的过程中有所提…

【OCC学习5】记录最新版本emcc编译occ的bug:opencascade-7.6.0/src/Standard/Standard_Time.hxx:29:25: error: redefinit

1. 在研究OCC与Webassembly结合使用&#xff0c;编译的时候遇到以下问题&#xff1a; C:/workspace/occ_wasm/opencascade-7.6.0/src/Standard/Standard_Integer.hxx:126:25: note: previous definition is here inline Standard_Boolean IsEqual (const Standard_Integer the…

NX二次开发CreateDialog函数在UI.hxx文件和WinUser.h中的冲突

NX二次开发CreateDialog函数在UI.hxx文件和WinUser.h中的冲突 在UG二次开发中&#xff0c;若使用MFC库&#xff0c;一旦加上#include<Afx.h>头文件&#xff0c;或者使用<windows.h>头文件下面这句话就报错 theDialog GetPoints::theUI->CreateDialog(theDlxF…

HLO--XLA

HLO: high level optimizer 高级优化器 XLA&#xff1a; XLA(Accelerated Linear Algebra)-加速线性代数&#xff0c;Google推出的高性能机器学习领域编译器&#xff08;编译型推理引擎&#xff09;&#xff0c;它可以在不更改源代码的条件下加速Tensorflow模型 提高TensorFlo…

C++:C++编译过程:看完还不懂C++编译过程来捶我

1&#xff1a;先看图 2&#xff1a;一个C源文件从文本到可执行文件经历的过程&#xff1a; gcc Hello.cpp 预处理阶段&#xff1a;gcc -E hello.c -o hello.i 对源代码文件中包含关系&#xff08;头文件&#xff09;&#xff0c;预编译语句&#xff08;宏定义&#xff09…

h计算机软件指什么,HXX 文件扩展名: 它是什么以及如何打开它?

解决难以打开 HXX 文件的问题 打开 HXX 文件过程中所遇到的常见问题 MacroMates TextMate 消失 尝试打开 HXX 时&#xff0c;你会遇到一条错误消息&#xff0c;例如 “%%os%% 无法打开 HXX 文件”。 如果是这种情况&#xff0c;通常是因为 你的计算机上没有安装 MacroMates Tex…

神器octotree

在Github上查看源代码的体验十分糟糕&#xff0c;尤其是从一个目录跳转到另一个目录的时候&#xff0c;非常麻烦。 直到遇到这款神器&#xff0c;相见恨晚&#xff01;&#xff01; 具体安装及使用步骤参考&#xff1a; https://www.cnblogs.com/12yang-ting/p/7485264.html …

有用的Chrome扩展介绍 - Octotree - GitHub code tree

明细&#xff1a; 安装之后&#xff0c;Github网站左边会自动出现类似Visual Studio Code的代码显示方式&#xff0c;可以通过树形结构方便地浏览代码&#xff0c;无需重复点击文件夹进入。 树形结构里的图标可以使用各种不同的风格显示&#xff1a; 快捷键&#xff1a;上箭头…

Octotree在GitHub中出错(已解决)

谷歌插件真的是很方便&#xff0c;像Octotree让我们github中的项目浏览起来更加条理&#xff0c;如图 但是当我在github中频繁的切换文件夹的时候&#xff0c;Outotree开始报错&#xff0c;也不显示目录结构&#xff0c;将错误代码放到谷歌翻译如下。 我理解的意思是github需…

Octotree在GitHub中出错

使用octotree 出现Error: Connection error octotree解决办法 解决方法&#xff1a;需要在github设置访问token 登录github&#xff0c;打开https://github.com/settings/profile 依次点击 Settings -> Developer settings -> Personal access tokens -> Generate n…

google扩展工具Octotree使用(2020-09-01)

不知道近期是不是改版了&#xff0c;反正我的需要github Acess Token权限设置。&#xff08;最近csdn出问题了&#xff0c;图片不能居中&#xff0c;勉强看&#xff09; 1.从google商店添加软件 2.打开github刷新并配置 &#xff08;1&#xff09;点钥匙的地方 &#xff08;2…

Octotree访问私有仓库:Error: Private repository

问题 在GitHub私有仓库中使用Octotree时出现下面情况&#xff1a; 这个是因为我们需要在GitHub中给Octotree设置一个访问令牌 解决 在GitHub中&#xff1a;Settings -> Developer settings -> Personal access tokens -> Generate new token 创建令牌 设置名称Oc…

基于 Octotree 的[码云]文件树插件

之前一直在用github上面的Octotree&#xff0c;现在在用gitee&#xff08;主要是github的访问速度太慢了&#xff09;。   现在主要转到了gitee上面了&#xff0c;那么有没有基于 Octotree 的[码云]文件树插件呢&#xff0c;当然是有的&#xff0c;下面就进行安装。 1.基于 O…

Octotree 神器 tips

1. 注册一个Gitlab的帐号&#xff0c;并登录进去 2.打开页面会看到这样一个图片 3.安装完插件&#xff0c;点击上面红色方框的内容&#xff0c;即可&#xff0c;效果图如下