机器学习之全面了解回归学习器

我们将和大家一起探讨机器学习与数据科学的主题。

本文主要讨论大家针对回归学习器提出的问题。我将概要介绍,然后探讨以下五个问题:

1. 能否将回归学习器用于时序数据?

2. 该如何缩短训练时间?

3. 该如何解释不同模型的结果和可用的绘图?

4. 我选择了具有最小均方根误差 (RMSE) 的模型;接下来还需要做些什么?

5. 如何基于新数据进行预测?

本文会解答一些有关 MATLAB 回归学习器的问题,基本上不涉及回归本身。

引言

自 2017 年起,工程师和科学家可以在 MATLAB 中使用回归学习器。

回归分析可以帮助人们理解变量和数值响应之间的关系,可用于预测能耗、财务绩效和制造工艺参数等。从根本上说,有了回归学习器,您无需编写代码即可交互构建回归模型,并衡量模型的准确度和性能。

您可以快速比较各种回归模型和特征的性能。这款 App 对于刚接触机器学习的人特别有用,因此我很高兴回答一些与该 App 直接相关的问题。

Q1

能否将回归学习器用于时序数据?

当然可以。

例如,您可以使用回归模型来预测电力负荷或预测暴风雨造成的损失,与在其他机器学习 App 中一样,在该 App 中使用时序数据之前,必须对数据进行预处理和清理。

这包括将数据调整到正确的格式、对数据进行归一化以使其处于同一尺度、均匀地分布数据、处理重复数据或缺失数据,以及执行其他必要任务。

Q2

训练花费的时间太长;我该怎么做才能更快地训练我的模型?

您可以在回归学习器中执行几项操作来加快训练速度。提醒一下,在这里我主要介绍该 App 本身提供的方法。

建议 1:使用并行回归模型训练

如果您拥有 Parallel Computing Toolbox™,首先可以尝试的是使用并行回归学习器模型进行训练,这也是比较简单的方法。此方案会创建一个并行池以进行并行训练,让您能够在继续工作的同时并行训练多个模型。

如果选择此方案,您将在“历史记录”列表中看到每个训练中模型和排队中模型的进度指示器,并且还可以随时取消某个模型。这种方法将有助于减少训练所需时间。

在回归学习器的菜单栏中选择“使用并行”。

建议 2:使用留出法验证

如果数据很大,请确保使用正确的验证选项。

当您在回归学习器中打开新会话并选择数据时,默认会选择交叉验证。

交叉验证可将数据划分为若干折 (k)、训练模型并计算所有折的平均测试误差。

与其他方案相比,此方法可以更好地防止过拟合,但需要多次拟合,因此适用于中小型数据集。

留出法验证可让您使用滑块控件选择要用作测试集的数据百分比。该 App 将在训练集上训练模型,并通过测试集评估其性能。用于测试的模型仅基于一部分数据,因此留出法验证特别适用于大型数据集。当然,您也可以选择不验证模型,但是这有可能导致训练数据过拟合。了解有关回归问题验证选项的更多信息

启动新会话时,默认会选择交叉验证。

建议 3:仅在一组模型类型上训练数据

如果您已知数据特别适合用某一类模型处理,或者某一类模型的训练速度太慢,则可以在 App 中选中该类型或取消选中,而不必对所有类型进行训练。如果不确定,则可以尝试“全部(快速训练)”选项,该选项将对所有训练速度通常较快的模型类型进行训练。

然后,您可以训练均方根误差 (RMSE) 最小的那一组的所有模型,以找到最佳模型。

建议 4:精简训练数据

人们经常讨论如何获得足够的数据,但其中的关键是确保拥有足够的正确数据。您可能有一些多年前的历史数据,一些不必要、不再有用的数据。

删除或减少这类数据可以加快训练速度,当然,您需要时刻关注数据的准确性和代表性。这应该是您最后的选择,因为您必须非常谨慎地减少数据。

Q3

该如何解释不同模型的结果和可用的绘图?

这是一个很好的问题!

在用您的数据训练完模型后,需要采取几个步骤来解释结果。

步骤 1:找出具有最小均方根误差的模型

RMSE 衡量每个模型的预测值与观测值之间的距离,因此它衡量的是这些残差的扩散程度。该 App 将在最小 RMSE 周围加一个框。

步骤 2:探查模型

选择具有最小 RMSE 的模型后,下一步就是查看 App 中可用的不同绘图:常用的绘图有两种:响应图,实际值-预测值图。

