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

一、集成学习框架

训练样本较少的结构化数据领域,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.mzph.cn/diannao/75988.shtml

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

相关文章

第十五章:Python的Pandas库详解及常见用法

在数据分析领域,Python的Pandas库是一个不可或缺的工具。它提供了高效的数据结构和数据分析工具,使得数据处理变得简单而直观。本文将详细介绍Pandas库的基本功能、常见用法,并通过示例代码演示如何使用Pandas进行数据处理。最后,…

【Python桌面应用】PySide6 界面开发完全指南

文章目录 1. 引言2. PySide6 简介与安装2.1 什么是PySide62.2 PySide6 vs. PyQt62.3 安装PySide62.4 开发环境配置建议 3. Qt 设计原理3.1 Qt对象模型3.2 信号与槽机制3.3 Qt坐标系统3.4 Qt样式表(QSS) 4. 创建第一个应用4.1 基本应用结构4.2 主窗口与应用生命周期4.3 使用面向…

用 pytorch 从零开始创建大语言模型(三):编码注意力机制

从零开始创建大语言模型(Python/pytorch )(三):编码注意力机制 3 编码注意力机制3.1 建模长序列的问题3.2 使用注意力机制捕捉数据依赖关系3.3 通过自注意力关注输入的不同部分3.3.1 一个没有可训练权重的简化自注意力…

Spring中的IOC及AOP概述

前言 Spring 框架的两大核心设计思想是 IOC(控制反转) 和 AOP(面向切面编程)。它们共同解决了代码耦合度高、重复逻辑冗余等问题。 IOC(控制反转) 1.核心概念 控制反转(Inversion of Control…

STM32_HAL开发环境搭建【Keil(MDK-ARM)、STM32F1xx_DFP、 ST-Link、STM32CubeMX】

安装Keil(MDK-ARM)【集成开发环境IDE】 我们会在Keil(MDK-ARM)上去编写代码、编译代码、烧写代码、调试代码。 Keil(MDK-ARM)的安装方法: 教学视频的第02分03秒开始看。 安装过程中请修改一下下面两个路径,避免占用C盘空间。 Core就是Keil(MDK-ARM)的…

python 第三方库 - dotenv读取配置文件

.env 文件是一种用于存储环境变量的配置文件,常用于项目的运行环境设置。环境变量是操作系统层面的一些变量,它们可以被应用程序访问和使用,通常包含敏感信息或特定于环境的配置,如数据库连接信息、API 密钥、调试模式等。 安装p…

用python压缩图片大小

下载库 cmd开命令或者PyCharm执行都行 pip install pillow2. 然后就是代码 from PIL import Imagedef compress_image(input_path, output_path, quality85, max_sizeNone):"""压缩图片大小。参数:- input_path: 输入图片路径- output_path: 输出图片路径- qu…

【自用记录】本地关联GitHub以及遇到的问题

最近终于又想起GitHub,想上传代码和项目到仓库里。 由于很早之前有在本地连接过GitHub(但没怎么用),现在需要重新搞起(操作忘得差不多)。 在看教程实操的过程中遇到了一些小问题,遂记录一下。 前…

在一个scss文件中定义变量,在另一个scss文件中使用

_variables.scss文件 : $line-gradient-init-color: linear-gradient(90deg, #8057ff 0%, #936bff 50%, #b892ff 100%); $line-gradient-hover-color: linear-gradient(90deg, #936bff 0%, #b892ff 50%, #f781ce 100%); $line-gradient-active-color: linear-gradient(90deg, …

从零开始研发GPS接收机连载——19、自制GPS接收机的春运之旅

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 从零开始研发GPS接收机连载——19、自制GPS接收机的春运之旅 许久未曾更新这个系列,并非我平日里对这事儿没了兴致,不再愿意折腾。实则是受限于自身条…

智能驾驶功能LCC车道保持居中

画龙现象就是LCC常见bug LDW车道偏离预警 LKA车道保持 声音其实就是蜂鸣器 有些车是40 有些是60

Java全栈面试宝典:线程机制与Spring依赖注入深度解析

目录 一、Java线程核心机制 🔥 问题3:start()与run()的底层执行差异 线程启动流程图解 核心差异对照表 代码验证示例 🔥 问题4:Thread与Runnable的六大维度对比 类关系UML图 最佳实践代码 🔥 问题5&#xff1…

使用ANTLR4解析Yaml,JSON和Latex

文章目录 ANTLR4基本使用**1. 安装 Java 运行时(必需)****2. 安装 ANTLR4 命令行工具****方法一:通过包管理器(推荐)****macOS/Linux (Homebrew)****Windows (Chocolatey)** **方法二:手动安装(…

NixVis 开源轻量级 Nginx 日志分析工具

NixVis NixVis 是一款基于 Go 语言开发的、开源轻量级 Nginx 日志分析工具,专为自部署场景设计。它提供直观的数据可视化和全面的统计分析功能,帮助您实时监控网站流量、访问来源和地理分布等关键指标,无需复杂配置即可快速部署使用。 演示…

黑盒测试的等价类划分法(输入数据划分为有效的等价类和无效的等价类)

重点: 有效等价和单个无效等价各取1个即可 1、正向用例:一条尽可能覆盖多条2、逆向用例:每一条数据,都是一条单独用例。 步骤: 1、明确需求 2、确定有效和无效等价 3、根据有效和无效造数据编写用例 3、适用场景 针对:需要有大量数据测试输入, …

Linux Mem -- 通过reserved-memory缩减内存

目录 1. reserved-memory缩减内存 2. 为什么要通过2段512GB预留内存实现该缩减呢? 3. reserved-momery中的no-map属性 4. 预留的的内存是否会被统计到系统MemTotal中? 本文是解决具体的一些思考总结,和Linux内核的reserved-memory机制相关…

多线程—synchronized原理

上篇文章: 多线程—锁策略https://blog.csdn.net/sniper_fandc/article/details/146508232?fromshareblogdetail&sharetypeblogdetail&sharerId146508232&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 目录 1 synchronized的锁…

AWS混合云部署实战:打造企业级数字化转型的“黄金架构”

引言 “上云是必然,但全部上云未必是必然。”在数字化转型的深水区,企业面临的核心矛盾日益凸显:如何在享受公有云敏捷性的同时,满足数据主权、低延迟和遗留系统兼容的刚性需求? AWS混合云凭借“云上云下一张网”的独…

进程模型5-0号进程

内核版本架构作者GitHubCSDNLinux-3.0.1armv7-ALux1206 0号进程的作用 在 Linux 中除了 init_task 0号进程,所有的线/进程都是通过 do_fork 函数复制父线/进程创建得到,因为 0号进程产生时没有任何进程可以参照,只能通过静态方式构造进程描述…

计算机二级考前急救(Word篇)

重点题(20套,标黄为精选10套):4,15,17,19,21,24,25,27,36,40,12,18,20,22&…