基于matlab的SVR回归预测

news2024/11/19 10:16:14

 

1 原理

        SVR(Support Vector Regression)回归预测原理,基于支持向量机(SVM)的回归分支,其核心思想是通过寻找一个最优的超平面来进行回归预测,并处理非线性回归问题。以下是SVR回归预测原理的系统全面详细介绍:

1.1 基本原理

        1.SVR通过在线性函数两侧制造一个“间隔带”,该间距被称为容忍偏差(ϵ)。

        2.对于所有落入间隔带内的样本,不计算损失。

        3.只有支持向量会对函数模型产生影响。

        4.最后,通过最小化总损失和最大化间隔来得出优化后的模型。

1.2 松弛变量与软间隔

        1.在现实任务中,很难直接确定合适的ϵ来确保大部分数据都能在间隔带内。

        2.因此,SVR引入了松弛变量ξ,使函数的间隔要求变得放松,允许一些样本可以不在间隔带内。

        3.引入松弛变量后,所有的样本数据都满足条件,这就是软间隔SVR。

1.3 核函数

        1.SVR预测还涉及到核函数的选择和应用。

        2.核函数用于将输入空间映射到高维特征空间,以便解决非线性回归问题。

        3.常见的核函数包括线性核函数、多项式核函数和RBF核函数等。

1.4 SVR计算公式

        1.SVR的计算公式旨在最小化总损失和最大化间隔。

        2.公式如下:

e9e9fbac79da49d2bcfd27a937c72a4d.png

1.5 算法步骤:

        1.数据预处理:对输入特征进行标准化处理,使其均值为0,方差为1,以提高算法的收敛速度和精度。

        2.核函数选择:选择适合的核函数,将数据映射到高维空间,以处理非线性回归问题。

1.6 SVR的特点:

        1.不仅可以用于预测,还可以用于异常值检测。

        2.通过最大化预测出错的容忍度(margin)来寻找最优解。

        3.对于回归问题,支持向量回归(SVR)相比传统回归方法,具有更好的鲁棒性和泛化能力。

        综上所述,SVR回归预测原理基于支持向量机的回归分支,通过在线性函数两侧制造“间隔带”,并利用松弛变量和核函数等技巧,实现了高效、准确的回归预测。

2 回归结果

39511dac433c4a97a44396343f23803c.jpeg

图2-1 训练集测试结果

0b4155f35aa34c73b0585ab4ff5183b9.jpeg

图2-2 测试集测试结果

        由图2-1与图2-2可以看出真实值与拟合值非常接近,不存在偏差过大的数据点。

3789098c27aa44f1bddf7ef4f340cf21.jpeg

图2-3 训练集回归

97bce1555ebe49699811f842b5aefb3d.jpeg

图2-4 测试集回归

        从图2-3与图2-4可以看出模型在训练集上训练效果很好,但在测试集上整体训练存在偏差。

9c7cbdba3d20464fae3a6cb142e0a53e.jpeg

图2-5 训练集残差图

4a8af2fffdac4b3dbd9ad93d7aa4fd0d.jpeg

图2-6 测试集残差图

        基于图2-5与图2-6 中训练集和测试集的残差图,可以观察到模型的训练效果较好。在训练集中,残差值相对较小且稳定,这表明模型正在准确地拟合数据。而在测试集中,残差值稍大但仍在可接受的范围内,说明模型在未见过的数据上也有较好的表现。

        本文在测试集数据量上划分了较大的比重,这是模型在测试集上由较好表现的重要原因之一。

3 代码

%% 清空环境变量  
warning off             % 关闭报警信息  
close all               % 关闭开启的图窗  
clear                   % 清空变量  
clc                     % 清空命令行  
%% Import data    
dataset = xlsread('data.xlsx');    
    
%% Split data into training and testing sets    
num_columns = size(dataset, 2);  
num_rows = size(dataset, 1);  
permutation_indices = randperm(num_rows);  
split_ratio = 0.6; % 训练集、测试集划分比例为9:1     
X_train = dataset(permutation_indices(1: round(num_rows*split_ratio)), 1: num_columns-1)';  
Y_train = dataset(permutation_indices(1: round(num_rows*split_ratio)), num_columns)';  
M = size(X_train, 2);  
  
X_test = dataset(permutation_indices(round(num_rows*split_ratio): end), 1: num_columns-1)';  
Y_test = dataset(permutation_indices(round(num_rows*split_ratio): end), num_columns)';  
N = size(X_test, 2);  
%% Normalize data    
[x_train, ps_input] = mapminmax(X_train, 0, 1);    
x_test = mapminmax('apply', X_test, ps_input);    
    
[y_train, ps_output] = mapminmax(Y_train, 0, 1);    
y_test = mapminmax('apply', Y_test, ps_output);    
    
%% Transpose data to fit the model    
x_train = x_train'; x_test = x_test';    
y_train = y_train'; y_test = y_test';    
    