较小的 RMSE 将以粗体显示,并带有一个方框。

响应图

响应图以竖线显示预测响应与观测值之间的差异。如果您对数据使用留出法验证或交叉验证,则此图特别有用,因为图中显示的预测值对应的是留出的观测值,模型未在这部分数据上进行训练。

使用响应图查看预测值和观测值之间的距离。

实际值-预测值图

实际值-预测值图可帮助您检查模型性能。该图绘制了模型的预测响应对真实响应的图。

在此图中,理想的回归模型应有与观测值相同的预测响应,因此所有点都将位于对角线上。

然而,这在现实中是不可能的,所以我们的目标是让这些点尽可能靠近对角线,并大致对称地分散在对角线附近。如果能在此图中检测到模式,则意味着模型可以改进,您可以选择训练其他模型类型,也可以选择使用高级选项使模型更灵活。

实际值-预测值图可帮助您可视化回归模型的准确度。

Q4

我选择了具有最小均方根误差 (RMSE) 的模型;要优化模型,接下来还需要做些什么?

在针对数据训练和评估初始模型之后,可以通过调整模型的超参数来确保实现最佳性能。

要自动选择并找到模型的最佳超参数值,可以使用超参数优化功能。

该 App 会尝试不同的超参数值组合,以最小化模型的均方误差 (MSE),并返回使用优化超参数的新模型。

超参数调整的效果因模型而异,因此您需要为多种类型的模型优化超参数,因为初始模型可能无法实现最佳性能。

Q5

如何开始进行预测?

要使用经过全面训练和优化的模型基于新数据进行预测,您需要将模型导出到某个位置。您可以将其导出到 MATLAB 工作区,或者生成 MATLAB 代码,以使用刚才在 App 中所用的步骤来训练模型。

然后,您可以使用 MATLAB Compiler™ 部署模型,或者使用 MATLAB Coder™ 从模型生成 C/C++ 代码。

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

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

相关文章

No suitable driver found for jdbc:mysql://localhost:3306(2023/12/7更新)

有两种情况: 压根没安装下载了但没设为库或方法不对 大多数为第一种情况: 一. 下载jdbc 打开网址选择一个版本进行下载 https://nowjava.com/jar/version/mysql/mysql-connector-java.html 二.安装jdbc 在项目里建一个lib文件夹 在把之前下载的jar文…

优化 SQL 日志记录的方法

为什么 SQL 日志记录是必不可少的 SQL 日志记录在数据库安全和审计中起着至关重要的作用,它涉及跟踪在数据库上执行的所有 SQL 语句,从而实现审计、故障排除和取证分析。SQL 日志记录可以提供有关数据库如何访问和使用的宝贵见解,使其成为确…

JNPF低代码平台详解 -- 系统架构

目录 一、技术介绍 技术架构 二、设计原理 三、界面展示 1.代码生成器 2.工作流程 3.门户设计 4.大屏设计 5.报表设计 6.第三方登录 7.多租户实现 8.分布式调度 9.消息中心 四、功能框架 JNPF低代码是一款新奇、实用、高效的企业级软件开发工具,支持企…

Qt/C++音视频开发58-逐帧播放/上一帧下一帧/切换播放进度/实时解码

一、前言 逐帧播放是近期增加的功能,之前也一直思考过这个功能该如何实现,对于mdk/qtav等内核组件,可以直接用该组件提供的接口实现即可,而对于ffmpeg,需要自己处理,如果有缓存的数据的话,可以…

Rust的eBFP框架Aya(一) - Linux内核网络基础

前言 在我的Rust入门及实战系列文章中已经说明, Rust是一门内存安全的高性能编程语言,从它的这些优秀特性来看,就是一门专为系统开发而诞生的语言。至于很多使用Rust来进行web开发的行为,不能说它们不好,只能说是杀鸡…

2017下半年软工(桥接模式)

