【SVM时序预测】基于粒子群算法优化支持向量机PSO-SVM实现期贷时序数据预测附matlab代码

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 【SVM时序预测】基于粒子群算法优化支持向量机PSO-SVM实现期贷时序数据预测附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机 电力系统

⛄ 内容介绍

为提高基于支持向量机(SVM)的时间序列预测方法的泛化能力与预测精度,研究了一种基于粒子群优化(PSO)的LSSVM.该方法以交叉验证误差为评价准则,利用PSO对多个具有不同超参数的SVM进行基于迭代进化的优化选择,并以交叉验证误差最小的SVM作为最终优化后的SVM.时间序列预测实例表明,经PSO优化后的SVM的预测精度高于未经优化的LSSVM与传统时间序列预测方法的预测精度.

⛄ 部分代码

% 支持向量机用于收盘价预测,首先是未优化的,其次是优化后的

%% 清空环境

tic;clc;clear;close all;format compact

%% 加载数据

data=xlsread('EUA五分钟.xlsx','G2:G30763'); save data data

load data

% 归一化

[a,inputns]=mapminmax(data',0,1);%归一化函数要求输入为行向量

data_trans=data_process(5,a);%% 对时间序列预测建立滚动序列,即用1到m个数据预测第m+1个数据,然后用2到m+1个数据预测第m+2个数据

input=data_trans(:,1:end-1);

output=data_trans(:,end);

%% 数据集 前75%训练 后25%预测

m=round(size(data_trans,1)*0.75);

Pn_train=input(1:m,:);

Tn_train=output(1:m,:);

Pn_test=input(m+1:end,:);

Tn_test=output(m+1:end,:);


%% 1.没有优化的SVM

bestc=0.001;bestg=10;%c和g随机赋值 表示没有优化的SVM

t=0;%t=0为线性核函数,1-多项式。2rbf核函数

cmd = ['-s 3 -t ',num2str(t),' -c ', num2str(bestc),' -g ',num2str(bestg),' -p 0.01 -d 1'];  

   

model = svmtrain(Tn_train,Pn_train,cmd);%训练

[predict,~]= svmpredict(Tn_test,Pn_test,model);%测试

% 反归一化,为后面的结果计算做准备

predict0=mapminmax('reverse',predict',inputns);%测试实际输出反归一化

T_test=mapminmax('reverse',Tn_test',inputns);%测试集期望输出反归一化

T_train=mapminmax('reverse',Tn_train',inputns);%训练集期望输出反归一化


figure

plot(predict0,'r-')

hold on;grid on

plot(T_test,'b-')

xlabel('样本编号')

ylabel('收盘价/元')

if t==0

   title('线性核SVM预测')

elseif t==1

   title('多项式核SVM预测')

else

   title('RBF核SVM预测')

end

legend('实际输出','期望输出')

figure

error_svm=abs(predict0-T_test)./T_test*100;%测试集每个样本的相对误差

plot(error_svm,'r-*')

xlabel('样本编号')

ylabel('收盘价相对误差/%')

if t==0

   title('线性核SVM预测的误差')

elseif t==1

   title('多项式核SVM预测的误差')

else

   title('RBF核SVM预测的误差')

end

grid on

img =gcf;  %获取当前画图的句柄

print(img, '-dpng', '-r600', './img6.png')

figure

error_svm=abs(predict0-T_test)./T_test*100;%测试集每个样本的相对误差

plot(error_svm,'r-*')

xlabel('样本编号')

ylabel('收盘价相对误差/%')

if t==0

   title('线性核SVM预测的误差')

elseif t==1

   title('多项式核SVM预测的误差')

else

   title('RBF核SVM预测的误差')

end

grid on

img =gcf;  %获取当前画图的句柄

print(img, '-dpng', '-r600', './img5.png')  

figure

error_svm=abs(predict0-T_test)./T_test*100;%测试集每个样本的相对误差

plot(error_svm,'r-*')

xlabel('样本编号')

ylabel('收盘价相对误差/%')

if t==0

   title('线性核SVM预测的误差')

elseif t==1

   title('多项式核SVM预测的误差')

else

   title('RBF核SVM预测的误差')

end

grid on

img =gcf;  %获取当前画图的句柄

print(img, '-dpng', '-r600', './img4.png')           %即可得到对应格式和期望dpi的图像

figure')

% ylabel('适应度值/log10(函数值)')

% img =gcf;  %获取当前画图的句柄

% print(img, '-dpng', '-r600', './img4.png')         %即可得到对应格式和期望dpi的图像

% %% 结果分析


disp('最优惩罚参数与核参数为:')

bestc

bestg


disp('优化前的均方误差')

mse_svm=mse(predict0-T_test)

disp('优化前的平均相对误差')

mre_svm=sum(abs(predict0-T_test)./T_test)/length(T_test)

disp('优化前的平均绝对误差')

abs_svm=mean(abs(predict0-T_test))

disp('优化前的归一化均方误差')

a=sum((predict0-T_test).^2)/length(T_test);

b=sum((predict0-mean(predict0)).^2)/(length(T_test)-1);

one_svm=a/b


disp('优化后的训练集均方根误差')

rmse_svm0=sqrt(mse(predict_tr-T_train))

disp('优化后的测试集均方根误差')

rmse_svm=sqrt(mse(predict1-T_test))

disp('优化后的均方误差')

mse_pso_svm=mse(predict1-T_test)

disp('优化后的平均相对误差')

mre_pso_svm=sum(abs(predict1-T_test)./T_test)/length(T_test)

disp('优化后的平均绝对误差')

abs_pso_svm=mean(abs(predict1-T_test))

disp('优化后的归一化均方误差')

a1=sum((predict1-T_test).^2)/length(T_test);

b1=sum((predict1-mean(predict1)).^2)/(length(T_test)-1);

one_pso_svm=a1/b

toc %结束计时

⛄ 运行结果

⛄ 参考文献

[1]朱伟李楠石超峰. 基于粒子群算法优化支持向量机的铁路客运量预测模型[J]. 商丘师范学院学报, 2013, 000(012):33-35.

[2]张弦, 王宏力. 基于粒子群优化的最小二乘支持向量机在时间序列预测中的应用[J]. 中国机械工程, 2011, 22(21):5.

⛄ Matlab代码关注

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
4天前
|
算法 BI Serverless
基于鱼群算法的散热片形状优化matlab仿真
本研究利用浴盆曲线模拟空隙外形,并通过鱼群算法(FSA)优化浴盆曲线参数,以获得最佳孔隙度值及对应的R值。FSA通过模拟鱼群的聚群、避障和觅食行为,实现高效全局搜索。具体步骤包括初始化鱼群、计算适应度值、更新位置及判断终止条件。最终确定散热片的最佳形状参数。仿真结果显示该方法能显著提高优化效率。相关代码使用MATLAB 2022a实现。
|
4天前
|
算法 数据可视化
基于SSA奇异谱分析算法的时间序列趋势线提取matlab仿真
奇异谱分析(SSA)是一种基于奇异值分解(SVD)和轨迹矩阵的非线性、非参数时间序列分析方法,适用于提取趋势、周期性和噪声成分。本项目使用MATLAB 2022a版本实现从强干扰序列中提取趋势线,并通过可视化展示了原时间序列与提取的趋势分量。代码实现了滑动窗口下的奇异值分解和分组重构,适用于非线性和非平稳时间序列分析。此方法在气候变化、金融市场和生物医学信号处理等领域有广泛应用。
|
1天前
|
机器学习/深度学习 存储 算法
经典算法代码
这段代码展示了多个经典算法,包括:穷举法解决“百钱买百鸡”问题;递推法计算“猴子吃桃”问题;迭代法求解斐波那契数列及折纸高度超越珠峰的问题。同时,还提供了希尔排序算法实现及披萨票务订购系统和汉诺塔问题的链表存储解决方案。每部分通过具体案例解释了算法的应用场景与实现方法。
14 3
|
5天前
|
资源调度 算法
基于迭代扩展卡尔曼滤波算法的倒立摆控制系统matlab仿真
本课题研究基于迭代扩展卡尔曼滤波算法的倒立摆控制系统,并对比UKF、EKF、迭代UKF和迭代EKF的控制效果。倒立摆作为典型的非线性系统,适用于评估不同滤波方法的性能。UKF采用无迹变换逼近非线性函数,避免了EKF中的截断误差;EKF则通过泰勒级数展开近似非线性函数;迭代EKF和迭代UKF通过多次迭代提高状态估计精度。系统使用MATLAB 2022a进行仿真和分析,结果显示UKF和迭代UKF在非线性强的系统中表现更佳,但计算复杂度较高;EKF和迭代EKF则更适合维数较高或计算受限的场景。
|
6天前
|
算法
基于SIR模型的疫情发展趋势预测算法matlab仿真
该程序基于SIR模型预测疫情发展趋势,通过MATLAB 2022a版实现病例增长拟合分析,比较疫情防控力度。使用SIR微分方程模型拟合疫情发展过程,优化参数并求解微分方程组以预测易感者(S)、感染者(I)和移除者(R)的数量变化。![]该模型将总人群分为S、I、R三部分,通过解析或数值求解微分方程组预测疫情趋势。
|
6天前
|
算法 数据可视化 数据安全/隐私保护
基于LK光流提取算法的图像序列晃动程度计算matlab仿真
该算法基于Lucas-Kanade光流方法,用于计算图像序列的晃动程度。通过计算相邻帧间的光流场并定义晃动程度指标(如RMS),可量化图像晃动。此版本适用于Matlab 2022a,提供详细中文注释与操作视频。完整代码无水印。
WK
|
4天前
|
算法 决策智能
粒子群算法的缺点是什么
粒子群算法(PSO)虽具优点,但存在明显缺点:易陷局部最优、收敛精度低、难解离散及组合优化问题、缺乏精密搜索方法、理论基础薄弱、参数选择困难、收敛速度受问题复杂度影响。为克服这些问题,研究者提出引入动态惯性权重、调整学习因子、混合算法等改进策略,提高算法性能与适用范围,但仍需进一步研究以应对更复杂多样的问题。
WK
12 0
WK
|
4天前
|
机器学习/深度学习 算法 决策智能
什么是粒子群算法
粒子群算法(PSO)是一种元启发式优化算法,通过模拟鸟群或鱼群行为进行优化搜索。1995年由Kennedy和Eberhart提出,基于鸟类群体行为建模。算法通过粒子在搜索空间中移动,不断更新位置和速度,逐步逼近最优解。其流程包括初始化、评估、更新最佳位置及速度,直至满足终止条件。该算法具有简单性、全局搜索能力和良好收敛性,并广泛应用于函数优化、神经网络训练等多个领域。为克服局部最优和收敛速度慢的问题,已有多种改进策略。
WK
6 0
|
12天前
|
数据采集 算法
基于PSO粒子群算法的三角形采集堆轨道优化matlab仿真
该程序利用PSO算法优化5个4*20矩阵中的模块采集轨迹,确保采集的物品数量及元素含量符合要求。在MATLAB2022a上运行,通过迭代寻优,选择最佳模块组合并优化轨道,使采集效率、路径长度及时间等综合指标最优。具体算法实现了粒子状态更新、需求量差值评估及轨迹优化等功能,最终输出最优轨迹及其相关性能指标。
|
12天前
|
人工智能 算法 数据可视化
DBSCAN密度聚类算法(理论+图解+python代码)
DBSCAN密度聚类算法(理论+图解+python代码)

热门文章

最新文章

下一篇
DDNS