机器学习中的LightGBM模型及其优缺点(包含Python代码样例)

目录

一、简介

二、优缺点

三、样例代码

四、总结


一、简介

LightGBM(Light Gradient Boosting Machine)是一种基于梯度提升(Gradient Boosting)算法的机器学习模型。它是由微软团队于2017年开发的,旨在解决大规模数据下的效率和准确性问题。

LightGBM的原理如下:

  1. 基于梯度提升:LightGBM使用梯度提升算法来训练多个弱分类器,每个弱分类器都试图学习最佳的预测函数来减少当前模型的残差。

  2. 基于直方图的决策树算法:LightGBM使用直方图算法替代了传统的决策树算法。直方图算法把连续的特征分成离散的bins,并在训练过程中对特征的bins进行选择,从而减少了计算量,并提高了训练速度。

  3. 基于Leaf-wise的生长策略:LightGBM采用了基于叶子生长的策略,即每次选择能够最大程度降低损失函数的叶子节点进行生长,而不是像传统的深度优先生长策略遍历所有节点。这样可以提高训练速度,但也容易过拟合。

二、优缺点

LightGBM的优点如下:

  1. 高效性:LightGBM使用直方图和叶子生长策略,大大减少了模型的计算量,训练速度更快。它还支持并行训练和特征并行化,能够处理大规模的数据集。

  2. 准确性:LightGBM具有较低的误差率,能够处理复杂的模型和大规模的数据集,并且在大多数情况下具有较高的准确性。

  3. 鲁棒性:LightGBM对噪声和离群值具有较好的鲁棒性,可以处理不完整的数据和缺失值。

LightGBM的缺点如下:

  1. 容易过拟合:由于采用了基于叶子生长的策略,LightGBM容易过拟合训练数据,尤其是在数据集较小或特征较少时。

  2. 内存消耗较大:LightGBM在训练过程中需要存储额外的直方图和梯度信息,因此对内存消耗较大,特别是在处理大规模数据时。

三、样例代码


from sklearn.datasets import load_iris
import lightgbm as lgb
import pandas as pd
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
plt.style.use('ggplot')
import warnings
warnings.filterwarnings('ignore')iris = load_iris()
df = pd.DataFrame(data=iris.data, columns=[i[:-5].replace(' ','_') for i in iris.feature_names])
df['target'] = iris.targettr_x, te_x, tr_y, te_y = train_test_split(df.drop(columns='target'), df['target'], test_size=0.2)
tr_lgb_dt = lgb.Dataset(tr_x, label=tr_y.values)
te_lgb_dt = lgb.Dataset(te_x, label=te_y.values)lgb_param = {'objective': 'multiclass','metric': ['multi_logloss', 'multi_error'],'num_class': 3,'n_jobs': 4,'num_iterations': 300,'learning_rate': 0.02,'max_depth': 4,'lambda_l2': 0.8,'verbose': -1
}
eval_result={}
lgb_model = lgb.train(lgb_param, train_set=tr_lgb_dt , valid_sets=[tr_lgb_dt, te_lgb_dt], verbose_eval=20,callbacks=[lgb.log_evaluation, lgb.early_stopping(50, first_metric_only=True), lgb.record_evaluation(eval_result)])# plot loss
plt.title('training losses')
for data_name, metric_res in eval_result.items():for metric_name, log_ in metric_res.items():plt.plot(log_, label = f'{data_name}-{metric_name}', color='steelblue' if 'train' in data_name else 'darkred', linestyle=None if 'train' in data_name else '-.',alpha=0.7)plt.legend()
plt.show()
plt.savefig(fname="LightGBM_iris_result.png")

下方InsCode选择查看文件里的LightGBM_iris_result.png即可查看可视化结果

四、总结

        LightGBM是一种高效、准确的梯度提升算法模型,适用于大规模数据集和复杂的模型训练。它在训练速度和准确性上有一定的优势,但也存在一些容易过拟合和内存消耗大的缺点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/573765.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 事务传播行为

