多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比

目录

  • 多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比
    • 预测效果
    • 基本介绍
    • 程序设计
    • 学习总结
    • 参考资料

预测效果








基本介绍

多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比。
1.MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比;
2.运行环境为Matlab2018b;
3.输入多个特征,输出单个变量,多变量时间序列预测;
4.data为数据集,所有文件放在一个文件夹;
5.命令窗口输出RMSE、MAE、MAPE多指标评价;

程序设计

  • 完整程序和数据获取方式1:私信博主;
  • 完整程序和数据获取方式2:同等价值程序兑换;
clc;clear;close all;format compact
addpath(genpath('LSSVMlabv1_8'));
unction [bestX,Convergence_curve]=ssa_lssvm(typeID,Kernel_type,inputn_train,label_train,inputn_test,label_test)
%% 麻雀优化
pop=10; % 麻雀数
M=10; % Maximum numbef of iterations
c=1;
d=10000;
dim=2;P_percent = 0.2;    % The population size of producers accounts for "P_percent" percent of the total population size
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
pNum = round( pop *  P_percent );    % The population size of the producers
lb= c.*ones( 1,dim );    % Lower limit/bounds/     a vector
ub= d.*ones( 1,dim );    % Upper limit/bounds/     a vector
%Initialization
for i = 1 : popx( i, : ) = lb + (ub - lb) .* rand( 1, dim );fit( i )=fitness(x(i,:),inputn_train,label_train,inputn_test,label_test,typeID,Kernel_type);
end
pFit = fit;
pX = x;                            % The individual's best position corresponding to the pFit
[ fMin, bestI ] = min( fit );      % fMin denotes the global optimum fitness value
bestX = x( bestI, : );             % bestX denotes the global optimum position corresponding to fMinfor t = 1 : M[ ans, sortIndex ] = sort( pFit );% Sort.[fmax,B]=max( pFit );worse= x(B,:);r2=rand(1);%%%%%%%%%%%%%5%%%%%%这一部位为发现者(探索者)的位置更新%%%%%%%%%%%%%%%%%%%%%%%%%if(r2<0.8)%预警值较小,说明没有捕食者出现for i = 1 : pNum  %r2小于0.8的发现者的改变(1-20)                                                 % Equation (3)r1=rand(1);x( sortIndex( i ), : ) = pX( sortIndex( i ), : )*exp(-(i)/(r1*M));%对自变量做一个随机变换x( sortIndex( i ), : ) = Bounds( x( sortIndex( i ), : ), lb, ub );%对超过边界的变量进行去除fit( sortIndex( i ) )=fitness(x(sortIndex( i ),:),inputn_train,label_train,inputn_test,label_test,typeID,Kernel_type); endelse   %预警值较大,说明有捕食者出现威胁到了种群的安全,需要去其它地方觅食for i = 1 : pNum   %r2大于0.8的发现者的改变x( sortIndex( i ), : ) = pX( sortIndex( i ), : )+randn(1)*ones(1,dim);x( sortIndex( i ), : ) = Bounds( x( sortIndex( i ), : ), lb, ub );fit( sortIndex( i ) )=fitness(x(sortIndex( i ),:),inputn_train,label_train,inputn_test,label_test,typeID,Kernel_type); endend[ fMMin, bestII ] = min( fit );bestXX = x( bestII, : );%%%%%%%%%%%%%5%%%%%%这一部位为加入者(追随者)的位置更新%%%%%%%%%%%%%%%%%%%%%%%%%for i = ( pNum + 1 ) : pop     %剩下20-100的个体的变换                % Equation (4)     A=floor(rand(1,dim)*2)*2-1;if( i>(pop/2))%这个代表这部分麻雀处于十分饥饿的状态(因为它们的能量很低,也是是适应度值很差),需要到其它地方觅食x( sortIndex(i ), : )=randn(1)*exp((worse-pX( sortIndex( i ), : ))/(i)^2);else%这一部分追随者是围绕最好的发现者周围进行觅食,其间也有可能发生食物的争夺,使其自己变成生产者x( sortIndex( i ), : )=bestXX+(abs(( pX( sortIndex( i ), : )-bestXX)))*(A'*(A*A')^(-1))*ones(1,dim);endx( sortIndex( i ), : ) = Bounds( x( sortIndex( i ), : ), lb, ub );%判断边界是否超出fit( sortIndex( i ) )=fitness(x(sortIndex( i ),:),inputn_train,label_train,inputn_test,label_test,typeID,Kernel_type); end%%%%%%%%%%%%%5%%%%%%这一部位为意识到危险(注意这里只是意识到了危险,不代表出现了真正的捕食者)的麻雀的位置更新%%%%%%%%%%%%%%%%%%%%%%%%%c=randperm(numel(sortIndex));%%%%%%%%%这个的作用是在种群中随机产生其位置(也就是这部分的麻雀位置一开始是随机的,意识到危险了要进行位置移动,%处于种群外围的麻雀向安全区域靠拢,处在种群中心的麻雀则随机行走以靠近别的麻雀)b=sortIndex(c(1:10));for j =  1  : length(b)      % Equation (5)if( pFit( sortIndex( b(j) ) )>(fMin) ) %处于种群外围的麻雀的位置改变x( sortIndex( b(j) ), : )=bestX+(randn(1,dim)).*(abs(( pX( sortIndex( b(j) ), : ) -bestX)));else                       %处于种群中心的麻雀的位置改变x( sortIndex( b(j) ), : ) =pX( sortIndex( b(j) ), : )+(2*rand(1)-1)*(abs(pX( sortIndex( b(j) ), : )-worse))/ ( pFit( sortIndex( b(j) ) )-fmax+1e-50);endx( sortIndex(b(j) ), : ) = Bounds( x( sortIndex(b(j) ), : ), lb, ub );fit( sortIndex( b(j) ) )=fitness(x(sortIndex(b(j) ),:),inputn_train,label_train,inputn_test,label_test,typeID,Kernel_type); endfor i = 1 : popif ( fit( i ) < pFit( i ) )pFit( i ) = fit( i );pX( i, : ) = x( i, : );endif( pFit( i ) < fMin )fMin= pFit( i );bestX = pX( i, : );endendConvergence_curve(t,:)=[fMin mean(pFit)];
end

