机器学习——集成学习框架(GBDT、XGBoost、LightGBM、CatBoost)、调参方法

news2025/4/2 8:00:57

一、集成学习框架

训练样本较少的结构化数据领域,Boosting算法仍然是常用项

XGBoost、CatBoost和LightGBM都是以决策树为基础的集成学习框架

三个学习框架的发展是XGBoost是在GBDT的基础上优化而来,CatBoost和LightGBM是在XGBoost的基础上优化而来

三个学习框架的决策树构造方式XGBoost是按照层生成(level-wise)得到的是对称树,避免过拟合但存在冗余分裂;CatBoost也是对称树,其为完全二叉树;LightGBM使用的是叶子生长(level-wise),其得到是一个不对称树

三个学习框架对类别特征的处理XGBoost不能自动处理类别特征,对于其中的类别特征,需要人工手动出来成数值形式用于模型训练;LightGBM只需要指定类别特征名称,其内置的算法会自动对其进行处理;CatBoost是专门处理类别特征,其中内置的目标变量统计的特征编码方式实现对数据类别特征的高效处理

知识补充:对称树关注的是结构对称性,而完全二叉树强调层序填充的完整性。两者在定义、构造条件和应用场景上截然不同,但也存在交集(如完全对称的满二叉树)

对称树:二叉树的左右子树呈镜像对称,不能出现左或右子树缺失,或者对应对称节点值不等的情况

完全二叉树:深度为k的二叉树,若其前k-1层节点数达到最大值,且第k层节点从左到右。

连续排列,则称为完全二叉树

在对某一数据集进行多模型训练和测试分类效果比较时:需要展现的表格效果为:

模型1

模型2

.................

模型n

基本超参数

训练集AUC

测试集AUC

训练时间(s)

测试时间(s)

知识补充:AUC是模型在数据上的分类排序能力量化指标,其核心价值在于评估模型拟合能力及辅助判断过拟合

二、调参优化

机器学习中有大量的参数需要人为事先设定,这些统称为超参数(hyperparameter),常见的就如同epoch、batch_size、树深度、学习率和正则化系数等参数的设定
下面来介绍机器学习中常用的调参方法:需要强调的是超参数的最优选择是在模型的验证过程中,即此时需要用到验证集,需要提取对数据集划分好(因为超参数是不参与模型内部参数的自动更新,其是通过外部调优确定最佳取值)

①随机调参法( random search,不是所有超参数组合都尝试)

其采用的方式是对给定分布中抽样规定数量的参数,对这些抽样的超参数进行实验,选取其中模型验证集损失误差最小时的超参数组合即可。有时这种方式更为高效

②网格搜索法(grid search,所有超参数组合都尝试)

这种方法的思路很好理解,其主要适用的场景包括:优化三个及其以下的超参数数量。具体方法:比如我现在有三个参数a/b/c,我想得到三个参数组合的最优模型参数,那么我预先设定三个参数的候选值列表(预设一个待搜索的参数列表空间):a:[0.1,0.3.0.5],b:[50,100,150],c:[3,5,7],那么此时总共的组合方式为3×3×3=27种(笛卡尔乘积组合),此时就依次遍历这27种组合用于模型的参数设置,选择其中模型验证集损失误差最小时的超参数组合即可

③贝叶斯调参优化法(bayesian optimization,这种方式可以同时出来很多参数,当然其计算资源的增加也是指数级别的增加)

贝叶斯优化调参是目前最好的调参方法,贝叶斯优化的核心价值在于以最少试错成本逼近全局最优解。其中的优化方法涉及高斯过程和贝叶斯定理。其高斯过程的核心是对已有的数据点预测区域进行函数建模,求其不确定性和概率分布,对其中概率较大的区间的进行迭代,使得模型的损失达到最低时对应的超参数组合选择,但是这种方式比较消耗计算资源

其核心思想很好理解:比如在使用贝叶斯优化方法时,我希望在目前选择的一个参数1条件下(前提),使得其去组合另外一个参数2,使得模型效果更好,那么我怎么更好的去寻找到满足前提条件中最好的值(即这个前提条件是最优的),此时寻找的方法就可以使用高斯过程,找到这个最好的前提条件值,此时就只需要对另外一个参数2做考虑即可,迭代参数2的范围,找到模型性能最好的那组对应的超参数组合。幸运的是,目前这个好理解但实现复杂的方法已经被封装在bayes_opt中,可以在pycharm中直接调用使用

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[蓝桥杯 2023 省 A] 网络稳定性

题目来自DOTCPP: 思路: ①由于题目没有告诉我们成树形结构,可能成环。因此,我们要自己构建树。 ②本体我们通过kruskal重构树,按边权从大到小排序,那么查询的两个点的最近公共祖先权值就是答案。 ③在通…

鸿蒙项目源码-天气预报app-原创!原创!原创!

鸿蒙天气预报项目源码包运行成功含文档ArkTS语言。 我半个月写的原创作品,请尊重原创。 原创作品,盗版必究!!!! 原创作品,盗版必究!!!! 原创作品…

一文聊聊接入钉钉H5微应用系统实现免登操作技术思路实现验证

