lgbm参数分析及回归超参数寻找

article/2025/9/23 12:11:59

参考:lgbm的github:
https://github.com/Microsoft/LightGBM/blob/master/docs/Parameters.rst
代码来源参见我另一篇博客:
https://blog.csdn.net/ssswill/article/details/85217702
网格搜索寻找超参数:

from sklearn.model_selection import (cross_val_score, train_test_split, GridSearchCV, RandomizedSearchCV)
from sklearn.metrics import r2_scorefrom lightgbm.sklearn import LGBMRegressorhyper_space = {'n_estimators': [1000, 1500, 2000, 2500],'max_depth':  [4, 5, 8, -1],'num_leaves': [15, 31, 63, 127],'subsample': [0.6, 0.7, 0.8, 1.0],'colsample_bytree': [0.6, 0.7, 0.8, 1.0],'learning_rate' : [0.01,0.02,0.03]}est = lgb.LGBMRegressor(n_jobs=-1, random_state=2018)gs = GridSearchCV(est, hyper_space, scoring='r2', cv=4, verbose=1)gs_results = gs.fit(train_X, train_y)
print("BEST PARAMETERS: " + str(gs_results.best_params_))
print("BEST CV SCORE: " + str(gs_results.best_score_))
from sklearn.model_selection import KFold
from sklearn.metrics import mean_squared_error
import lightgbm as lgblgb_params = {"objective" : "regression", "metric" : "rmse", "max_depth": 7, "min_child_samples": 20, "reg_alpha": 1, "reg_lambda": 1,"num_leaves" : 64, "learning_rate" : 0.01, "subsample" : 0.8, "colsample_bytree" : 0.8, "verbosity": -1}FOLDs = KFold(n_splits=5, shuffle=True, random_state=42)oof_lgb = np.zeros(len(train_X))
predictions_lgb = np.zeros(len(test_X))features_lgb = list(train_X.columns)
feature_importance_df_lgb = pd.DataFrame()for fold_, (trn_idx, val_idx) in enumerate(FOLDs.split(train_X)):trn_data = lgb.Dataset(train_X.iloc[trn_idx], label=train_y.iloc[trn_idx])val_data = lgb.Dataset(train_X.iloc[val_idx], label=train_y.iloc[val_idx])print("-" * 20 +"LGB Fold:"+str(fold_)+ "-" * 20)num_round = 10000clf = lgb.train(lgb_params, trn_data, num_round, valid_sets = [trn_data, val_data], verbose_eval=1000, early_stopping_rounds = 50)oof_lgb[val_idx] = clf.predict(train_X.iloc[val_idx], num_iteration=clf.best_iteration)fold_importance_df_lgb = pd.DataFrame()fold_importance_df_lgb["feature"] = features_lgbfold_importance_df_lgb["importance"] = clf.feature_importance()fold_importance_df_lgb["fold"] = fold_ + 1feature_importance_df_lgb = pd.concat([feature_importance_df_lgb, fold_importance_df_lgb], axis=0)predictions_lgb += clf.predict(test_X, num_iteration=clf.best_iteration) / FOLDs.n_splitsprint("Best RMSE: ",np.sqrt(mean_squared_error(oof_lgb, train_y)))

输出:
在这里插入图片描述
开始!
我们把代码拆分来看:
先看超参数字典:

hyper_space = {'n_estimators': [1000, 1500, 2000, 2500],'max_depth':  [4, 5, 8, -1],'num_leaves': [15, 31, 63, 127],'subsample': [0.6, 0.7, 0.8, 1.0],'colsample_bytree': [0.6, 0.7, 0.8, 1.0],'learning_rate' : [0.01,0.02,0.03]}

“n_estimators”:
在这里插入图片描述

从图中可看到,n_estimators是num_itertations的别名,默认是100.也就是循环次数,或者叫树的数目。
后面又有一句note:对于多分类问题,树的数目是种类数*你设的树颗数。
“max_depth”:树的深度
在这里插入图片描述
-1代表无限制。
“num_leaves”:
在这里插入图片描述
“subsample”:
在这里插入图片描述
介绍里说了它的好处:加速训练,避免过拟合等。并说与feature_fraction类似。我们来看看这个参数是啥:
在这里插入图片描述
原来如此,它和RF的
在这里插入图片描述
很像。
图来自:https://www.cnblogs.com/harvey888/p/6512312.html
再来看:‘colsample_bytree’:
在这里插入图片描述
原来就是上面的参数。
继续:‘learning_rate’
这个肯定不用多说了,学习率。