实现原理 : Aop (TransactionInterceptor) 实现 使用spring声明式事务注意事项 同一个bean中的方法调用必须重新声明一个bean调用、否则后续方法调用的事务默认使用第一个第二个不生效 package com.cloud.person.service.impl;import com.cloud.person.dao.S1Mapper; import…

win10怎么关闭自动更新,win10关闭自动更新步骤

不知道大家有没有碰到过这样的情况,就是有一位网友反映说最近买了一台新电脑,配置呢也很高,玩游戏呢也很流畅,不过有一件事情让他很头疼,就是这个电脑有的时候就会出现蓝屏,还提示修复什么的,并且呢越用越卡顿。出现这个问题的主要原因就是现在新的电脑一般用的都是win1…

CC1310F128RSMR Sub-1GHz超低功耗无线微控制器芯片

CC1310F128RSMR QFN-32 Sub-1GHz超低功耗无线微控制器 CC1310F128RSMR是一款低成本、 超低功耗、Sub-1 GHz射频器件,它是Simplel ink微控制器(MCU)平台的一部分。该平台由Wi- Fi组成、蓝牙低功耗,Sub-1 GHz,以太网,Zigbee线程和主…

数字身份的革命:解锁 Web3 的身份验证技术

引言 随着数字化时代的到来,个人身份认证成为了日常生活和商业活动中不可或缺的一部分。传统的身份验证方式存在着安全性低、易伪造、不便利等问题,因此,人们迫切需要一种更安全、更便捷的身份验证技术。在这样的背景下,Web3的身…

Redis常见命令

基础篇Redis 4.Redis常见命令 4.1 Redis数据结构介绍 Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样: 贴心小建议:命令不要死记,学会查询就好啦 Redis为了方便我们学习,将…

git提交-分支开发合并-控制台操作

git提交-分支开发合并-控制台操作 git的基本概念工作区、暂存区和版本库工作区:就是你在电脑里能看到的目录(隐藏目录 .git不算工作区)。暂存区:英文叫 stage 或 index。一般存放在本地的.git目录下的index 文件(.git/…

zedboard+AD9361 运行 open WiFi

先到github上下载img,网页链接如下: https://github.com/open-sdr/openwifi?tabreadme-ov-file 打开网页后下载 openwifi img 用win32 Disk lmager 把文件写入到SD卡中,这一步操作会把SD卡重新清空,注意保存数据。这个软件我会…

vue+Echarts实现多设备状态甘特图

目录 1.效果图 2.代码 3.注意事项 Apache ECharts ECharts官网,可在“快速上手”处查看详细安装方法 1.效果图 可鼠标滚轮图表和拉动下方蓝色的条条调节时间细节哦 (注:最后一个设备没有数据,所以不显示任何矩形)…

[BT]BUUCTF刷题第5天(3.23)

第5天(共3题) Web [GXYCTF2019]BabyUpload 先上传一句话木马,修改文件后缀名为php,但是返回页面提示后缀不能有ph 常用的后缀名绕过都带有ph,因此这道题采用上传.htaccess文件(上传时注意使用BP抓包将Con…

国内ip切换app,让切换ip变得简单

在数字化快速发展的今天,互联网已经成为我们生活中不可或缺的一部分。然而,随着网络应用的深入,用户对于网络环境的需求也日益多样化。其中,IP地址作为网络中的关键标识,其切换与管理显得尤为重要。为了满足用户对于IP…

Vue 生态最火的元框架(Nuxt 3.10)

在主流的 JS 库/框架生态中,近年来诞生了若干元框架,比如 React 的 Next 和 Remix,Vue 的 Nuxt 等。 不久前,Nuxt团队官宣 Nuxt 3.10 正式发布,截止今天已经发布3.11版本了,更新包含了若干功能和修复。其实…

阿里云企业邮箱API与其他API服务的不同点?

阿里云企业邮箱API如何使用?如何配置邮箱API权限? 在众多API服务中,阿里云企业邮箱API以其独特的功能和优势,为企业邮箱管理带来了全新的体验。那么,阿里云企业邮箱API与其他API服务究竟有哪些不同点呢?Ao…