【matlab】回归预测——智能优化算法支持向量机

目录

引言

原理

应用

优势

总结

SVR安装

灰狼优化算法

代码实现


引言

原理

  1. 核心思想
    • SVR的目标是找到一个函数,该函数能够最小化预测误差,并在拟合过程中保持一定的间隔,使得大部分数据点都落在这个间隔之内。
    • 与SVM类似,SVR也是通过寻找数据集中的支持向量来构建模型,这些支持向量是训练集中与预测函数边界最接近的点。
  2. 间隔与边界
    • 在SVR中,定义了一个边界,由一个中心线和两个平行的边界线组成。这些边界线之间的距离称为间隔,由用户预先设定。
    • SVR的目标是找到一个函数,使得大部分数据点都落在间隔内,并且使得落在间隔之外的数据点的预测误差最小化。
  3. 数学模型
    • SVR的数学模型可以表示为:y(x)=w⋅ϕ(x)+b,其中y(x)表示预测值,x表示输入特征,w表示权重向量,ϕ(x)表示特征映射函数(核函数),b表示偏置项。
    • SVR的目标是找到最佳的w和b,使得误差最小化。这可以通过解决一个优化问题来实现,该优化问题包括最小化预测误差和最大化间隔。

应用

SVR在许多领域都有广泛的应用,包括但不限于:

  1. 金融预测:用于预测股票价格、汇率、利率等金融指标。
  2. 能源管理:预测电力负荷、能源消耗等,帮助实现能源的有效管理和优化。
  3. 环境科学:预测气候变化、污染物浓度等,为环境保护和治理提供决策支持。
  4. 生物医学:预测疾病发病率、药物疗效等,为医疗诊断和治疗提供辅助。

优势

SVR相比于其他回归方法具有以下优势:

  1. 适用于小样本数据:SVR在处理小样本数据时具有较好的泛化能力,能够避免过拟合问题。
  2. 处理非线性关系:通过引入核函数,SVR可以处理非线性关系的数据,具有较强的非线性映射能力。
  3. 鲁棒性强:SVR对噪声和异常值具有较好的鲁棒性,能够减少这些因素对模型性能的影响。
  4. 高效性:SVR的训练过程相对较快,适用于大规模数据的处理。

总结

支持向量机回归(SVR)是一种强大的回归分析方法,它通过寻找支持向量来构建模型,并能够在拟合过程中保持一定的间隔。SVR具有适用于小样本数据、处理非线性关系、鲁棒性强和高效性等优点,在多个领域都有广泛的应用。

支持向量回归(SVR)的详细介绍以及推导算法-CSDN博客

SVR安装

运行前需要安装下面任何一个,本文以linearSVR为例

线性分类器(LinearSVR)https://www.csie.ntu.edu.tw/~cjlin/liblinear/#document

libSVM控件(eSVR)https://www.csie.ntu.edu.tw/~cjlin/libsvm/

1. 将下载解压的东西放在你的matlab的toolbox中

2.在主页的设置路径中添加libsvm及子文件

 3.将当前路径设置到libsvm-3.24/matlab 后,在命令行窗口运行mex -setup

4.编译完成即可正常使用

详细步骤可参考;https://www.cnblogs.com/ggg-327931457/p/9694516.html

下载好的LinearSVRlibSVM还有MinGW -w64 编译器放在网盘链接供大家下载

http://链接:https://pan.baidu.com/s/12101I4Y508G2KlE-1cqWoQ?pwd=l87c 提取码:l87c

灰狼优化算法

灰狼优化算法由Mirjalili等于2014年提出,它模拟了灰狼的群体协作狩猎行为,通过模拟灰狼的等级制度和狩猎策略,实现优化问题的求解。该算法具有结构简单、参数少、易于实现等特点,并且能够在局部寻优与全局搜索之间实现平衡,因此在求解精度和收敛速度方面表现出良好的性能。

灰狼优化算法主要基于以下三个基本步骤来实现优化:

包围猎物:灰狼在狩猎过程中会逐渐接近并包围猎物。在算法中,通过模拟这一行为,使搜索代理(即算法中的“狼”)能够逐步缩小搜索范围,逼近最优解。

追捕猎物:在自然界中,灰狼通过协同狩猎来追捕猎物。在算法中,通过模拟灰狼之间的等级制度和协同狩猎行为,使搜索代理能够相互协作,共同搜索最优解。

攻击猎物:当猎物停止移动时,灰狼会发起攻击,完成狩猎过程。在算法中,这一过程对应于搜索代理收敛到最优解的过程。

具体参考灰狼优化算法(Grey Wolf Optimizer,GWO)-CSDN博客