再来看这两行代码:

est = lgb.LGBMRegressor(n_jobs=-1, random_state=2018)
gs = GridSearchCV(est, hyper_space, scoring='r2', cv=4, verbose=1)

在这里插入图片描述
n_jobs=1:并行job个数。这个在ensemble算法中非常重要,尤其是bagging(而非boosting,因为boosting的每次迭代之间有影响,所以很难进行并行化),因为可以并行从而提高性能。1=不并行;n:n个并行;-1:CPU有多少core,就启动多少job。
“random_state”:
在这里插入图片描述
“verbose”:
在这里插入图片描述
就是控制输出信息的冗长程度。不用太在意。默认就好。
类似这样的输出日志:
在这里插入图片描述
信息的意思是:
因为LightGBM使用的是leaf-wise的算法,因此在调节树的复杂程度时,使用的是num_leaves而不是max_depth。
大致换算关系:num_leaves = 2^(max_depth)。它的值的设置应该小于 2^(max_depth),否则可能会导致过拟合。

下面有一个类似的讲解,但不是lgbm的参数讲解。
在这里插入图片描述
第二段代码,关于训练与验证、画图的分析参见下篇博客吧。太长看着累。

2018-12-27补充:
在这里插入图片描述


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

相关文章

LGBM 模型结果 图形展示

一、LGBM 模型结果 图形展示: 1、模型训练 train_x train[feas_x] train_y train[target].astype(int).copy() test_x, test_y test[feas_x], test[target] lgb_clf lgb.LGBMClassifier(objectivebinary,metricauc,num_leaves20,max_depth2,learning_rate0.06,…

Python量化交易05——基于多因子选择和选股策略(随机森林,LGBM)

参考书目:深入浅出Python量化交易实战 在机器学习里面的X叫做特征变量,在统计学里面叫做协变量也叫自变量,在量化投资里面则叫做因子,所谓多因子就是有很多的特征变量。 本次带来的就是多因子模型,并且使用的是机器学习的强大的非…

LightGBM(lgb)详解

1. LightGBM简介 GBDT (Gradient Boosting Decision Tree) 是机器学习中一个长盛不衰的模型,其主要思想是利用弱分类器(决策树)迭代训练以得到最优模型,该模型具有训练效果好、不易过拟合等优点。GBDT不仅在工业界应用广泛&#…

[机器学习] 模型融合GBDT(xgb/lgbm/rf)+LR 的原理及实践

目录 一、原理 GBDT LR 是什么,用在哪 二、说明 GBDT LR 的结构 RF LR ? Xgb LR? GBDT LR 模型提升 三、实践 1 如何获得样本落在哪个叶子节点 2 举例 2.2.1 训练集准备 2.2.2 RFLR 2.2.3 GBDTLR 2.2.4 XgboostLR 2.2.5 单独使用RF, GBDT和Xgboost 2.2.6 …

xgboost 与 lgbm

相关性分析模型可行性报告 基于数值的模型-xgboost 简介 XGBoost是一个优化的分布式梯度提升库,旨在高效,灵活和便携。它在梯度提升框架下实现机器学习算法。XGBoost提供了一个并行树提升(也称为GBDT,GBM)&#xff…

一文彻底看懂LightGBM

本文适合有集成学习与XGBoost基础的读者了解LightGBM算法。 序 LightGBM是基于XGBoost的改进版,在处理样本量大、特征纬度高的数据时,XGBoost效率和可扩展性也不够理想,因为其在对树节点分裂时,需要扫描每一个特征的每一个特征值…

LGBM算法

LGBM 算法定义算法实践其他 算法概念 Light GBM is a gradient boosting framework that uses tree based learning algorithm。 传统的GBDT算法存在的问题: 如何减少训练数据 常用的减少训练数据量的方式是down sample。例如在[5]中,权重小于阈值的…

LGBM调参方法学习

一、了解LGBM参数: LGBM是微软发布的轻量梯度提升机,最主要的特点是快,回归和分类树模型。使用LGBM首先需要查看其参数含义: 微软官方github上的说明: https://github.com/Microsoft/LightGBM/blob/master/docs/Param…

使用线性回归、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…