【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 problems

Beta_pos=zeros(1,dim);
Beta_score=inf; %change this to -inf for maximization problems

Delta_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_iter
    for i=1:size(Positions,1)  
        
       % Return back the search agents that go beyond the boundaries of the search space
        Flag4ub=Positions(i,:)>ub;
        Flag4lb=Positions(i,:)<lb;
        Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;               
        
        % Calculate objective function for each search agent
        fitness=fobj(Positions(i,:));
        
        % Update Alpha, Beta, and Delta
        if fitness<Alpha_score 
            Alpha_score=fitness; % Update alpha
            Alpha_pos=Positions(i,:);
        end
        
        if fitness>Alpha_score && fitness<Beta_score 
            Beta_score=fitness; % Update beta
            Beta_pos=Positions(i,:);
        end
        
        if fitness>Alpha_score && fitness>Beta_score && fitness<Delta_score 
            Delta_score=fitness; % Update delta
            Delta_pos=Positions(i,:);
        end
    end
    
    
    a=2-l*((2)/Max_iter); % a decreases linearly fron 2 to 0
    
    % Update the Position of search agents including omegas
    for 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 1
            X1=Alpha_pos(j)-A1*D_alpha; % Equation (3.6)-part 1
                       
            r1=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 2
            X2=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 3
            X3=Delta_pos(j)-A3*D_delta; % Equation (3.5)-part 3             
            
            Positions(i,j)=(X1+X2+X3)/3;% Equation (3.7)
            
        end
    end
    l=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.mfbz.cn/a/773806.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开发在线教育项目-在线课程视频网站开发

用了哪些技术 后端技术 springboot3 security权限框架&#xff08;后台&#xff09;mybatisPlus框架jwt生成tokeneasyexcel导入导出递归查询拦截器校验tokenredis的zset做排行榜功能redis的list做最新课程的功能redis做为缓存技术redis作为计数器&#xff0c;实时记录浏览量&…

极狐GitLab 将亮相2024空天信息大会暨数字地球生态峰会,携手中科星图赋能空天行业开发者

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab &#xff1a;https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署…

【Proteus】按键的实现『⒉种』

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

微信小程序毕业设计-走失人员的报备平台系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

【Python学习】流程控制、函数与类详解

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言 Python作为一门强大而又简洁的编程语言&#xff0c;提供了丰富的工具和结构来帮助开发者编写清晰、高效的代码。在本文中…

企业搭建知识库:解锁无限潜力的钥匙

在当今这个信息爆炸的时代&#xff0c;企业如何高效地管理、传播与利用知识&#xff0c;已成为衡量其竞争力的重要标尺。知识库&#xff0c;作为这一背景下的产物&#xff0c;正逐步成为企业不可或缺的数字资产。它不仅是一个自助式的数字门户&#xff0c;更是连接员工、客户与…

加入AIGC的小艺还有这些大用处 快来看

说到毕业&#xff0c;有不舍、有迷茫也有期待&#xff0c;在这种复杂的情绪里&#xff0c;手机里的小艺&#xff0c;简直是贴心小棉袄&#xff0c;给了我很多依靠&#xff0c;让我能勇敢的往前走。 在离别时候有太多的不舍&#xff0c;想要写段寄语记录下来&#xff0c;这时候小…

记录AllWinner H700芯片 LCD屏幕显示不正常,有色块问题

现象&#xff1a; 修改后&#xff1a; 文档&#xff1a; 测试命令&#xff08;需要kernel打开 CONFIG_DEVMEMy&#xff09;&#xff1a; 读取&#xff1a; devmem2 $((0x6511000 0x0088)) w 写入&#xff1a; devmem2 $((0x6511000 0x0088)) w 0x7000000 代码&#xff1…

程序员自由创业周记#37:程序员创业的几个方向

程序员自由创业周记#37&#xff1a;程序员创业的几个方向 报志愿 这几天亲戚一外甥报志愿&#xff0c;让我推荐&#xff0c;我基于自己的认知觉得还是计算机相关是第一优选&#xff0c;即便现在各大互联网公司都过得不怎么好&#xff0c;裁员的消息此起彼伏&#xff0c;很多计…

从零到一:eBay自养号测评全流程解析与实操建议