学习总结

  • 一些基本的思路和步骤来实现多变量时间序列预测。

VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM是一些用于多变量时间序列预测的方法,它们都涉及到信号分解和机器学习技术。下面是对这些方法的简要介绍:
VMD-SSA-LSSVM:这是一种基于变分模态分解(VMD)和麻雀算法优化(SSA)的支持向量机(SVM)模型。VMD是一种信号分解方法,可以将信号分解成多个振荡模态,并且每个模态具有不同的频率和振幅。SSA是一种智能优化算法的方法,可以将信号分解成多个本征模态。VMD-SSA-LSSVM将VMD和SSA结合起来,用于多变量时间序列的降维和智能优化,并且利用LSSVM进行预测。

SSA-LSSVM:这是一种基于麻雀算法和支持向量机的模型。它使用SSA智能寻参,然后使用LSSVM进行预测。相比于传统的LSSVM模型,SSA-LSSVM可以提高预测的准确性和稳定性。

VMD-LSSVM:这是一种基于变分模态分解和支持向量机的模型。它使用VMD将多变量时间序列分解成多个振荡模态,并且将每个模态作为输入特征向量,然后使用LSSVM进行预测。VMD-LSSVM可以提高预测的准确性和鲁棒性,特别是对于非平稳和非线性的多变量时间序列。

  • 以上是一个基本的多变量时间序列预测的实现步骤和思路,具体的实现细节需要根据数据和模型的具体情况进行调整。

参考资料

[1] https://blog.csdn.net/kjm13182345320/category_11799242.html?spm=1001.2014.3001.5482
[2] https://blog.csdn.net/kjm13182345320/article/details/124571691