%% Create SVM model    
c_param = 4.0;    % Penalty factor    
g_param = 0.8;    % RBF kernel parameter    
cmd_params = [' -t 2',' -c ',num2str(c_param),' -g ',num2str(g_param),' -s 3 -p 0.01'];    
svm_model = svmtrain(y_train, x_train, cmd_params);    
    
%% Predict    
[y_sim1, error_1] = svmpredict(y_train, x_train, svm_model);    
[y_sim2, error_2] = svmpredict(y_test, x_test, svm_model);    
    
%% Reverse normalize data    
Y_sim1 = mapminmax('reverse', y_sim1, ps_output);    
Y_sim2 = mapminmax('reverse', y_sim2, ps_output);    
    
%% Calculate root mean square error (RMSE)    
rmse_train = sqrt(mean((Y_sim1 - Y_train).^2));    
rmse_test = sqrt(mean((Y_sim2 - Y_test).^2));    
    
%% Plot training results    
figure;    
plot(1:M, Y_train, 'b-*', 1:M, Y_sim1, 'r-o', 'LineWidth', 1);    
legend('Actual', 'Predicted');    
xlabel('Sample');    
ylabel('Value');    
xlim([1, M]);    
grid on;     
figure;    
plot(1:N, Y_test, 'y-*', 1:N, Y_sim2, 'r-o', 'LineWidth', 1);    
legend('Actual', 'Predicted');    
xlabel('Sample');    
ylabel('Value');    
xlim([1, N]);    
grid on;
%% Plot scatter plot for training set  
figure;  
scatter(Y_train, Y_sim1, 25, 'green');  
hold on;  
plot(xlim, ylim, '--r');  
xlabel('Actual (Training)');  
ylabel('Predicted (Training)');  
xlim([min(Y_train) max(Y_train)]);  
ylim([min(Y_sim1) max(Y_sim1)]);  
title('Predicted and Actual for Training Set');  
grid on;  
  
%% Plot scatter plot for test set  
figure;  
scatter(Y_test, Y_sim2, 25, 'green');  
hold on;  
plot(xlim, ylim, '--r');  
xlabel('Actual (Test)');  
ylabel('Predicted (Test)');  
xlim([min(Y_test) max(Y_test)]);  
ylim([min(Y_sim2) max(Y_sim2)]);  
title('Predicted and Actual for Test Set');  
grid on;  
  
%% The residuals of the training set are calculated and saved as residuals train variables  
residuals_train = Y_sim1 - Y_train;  
  
%% Plot the residuals of the training set  
figure;  
plot(1:M, residuals_train, 'k', 'Marker', 'o');  
xlabel('Sample (Training)');  
ylabel('Residual');  
title('Residuals for Training Set');  
grid on;  
  
%% If necessary, you can also calculate and plot the residuals of the test set 
residuals_test = Y_sim2 - Y_test;  
figure;  
plot(1:N, residuals_test, 'k', 'Marker', 'o'); 
xlabel('Sample (Test)');  
ylabel('Residual');  
title('Residuals for Test Set');  
grid on;  
 

 

 

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

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

相关文章

腾讯 MOFA-Video: 可控制图转视频

腾讯 MOFA-Video: 可控制图转视频 MOFA-Video 它支持运动轨迹、人脸关键点并支持将其混合控制图像转换为视频。 混合控制: 结合图像、控制信号和关键点生成动画。 运动画笔: 结合图像、轨迹和画笔生成动画。 控制比例: 调整动画的控制比例,从纯 SVD 到完全控制。 通…

实验七:了解可编辑网格与多边形实战

如果文章有写的不准确或需要改进的地方,还请各位大佬不吝赐教💞💞💞。朱七在此先感谢大家了。😘😘😘 🏠个人主页:语雀个人知识库 🧑个人简介:大家…

情感搞笑聊天记录视频:AI自动化生成技术,操作简单,教程+软件

在数字化时代,内容创作已成为吸引观众、传递信息的重要手段。随着人工智能技术的飞速发展,AI自动生成视频为创作者提供了新的工具和可能性。本文将介绍如何利用AI技术,通过情感搞笑聊天记录视频,在视频号上实现内容的自动化生成&a…

什么样的落地台灯比较好?五款宝藏可靠护眼大路灯推荐

现代家庭中,落地台灯也逐渐的代替传统台灯,成为许多孩子在读写时的照明神器,它已经被许多家长认可,宽广的光线光线清晰,视觉上舒适了不少。然而,目前市场上有许多品牌未经过充分的技术、材质和工艺研究&…

中国车牌检测数据集VOC+YOLO格式2001张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2001 标注数量(xml文件个数):2001 标注数量(txt文件个数):2001 标注…

“论云原生架构及其应用”写作框架,系统架构设计师

论文真题 近年来,随着数字化转型不断深入,科技创新与业务发展不断融合,各行各业正在从大工业时代的固化范式进化成面向创新型组织与灵活型业务的崭新模式。在这一背景下,以容器和微服务架构为代表的云原生技术作为云计算服务的新…

【耐水好】强耐水UV胶水是怎样的?