题目——桥接模式(抽象调用实现部分) package org.example.桥接模式;/*** 桥接模式的核心思想是将抽象部分与它的实现部分分离,使它们可以独立变化,就是说你在实现部分:WinImp、LinuxImp基础上还能加上RedHatImp&#…

03-微服务架构构建之微服务拆分

文章目录 前言一、微服务拆分的原则二、微服务拆分的时机三、微服务拆分的方法总结 前言 微服务架构是将一个单体应用程序拆分为一个个独立且保持松耦合的服务的一种架构方式,每个服务有着独立的数据库并且能独立运行部署。微服务架构的构建过程中,第一…

偷窃别人的密码

在工作中都用到virtual machine吧,同事之间还互相借用机器,或者不借用但凭借自己的域账号能登录任意机器,而且每个域账号都有sudo权限? 那你要小心了! 因为我可以轻易记录下每个ssh登录到我机器,或者我在…

uniapp 输入框输入时,会将内容顶上去的解决方案

// 设置页面最小高度 export const setPageMinHeight () > {return {position: relative,min-height: uni.getSystemInfoSync().windowHeight px} }页面使用: import {setPageMinHeight} from "/utils/uniUtil";data() {return {minHeight: setPag…

Unity 状态系统

状态系统 原理食用方法Demo 原理 #mermaid-svg-lUbxJ8eMP3KqrEhY {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-lUbxJ8eMP3KqrEhY .error-icon{fill:#552222;}#mermaid-svg-lUbxJ8eMP3KqrEhY .error-text{fill:#55…

官方officevisio在线安装包

在线安装包,在线就是要有网络环境,你能搜到这篇博客,就初步具备网络环境 visio在线安装包.zip官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘 在线安装包如下,双击执行安装即可,可供选择的64/32位 软件的激活与…

netty使用

支持协议 TCP/UDPHTTP/HTTPSWebSocketSPDY/HTTP2MQTT/CoAP 服务端 常用类 ServerBootstrap 服务端配置类 //设置线程组、parentGroup处理连接、childGroup处理I/O group(EventLoopGroup parentGroup, EventLoopGroup childGroup) //Channel通过何种方式获取新的连接(NioSe…

【扩散模型】ControlNet从原理到实战

ControlNet从原理到实战 ControlNet原理ControlNet应用于大型预训练扩散模型ControlNet训练过程ControlNet示例1 ControlNet与Canny Edge2. ControlNet与Depth3. ControlNet与M-LSD Lines4. ControlNet与HED Boundary ControlNet实战Canny Edge实战Open Pose 小结参考资料 Cont…

Linux系统上RabbitMQ安装教程

一、安装前环境准备 Linux:CentOS 7.9 RabbitMQ Erlang 1、系统内须有C等基本工具 yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c kernel-devel m4 ncurses-devel tk tc xz socat2、下载安装包 1)首先&a…

[linux] kaggle 数据集用linux下载

你可以通过以下步骤获取Kaggle的下载链接并在Linux中进行下载: 首先,确保你已经安装了Python和Kaggle API。如果没有安装,你可以通过以下命令安装: pip install kaggle 接着,你需要在Kaggle网站上获取API Token。登录…

时间相关类

内容 JDK7时间相关类JDK8时间相关类 第一章 Date类 1.1 Date概述 java.util.Date类 表示特定的瞬间,精确到毫秒。 继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,我们重点看以下两个构造函数 public Dat…

【PyTorch】 暂退法(dropout)

文章目录 1. 理论介绍2. 实例解析2.1. 实例描述2.2. 代码实现2.2.1. 主要代码2.2.2. 完整代码2.2.3. 输出结果 1. 理论介绍 线性模型泛化的可靠性是有代价的,因为线性模型没有考虑到特征之间的交互作用,由此模型灵活性受限。泛化性和灵活性之间的基本权…

Docker构建自定义镜像

创建一个docker-demo的文件夹,放入需要构建的文件 主要是配置Dockerfile文件 第一种配置方法 # 指定基础镜像 FROM ubuntu:16.04 # 配置环境变量,JDK的安装目录 ENV JAVA_DIR/usr/local# 拷贝jdk和java项目的包 COPY ./jdk8.tar.gz $JAVA_DIR/ COPY ./docker-demo…

Java基础50题: 21.实现一个方法printArray, 以数组为参数,循环访问数组中的每个元素,打印每个元素的值.

概述 实现一个方法printArray, 以数组为参数,循环访问数组中的每个元素,打印每个元素的值. 代码 public static void printArray(int[] array) {for (int i 0; i < array.length; i) {System.out.println(array[i] " ");}System.out.println();}public static…

【数据结构c实现】顺序表实现

文章目录 线性表线性表的顺序实现结点结构结点初始化增配空间Inc打印顺序表show_list线性表长度length尾部插入push_back头部插入push_front尾部删除pop_back头部删除pop_front按位置插入insert_pos按值查找find按位置删除delete_pos按值删除delete_val排序sort(冒泡&#xff1…