eBay自养号测评是一种通过模拟真实买家行为&#xff0c;为卖家提供市场反馈并提升店铺权重和排名的技术手段。以下是进行eBay自养号测评的具体步骤和注意事项&#xff1a; 一、准备阶段 1. 技术配置&#xff1a;搭建境外服务器&#xff1a;选择稳定的境外服务器&#xff0c;模…

内网学习第6天 liunx定时任务 环境变量和权限配置,以及数据库提权

内网学习的第5天呢&#xff1f;&#xff1f;我就没有写&#xff0c;那个主要就是利用内核漏洞以及suid&#xff0c;来进行提权的。 我在虚拟机上面进行提权&#xff0c;我没有成功&#xff0c;我本地的虚拟机呢&#xff0c;扫出来的漏洞poc也没有让我提权成功。所以我就没有写…

知识图谱构建助手安装配置使用!Sapphire Ventures最全Sales AI图谱:AI如何重塑销售行业?

知识图谱构建助手安装配置使用!Sapphire Ventures最全Sales AI图谱:AI如何重塑销售行业? 项目简介 llmgraph 使您能够从给定的源实体维基百科页面创建 GraphML、GEXF 和 HTML 格式(通过 pyvis 生成)的知识图。知识图谱是通过从 ChatGPT 或 LiteLLM 支持的其他大型语言模型…

从零开始开发跑腿配送系统:技术选型与架构设计

开发一个跑腿配送系统涉及多个技术栈和模块&#xff0c;从前端到后端&#xff0c;再到数据库和实时通信&#xff0c;每一个环节都至关重要。本文将详细介绍从零开始开发跑腿配送系统的技术选型与架构设计&#xff0c;并提供部分代码示例以帮助理解。 一、技术选型 前端技术&am…

视频号矩阵源码:构建短视频生态的基石

在数字化时代&#xff0c;视频内容已成为连接品牌与消费者的重要桥梁。视频号矩阵源码&#xff0c;作为短视频营销自动化的创新引擎&#xff0c;正在帮助内容创作者和营销团队以前所未有的效率和智能&#xff0c;管理和扩展他们的视频内容。本文将深入探讨视频号矩阵源码的核心…

13-错误-ERROR: duplicate key value violates unique constraint “ux_xxx“

13-错误-ERROR: duplicate key value violates unique constraint “ux_xxx” 更多内容欢迎关注我&#xff08;持续更新中&#xff0c;欢迎Star✨&#xff09; Github&#xff1a;CodeZeng1998/Java-Developer-Work-Note 技术公众号&#xff1a;CodeZeng1998&#xff08;纯纯…

代谢组数据分析(十二):岭回归、Lasso回归、弹性网络回归构建预测模型

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2介绍 在代谢物预测模型的构建中,我们采用了三种主流的回归分析方法:岭回归、Lasso回归以及弹性网络回归。这三种方法各有其独特的原理和适用场景,因此在…

从0构建一款appium-inspector工具

上一篇博客从源码层面解释了appium-inspector工具实现原理&#xff0c;这篇博客将介绍如何从0构建一款简单的类似appium-inspector的工具。如果要实现一款类似appium-inspector的demo工具&#xff0c;大致需要完成如下六个模块内容 启动 Appium 服务器连接到移动设备或模拟器启…

HTML+CSS笔记

标签 HTML标签 网页的大包围 整体网页内容的外衣 所有的网页文档内容都要写在 html标签内 lang属性&#xff0c;是指内容语言的&#xff0c;目的是让浏览器知晓这个页面的主要展示语言 是什么 只跟浏览器的翻译有关 主要展示的语言如果是英语 en&#xff0c;主要展示的语言如果…

移动硬盘传输中断后无法识别:深度解析与数据救援指南

在日常的数据存储与传输过程中&#xff0c;移动硬盘凭借其大容量、便携性成为众多用户的首选。然而&#xff0c;当我们在复制或移动大量数据时遭遇传输中断&#xff0c;随后发现移动硬盘无法被电脑识别&#xff0c;这无疑是一场数据安全的紧急警报。此情此景&#xff0c;不仅影…

Docker学习笔记(三)Dockerfile

一、什么是Dockerfile Dockerfile 是一个用于自动化构建 Docker 镜像的文本文件&#xff0c;其中包含了从一个基础镜像开始&#xff0c;到最终形成所需定制镜像的所有指令集。这个文件中的每一条指令都对应着构建镜像过程中的一个步骤或一层&#xff0c;指导 Docker 如何安装软…
最新文章