【耐水好】强耐水UV胶水是怎样的? 强耐水UV胶水是一种特殊的胶水,其设计重点在于其出色的耐水性能。以下是关于强耐水UV胶水的特点: 优异的耐水性能:这种胶水能在水环境下保持稳定的粘接强度,不易被水分解或削弱。因…

基于FreeRTOS+STM32CubeMX+LCD1602+MCP4241(SPI接口)的数字电位器Proteus仿真

一、仿真原理图: 二、仿真效果: 三、STM32CubeMX配置: 1)、SPI接口配置: 2)、时钟配置 四、软件代码部分: 1)、初始化部分: void Task0_Init(void) { lcd1602_Init(); LCD1602_write_string(0,0,"POT0 value:"); LCD1602_write_string(1,0,"POT…

Langchain实战:构建高效的知识问答系统

引言 知识问答系统(KQA)是自然语言处理领域的核心技术之一,它能够帮助用户从大量数据中快速准确地检索到所需信息。知识问答系统成为了帮助个人和企业快速获取、筛选和处理信息的重要工具。它们在很多领域都发挥着重要作用,例如在…

“人工智能+”带来新变化

以生成式人工智能(AIGC)为代表的新一代人工智能技术创新加速演进,相关商业化应用成果也不断涌现,行业应用范围不断拓展,深度赋能实体经济,为行业提质增效与实现减排提供助力。 自主航运初创公司OrcaAI于6月…

AI 大模型企业应用实战(06)-初识LangChain

LLM大模型与AI应用的粘合剂。 1 langchain是什么以及发展过程 LangChain是一个开源框架,旨在简化使用大型语言模型构建端到端应用程序的过程,也是ReAct(reasonact)论文的落地实现。 2022年10月25日开源 54K star 种子轮一周1000万美金,A轮2…

光泽正在褪去,所以我们又回到了人工智能领域。

光泽正在褪去,所以我们又回到了人工智能领域。 人工智能冬天将被私有化 自从“人工智能”这个流行词在20世纪50年代被创造出来以来,人工智能经历了几次繁荣和萧条周期。 一种新的技术方法看起来很有趣,并取得了一些成果。它被荒谬地炒作并获…

夏季高压电环境下,工厂如何高效检测可燃气体报警器?

近日,美光台中工厂因高压气体泄漏引起火灾的事件引发了广泛关注。这起事件不仅让人们看到了工厂安全管理的紧迫性,更让可燃气体报警器这一安全设备成为了焦点。 在这篇文章中,佰德将从美光台中工厂火灾案例出发,深入探讨可燃气体…

【Java算法】滑动窗口 下

​ ​ 🔥个人主页: 中草药 🔥专栏:【算法工作坊】算法实战揭秘 🦌一.水果成篮 题目链接:904.水果成篮 ​ 算法原理 算法原理是使用“滑动窗口”(Sliding Window)策略,结…

element-plus的Tour 漫游式引导怎么去绑定Cascader 级联选择器或者它的内容 popper

首先官方例子是用的button 官方.$el这个log出来是: 知道是以元素为准就拿对应的元素就行 级联选择器.$el是这样的: 你可以移入这个元素部分去看看是哪个要用的(好像谷歌还是狐火直接放上去就可以看到元素表示,但是我有时用谷歌只…

环境安装-oracle11g

目录 下载 安装 下载 oracle官网下载 http://www.oracle.com/ https://www.oracle.com/cn/ 找了一下官网,没找到oracle11g 在百度上查询得知:Oracle官方已经将11g的安装包从下载区下架了。如图所示未找到11g版本: 从搜索引擎下载资源包&a…

修改网络的结构用于预训练

目录 一、模型准备 二、修改结构 1、在网络中添加一层 2、在classifier结点添加一个线性层 3、修改网络中的某一层(features 结点举例) 4、替换网络中的某一层结构(与第3点类似) 5、提取全连接层的输入特征数和输出特征数 6、删除网络…

优秀的“抗霾”神器:气膜体育馆—轻空间

随着空气污染问题日益严重,尤其是雾霾天气频发,体育运动的场地环境质量受到越来越多的关注。气膜体育馆作为一种新型的体育场馆解决方案,以其独特的设计和多重优势,成为了优秀的“抗霾”神器。轻空间将深入探讨气膜体育馆的特点和…

Ubuntu下安装、运行Nginx

安装Ubuntu桌面系统(虚拟机)_虚拟机安装ubuntu桌面版-CSDN博客 默认情况下,Ubuntu并没有安装Nginx服务。用户可以使用以下命令安装Nginx服务及其相关的组件: liuubuntu:~$ sudo apt install nginx 安装完成之后,使用…

高考十字路口:24年考生如何权衡专业与学校的抉择?

文章目录 每日一句正能量前言专业解析理工科专业商科专业人文社科专业艺术与设计专业个人经验与思考过程结论 名校效应分析名校声誉与品牌效应资源获取学术氛围就业优势个人发展结论 好专业和好学校的权衡个人职业目标行业需求教育质量资源和机会学术氛围就业优势经济和地理位置…