多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比相关推荐

  1. 组合预测 | MATLAB实现EMD-KPCA-LSTM、EMD-LSTM、LSTM多变量时间序列预测对比

    组合预测 | MATLAB实现EMD-KPCA-LSTM.EMD-LSTM.LSTM多变量时间序列预测对比 目录 组合预测 | MATLAB实现EMD-KPCA-LSTM.EMD-LSTM.LSTM多 ...

  2. 多维时序 | MATLAB实现TPA-LSTM(时间注意力注意力机制长短期记忆神经网络)多输入单输出

    多维时序 | MATLAB实现TPA-LSTM(时间注意力注意力机制长短期记忆神经网络)多输入单输出 目录 多维时序 | MATLAB实现TPA-LSTM(时间注意力注意力机制长短期记忆神经网络)多输 ...

  3. 多维时序 | MATLAB实现Attention-GRU多变量时间序列预测(注意力机制融合门控循环单元,TPA-GRU)

    多维时序 | MATLAB实现Attention-GRU多变量时间序列预测----注意力机制融合门控循环单元,即TPA-GRU,时间注意力机制结合门控循环单元 目录 多维时序 | MATLAB实现At ...

  4. 基于Keras的LSTM多变量时间序列预测(北京PM2.5数据集pollution.csv)

                                 基于Keras的LSTM多变量时间序列预测 传统的线性模型难以解决多变量或多输入问题,而神经网络如LSTM则擅长于处理多个变量的问题,该特性使 ...

  5. 基于Keras的LSTM多变量时间序列预测

    LSTM是一种时间递归神经网络,它出现的原因是为了解决RNN的一个致命的缺陷.原生的RNN会遇到一个很大的问题,叫做The vanishing gradient problem for RNNs,也就 ...

  6. 基于人工大猩猩部队优化CNN-LSTM(GTO-CNN-LSTM)多变量时间序列预测(Matlab代码实现)

  7. 基于SARIMA、XGBoost和CNN-LSTM的时间序列预测对比

    来源:DeepHub IMBA 本文约6800字,建议阅读10+分钟 本文将讨论通过使用假设测试.特征工程.时间序列建模方法等从数据集中获得有形价值的技术. 利用统计测试和机器学习分析和预测太阳能发电 ...

  8. 基于Keras的LSTM多变量时间序列预测,包括单步和多步(北京PM2.5数据集pollution.csv)

    直接简单点转自其他博客 大神 Jason Brownlee的杰作:https://machinelearningmastery.com/multivariate-time-series-forecas ...

  9. 【时序】TCCT:用于时间序列预测的紧耦合卷积 Transformer

    论文名称:TCCT: Tightly-coupled convolutional transformer on time series forecasting 论文下载:https://doi.org ...

最新文章

  1. ArcEngine中IFeatureClass.Search(filter, Recycling)方法中Recycling参数的理解
  2. DFT实训教程笔记2(bibili版本)- Scan synthesis practice
  3. HDU - 1728 逃离迷宫(bfs)
  4. Word2019上面的MathType7.4插件忽然消失了【终极解决办法记录】
  5. jparepository查询所有_JPA – JpaRepository 中使用的查询方法
  6. java servlet 执行 多次_servlet 验证生命周期过程调用方法的次数
  7. 第3/24周 区_SQL Server中管理空间的基本单位
  8. python 随机种子 时间_python课堂整理24----时间和随机数模块
  9. 微信小程序注册审核流程
  10. js让html转excel时间格式,js读取excel中日期格式转换问题
  11. 《大化传输网》学习笔记(三)————OTN系统的保护
  12. 千千静听V5.6 Beta3 美化增强版
  13. mysql删除一行_MySql删除表中一行的实操方法
  14. 400错误,The server cannot or will not process the request due to something that is perceived to be a c
  15. java中打印大小写字母
  16. 【实例】VBA excel 隔行插入行与列
  17. 【视频学习笔记】计算机视觉与深度学习_北京邮电大学_鲁鹏(⭐⭐⭐⭐⭐)
  18. 开发高并发系统的三把利器
  19. <OS Concepts> 1- Intro
  20. 云服务器搭建开发环境

热门文章

  1. 【老王的脑科学谬论】从“遗忘”这件事聊一聊大分子编码说和老王谬论
  2. python绘制饼状图图例_python matplotlib饼状图参数及用法解析
  3. android实现gif背景透明,透明GIF在Android ImageView
  4. 数控机床加工时,刀具径向跳动,应该调哪里解决问题?
  5. CSS @page 规则 设置打印页面框的尺寸,方向和页边距,用于打印预览和从浏览器打印Web文档
  6. 辞职的时间原则:宜早不宜晚
  7. redis-安全管理
  8. perc s100 linux,DELL服务器集成raid卡PERC S100_S300详细配置手册
  9. 蓝桥杯 Python 杨辉三角形
  10. iOS下更改系统音量