% Grey Wolf Optimizer
function [Alpha_score,Alpha_pos,Convergence_curve]=GWO(SearchAgents_no,Max_iter,lb,ub,dim,fobj)% initialize alpha, beta, and delta_pos
Alpha_pos=zeros(1,dim);
Alpha_score=inf; %change this to -inf for maximization problemsBeta_pos=zeros(1,dim);
Beta_score=inf; %change this to -inf for maximization problemsDelta_pos=zeros(1,dim);
Delta_score=inf; %change this to -inf for maximization problems%Initialize the positions of search agents
Positions=initialization(SearchAgents_no,dim,ub,lb);Convergence_curve=zeros(1,Max_iter);l=0;% Loop counter% Main loop
while l<Max_iterfor i=1:size(Positions,1)  % Return back the search agents that go beyond the boundaries of the search spaceFlag4ub=Positions(i,:)>ub;Flag4lb=Positions(i,:)<lb;Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;               % Calculate objective function for each search agentfitness=fobj(Positions(i,:));% Update Alpha, Beta, and Deltaif fitness<Alpha_score Alpha_score=fitness; % Update alphaAlpha_pos=Positions(i,:);endif fitness>Alpha_score && fitness<Beta_score Beta_score=fitness; % Update betaBeta_pos=Positions(i,:);endif fitness>Alpha_score && fitness>Beta_score && fitness<Delta_score Delta_score=fitness; % Update deltaDelta_pos=Positions(i,:);endenda=2-l*((2)/Max_iter); % a decreases linearly fron 2 to 0% Update the Position of search agents including omegasfor i=1:size(Positions,1)for j=1:size(Positions,2)     r1=rand(); % r1 is a random number in [0,1]r2=rand(); % r2 is a random number in [0,1]A1=2*a*r1-a; % Equation (3.3)C1=2*r2; % Equation (3.4)D_alpha=abs(C1*Alpha_pos(j)-Positions(i,j)); % Equation (3.5)-part 1X1=Alpha_pos(j)-A1*D_alpha; % Equation (3.6)-part 1r1=rand();r2=rand();A2=2*a*r1-a; % Equation (3.3)C2=2*r2; % Equation (3.4)D_beta=abs(C2*Beta_pos(j)-Positions(i,j)); % Equation (3.5)-part 2X2=Beta_pos(j)-A2*D_beta; % Equation (3.6)-part 2       r1=rand();r2=rand(); A3=2*a*r1-a; % Equation (3.3)C3=2*r2; % Equation (3.4)D_delta=abs(C3*Delta_pos(j)-Positions(i,j)); % Equation (3.5)-part 3X3=Delta_pos(j)-A3*D_delta; % Equation (3.5)-part 3             Positions(i,j)=(X1+X2+X3)/3;% Equation (3.7)endendl=l+1;    Convergence_curve(l)=Alpha_score;% 保存每次迭代的最优适应度值Best_scores = Convergence_curve;% 计算平均值、标准差和最差值average_objective = mean(Best_scores);std_deviation = std(Best_scores);worst_score = max(Best_scores);% 打印结果disp(['Best_scores: ', num2str(Best_scores)]);disp(['Average_objective: ', num2str(average_objective)]);disp(['Standard_deviation: ', num2str(std_deviation)]);disp(['Worst_score: ', num2str(worst_score)]);end

代码实现

添加到你想使用的智能优化算法到工程路径,即可运行,这里运行的是灰狼算法(GWO)

main函数如下:

clear all 
clc
tic
global test1 test1Label Vtest1 Vtest1Label Atest1 Atest1Label
Best_scoreM = [];
Best_posM = [];
m_accuracy = [];
m_tIter = 10;%循环次数 
for kk=1:1:m_tIter
%%
%读取数据aaArrayTest = importdata('.\data.txt');aaArrayTest = aaArrayTest(all(~isnan(aaArrayTest),2),:);  
%%
%训练集:验证集:测试集=98:1:1
aaSize = size(aaArrayTest,1);
bbSize = size(aaArrayTest,2);
trainSize = floor(aaSize*98/100);
trainSizeVa = floor(aaSize*99/100);
test11=aaArrayTest(1:trainSize,1:bbSize-1);%training data
test1Label1=aaArrayTest(1:trainSize,bbSize);%training label
Atest11=aaArrayTest(trainSize+1:trainSizeVa,1:bbSize-1);%validated data
Atest1Label1=aaArrayTest(trainSize+1:trainSizeVa,bbSize);%validated data
Vtest11=aaArrayTest(trainSizeVa+1:aaSize,1:bbSize-1);%test data 
Vtest1Label1=aaArrayTest(trainSizeVa+1:aaSize,bbSize);%test label
%norm
[test1,minp,maxp,test1Label,mint,maxt] = premnmx(test11',test1Label1');
Atest1 = tramnmx(Atest11',minp,maxp);
Atest1Label = tramnmx(Atest1Label1',mint,maxt);
Vtest1 = tramnmx(Vtest11',minp,maxp);
Vtest1Label = tramnmx(Vtest1Label1',mint,maxt);
Atest1 = Atest1';
Atest1Label = Atest1Label';
test1 = test1';
test1Label = test1Label';
Vtest1 = Vtest1';
Vtest1Label = Vtest1Label';
%%
%使用元启发算法优化SVR超参数
SearchAgents_no=30;
Function_name='F1';
Max_iteration=1; function
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);
[Best_score,Best_pos,ALO_cg_curve]=GWO(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
%%
%验证集测试误差
Best_posM=[Best_posM;Best_pos];%最优位置或变量
Best_scoreM=[Best_scoreM,Best_score];%最优MSE
%测试集测试,训练集统一不变。
[accuracy,predict] = LinearSVR(Best_pos,2);
m_accuracy = [m_accuracy,accuracy];
end
display(['mean MSE of Validation data is \m ', num2str(mean(Best_scoreM))]);
display(['mean MSE of test data is \m ', num2str(mean(m_accuracy))]);
toc %计时

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

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

相关文章

Google重大更新--解读Android Auto认证4.3

Google在今年五月更新了Android Auto 4.2.2版本&#xff0c;而在2024年7月他们推出了Android Auto 4.3版本&#xff0c;这是自2023年9月以来对Android Auto 4.2版本的一次重大更新。 为了确保合规性和顺利认证&#xff0c;OEM和Tire1必须确保PDK组件版本与正在认证的主机的Rece…

three.js 后期处理,物体高亮

效果图 代码 引入资源文件&#xff0c;在初始化时创建后处理对象 // 用于边缘高亮的插件// 引入后处理扩展库EffectComposer.jsimport { EffectComposer } from "three/addons/postprocessing/EffectComposer.js";// 引入渲染器通道RenderPassimport { RenderPass }…

Kafka-服务端-网络层-源码流程

整体架构如下所示&#xff1a; responseQueue不在RequestChannel中&#xff0c;在Processor中&#xff0c;每个Processor内部有一个responseQueue 客户端发送的请求被Acceptor转发给Processor处理处理器将请求放到RequestChannel的requestQueue中KafkaRequestHandler取出reque…

深度解析Java世界中的对象镜像:浅拷贝与深拷贝的奥秘与应用

在Java编程的浩瀚宇宙中&#xff0c;对象拷贝是一项既基础又至关重要的技术。它直接关系到程序的性能、资源管理及数据安全性。然而&#xff0c;提及对象拷贝&#xff0c;不得不深入探讨其两大核心类型&#xff1a;浅拷贝&#xff08;Shallow Copy&#xff09;与深拷贝&#xf…

防爆智能手机如何解决危险环境下通信难题?

在化工厂、石油行业、矿山等危险环境中&#xff0c;通信安全一直是难题。传统手机因不具备防爆功能&#xff0c;可能引发火花、爆炸等安全风险&#xff0c;让工作人员在关键时刻难以及时沟通。但如今&#xff0c;防爆智能手机的出现彻底改变了这一现状&#xff01; 安全通信&am…

【Python】找Excel重复行

【背景】 找重复行虽然可以通过Excel实现,但是当数据量巨大时光是找结果就很费时间,所以考虑用Python实现。 【代码】 import pandas as pd# 读取Excel文件 file_path = your excel file path df = pd.read_excel(file_path)# 查找重复行 # 这里假设要检查所有列的重复项 …

手机如何充当电脑摄像头,新手使用教程分享(新)

手机如何充当电脑摄像头&#xff1f;随着科技的发展&#xff0c;智能手机已经成为我们日常生活中不可或缺的一部分。手机的摄像头除了拍摄记录美好瞬间之外&#xff0c;其实还有个妙用&#xff0c;那就是充当电脑的摄像头。手机摄像头充当电脑摄像头使用的话&#xff0c;我们就…

一分钟学习数据安全—自主管理身份SSI分布式加密密钥管理

在这篇之前&#xff0c;我们已经对SSI有了一个全局的了解。这个系列的文章可以作为一个学习笔记来参考&#xff0c;真正要实践其中的一些方案、协议&#xff0c;还需要参考专业的书籍和官方文档。作为一个SSI系列学习笔记的最后一篇&#xff0c;我们做一个简单的延伸&#xff0…

【中项第三版】系统集成项目管理工程师 | 第 9 章 项目管理概论① | 9.1 - 9.3

前言 第 9 章对应的内容选择题和案例分析都会进行考查&#xff0c;这一章节理论性较强&#xff0c;学习要以教材为准。本章分值预计在4-5分。 目录 9.1 PMBOK的发展 9.2 项目基本要素 9.2.1 项目基础 9.2.2 项目管理 9.2.3 项目成功的标准 9.2.4 项目、项目集、项目组合…

Lemo 的 AGI 应用实战博文导航

AGI系列&#xff08;1&#xff09;&#xff1a;掌握AI大模型提示词优化术&#xff0c;提问准确率飙升秘籍 AGI系列&#xff08;2&#xff09;&#xff1a;掌握AI大模型提示词优化术&#xff0c;从容应对各种提问场景 AGI系列&#xff08;3&#xff09;&#xff1a;2024年国内最…

多态的优点

多态的优点 1、多态的优点1.1 可替换性&#xff08;Substitutability&#xff09;2、可扩充性&#xff08;Extensibility&#xff09; 2、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、多态的优点 在面向对象编程&#xff08;OOP…

无服务器【Serverless】架构的深度剖析:组件介绍、优缺点与适用场景

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、云计算的发展趋势 2、无服务器计算简介 二、无服务…

项目迭代中新老逻辑切流和对比 - 异步查询新接口

项目迭代中新老逻辑切流-切换入口项目迭代中新老逻辑切流 - 异步查询新接口项目迭代中新老逻辑切流 - 新老数据对比—待更新 前言 前面说到了 项目迭代中新老逻辑切换入口 &#xff0c;有兴趣的可以先看一下&#xff0c;不知道大家有什么疑问吗&#xff1f; 怎么知道自己新接…

红海云签约海新域集团,产业服务运营领军企业加速人力资源数字化转型

北京海新域城市更新集团有限公司&#xff08;以下简称“海新域集团”&#xff09;是北京市海淀国有资产投资集团有限公司一级监管企业&#xff0c;致力于成为国内领先的产业服务运营商。集团积极探索城市和产业升级新模式&#xff0c;通过对老旧、低效等空间载体重新定位规划、…

FPGA基本资源介绍

文章目录 FPGA资源介绍1.可编程输入输出单元(IOB)2.可配置逻辑块(CLB)3.数字时钟管理模块(DCM)4.嵌入式块RAM(BLOCK RAM / BRAM)4.1其他ram 5.丰富的布线资源6.底层内嵌功能单元7.内嵌专用硬核软核、硬核、以及固核的概念 FPGA资源介绍 1.可编程输入输出单元(IOB) 可编程输入…

C++视觉开发 五.答题卡识别

答题卡识别主要步骤 (1)反二值化&#xff0c;选项处理为前景&#xff08;白色&#xff09;&#xff0c;其它处理为背景&#xff08;黑色&#xff09;。 (2)每个选项提取出来&#xff0c;计算各选项白色像素点个数。 (3)筛选出白色像素点最多的选项作为考生答案。 (4)与标准答案…

【机器学习】连续字段的特征变换

介绍 除了离散变量的重编码外&#xff0c;有的时候我们也需要对连续变量进行转化&#xff0c;以提升模型表现或模型训练效率。在之前的内容中我们曾介绍了关于连续变量标准化和归一化的相关内容&#xff0c;对连续变量而言&#xff0c;标准化可以消除量纲影响并且加快梯度下降…

微信扫码进入小程序的webview页面,发现左上角没有home键

问题描述&#xff1a; 微信扫小程序二维码进到web-view内嵌h5页面&#xff0c;左上角没有返回小程序主页的home键&#xff0c;ios正常显示&#xff0c;Android 没有显示 导致的原因&#xff1a; 因为顶部导航栏我是自定义的 【如果是使用小程序原生的顶部导航栏是不会出现这种…

DiffSynth-Studio全面解析与应用示例

DiffSynth-Studio简介 1.1 DiffSynth-Studio的定义与目标用户 DiffSynth-Studio 是一个创新的扩散引擎&#xff0c;专门设计用于实现图片和视频的风格转换。它通过先进的机器学习技术&#xff0c;为用户提供了一种全新的创作方式&#xff0c;使得风格转换变得更加高效和直观。…

latex中引用参考文献的命令

在LaTeX中&#xff0c;常用于引用参考文献的命令有几种&#xff0c;它们的区别主要在于引用的风格和输出的格式。以下是几种常见的引用命令及其区别&#xff1a; 命令输出效果区别与特点\cite{key}[1]基本的引用命令&#xff0c;输出带方括号的引用编号\citet{key}Author (Yea…