一文聊聊接入钉钉H5微应用系统实现免登操作技术思路实现验证 如何创建钉钉应用实现H5端免登录创建钉钉内部应用1.进入钉钉开放平台,配置自己的应用信息2.配置应用相关信息(建议选择旧版,后续有一个token获取,新版会提示URL不安全&…

测试开发-定制化测试数据生成(Python+jmeter+Faker)

实现步骤 步骤一:使用pythonfaker随机生成测试数据 在python中开发脚本,随机生成所需要的数据。import json from faker import Faker faker Faker(locale"zh_CN")def generate_faker_user():return {"name" : faker.name(),&qu…

智能体开发平台与大模型关系图谱

架构层级分解(以飞速灵燕智能体平台为例)动态交互流程 3. 关键连接点说明 4. 典型数据流示例

LinuxTCP/UDP基础概念

TCP(传输控制协议) TCP 是一种面向连接的、可靠的、基于字节流的传输层通信协议。它的主要特点包括: 面向连接:在传输数据之前,需要通过“三次握手”建立连接;传输结束后,通过“四次挥手”断开…

【百日精通 JAVA | SQL篇 | 第一篇】初识数据库

一、数据库是什么? 数据库是一类软件,数据库的作用用于管理系统(这是一款成品软件,内部应用了很多数据结构)。 二、数据库分为两大类 1.关系型数据库 对于数据的要求比较严格 通常是以表格的方式来组织数据的。(和Excel差不多) 典型代表…

大数据Spark(五十六):Spark生态模块与运行模式

文章目录 Spark生态模块与运行模式 一、Spark生态模块 二、Spark运行模式 Spark生态模块与运行模式 一、Spark生态模块 Spark 生态模块包括:SparkCore、SparkSQL、SparkStreaming、StructuredStreaming、MLlib 和 GraphX。与 Hadoop 相关的整个技术生态如下所示…

Gossip协议:分布式系统中的“八卦”传播艺术

目录 一、 什么是Gossip协议?二、 Gossip协议的应用 💡三、 Gossip协议消息传播模式详解 📚四、 Gossip协议的优缺点五、 总结: 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式&…

Oracle初识:登录方法、导入dmp文件

目录 一、登录方法 以sys系统管理员的身份登录 ,无需账户和密码 以账户密码的用户身份登录 二、导入dmp文件 方法一:PLSQL导入dmp文件 一、登录方法 Oracle的登录方法有两种。 以sys系统管理员的身份登录 ,无需账户和密码 sqlplus / a…

微服务架构中的精妙设计:环境和工程搭建

一.前期准备 1.1开发环境安装 Oracle从JDK9开始每半年发布⼀个新版本, 新版本发布后, ⽼版本就不再进⾏维护. 但是会有⼏个⻓期维护的版本. ⽬前⻓期维护的版本有: JDK8, JDK11, JDK17, JDK21 在 JDK版本的选择上,尽量选择⻓期维护的版本. 为什么选择JDK17? S…

【Yolov8部署】 VS2019+opencv-dnn CPU环境下部署目标检测模型

文章目录 前言一、导出yolov8模型为onnx文件二、VS2019配置及opencv环境配置三、opencv部署总结 前言 本文主要研究场景为工业场景下,在工控机与工业相机环境中运行的视觉缺陷检测系统,因此本文主要目的为实现c环境下,将yolov8已训练好的检测…

3.30学习总结 Java包装类+高精度算法+查找算法

包装类: 基本数据类型对应的引用数据类型。 基本数据类型:在内存中记录的是真实的值。 八种包装类的父类都是Object类。 对象之间不能直接进行计算。 JDK5之后可以把int和integer看成一个东西,因为会进行内部优化。自动装箱和自动拆箱。 …

3月30号

// 1.toString 返回对象的字符串表示形式Object objnew Object();String str1obj.toString();System.out.println(str1);//java.lang.Objectb4c966a// 核心逻辑: // 当我们打印一个对象的时候,底层会调用对象的toString方法,把对象变成字符串 // 然…

Java——输入,循环,BigInteger,拷贝,排序

读取输入 打印输出到“ 标准输出流”(即控制台窗口)是一件非常容易的事情,只要 调用System.out.println 即可。然而,读取“ 标准输人流” System.in就没有那么简单了。要想通 过控制台进行输人,首先需要构造一个Scann…

Elasticsearch客户端工具初探--kibana

1 Kibana简介 Kibana是Elastic Stack(ELK)中的可视化工具,用于对Elasticsearch中存储的数据进行搜索、分析和可视化展示。它提供了直观的Web界面,支持日志分析、业务监控、数据探索等功能,广泛应用于运维监控、安全分析…

ollama在win10安装、使用、卸载

目录 前置: 1 下载ollama 2 安装 3 配置环境变量,设置模型存储位置 4 使用 5 卸载 前置: 1 在打算安装ollama之前,需要先检查电脑当前状态是否能使用ollama。确认条件满足再进行安装操作。 2 https://github.com/ollama/…

查看iphone手机的使用记录-克魔实战

如何查看 iOS 设备近期的详细使用数据 在日常使用手机时,了解设备的运行状态和各项硬件的使用情况可以帮助分析耗电情况、优化应用使用方式。iOS 设备提供了一些数据记录,能够显示应用的启动和关闭时间、后台运行情况,以及应用在使用过程中调…

[Lc5_dfs+floodfill] 简介 | 图像渲染 | 岛屿数量

目录 0.floodfill算法简介 1.图像渲染 题解 2.岛屿数量 题解 之前我们在 bfs 中有介绍过[Lc15_bfsfloodfill] 图像渲染 | 岛屿数量 | 岛屿的最大面积 | 被围绕的区域,现在我们来看看 dfs 又是如何解决的呢 0.floodfill算法简介 floodfill算法又叫洪水灌溉或者…

AI-Sphere-Butler之如何使用腾讯云ASR语音识别服务

环境: AI-Sphere-Butler WSL2 英伟达4070ti 12G Win10 Ubuntu22.04 腾讯云ASR 问题描述: AI-Sphere-Butler之如何使用腾讯云ASR语音识别服务,本地硬件配置不高的情况,建议使用云服务商的ASR 解决方案: 1.登…