ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【预测模型】基于遗传算法优化最小二乘支持向量机lssvm实现数据预测matlab代码

【预测模型】基于遗传算法优化最小二乘支持向量机lssvm实现数据预测matlab代码 1 简介本文提出一种基于最小二乘支持向量机的数据预测方法。​LSSVM 是一种新型机器学习算法其在传统支持向量机 SVM 基础上将二次规划问题中的不等式约束改为等式约束极大地方便了求解过程克服了数据集粗糙、数据集波动性大等问题造成的异常回归能有效避免 BP 神经网络等方法中出现的局部最优等问题。GA 算法是由美国密歇根大学的 Holland 于 1975 年提出的一种模拟生物进化论的自然选择和生物遗传的优化技术是一种高度并行、自适应和全局性的概率搜索算法。GA 求解问题的核心过程包括: 编码( 二进制) 、遗传操作( 选择、交叉、变异) 、适应度函数。首先对优化参数进行二进制编码将解空间转换成染色体空间; 设定进化代数、个体长度、种群大小等初始群体参数; 确定合适的适应度函数计算群体中个体的适应度; 然后对种群进行遗传算子操作如选择、交叉和变异经过迭代计算使种群不断向最优方向进化从 而 得 到 最 优解。由于 LSSVM 模型需要优化的参数有两个( 惩罚因子 γ核参数 σ2) 所以种群维数为 2。算法流程如下步骤1,采集时间序列的样本数据;步骤2,建立基于遗传算法优化参数的LSSVM数据预测模型;步骤3,应用预测模型对训练样本进行预测,得到训练样本的相对误差和预测值;步骤4,预测模型对训练样本的相对误差进行预测,从而得到相对误差的预测值;步骤5,对相对误差的预测值进行校正,从而得到预测速率;解决了由于最小二乘支持向量机核函数参数和惩罚参数的经验性赋值而导致的预测精度不足的问题.2 部分代码% %初始化 clc close all clear format long tic % %%导入数据 dataxlsread(1.xlsx); [row,col]size(data); xdata(:,1:col-1); ydata(:,col); set1; %设置测量样本数 row1row-set;% train_xx(1:row1,:); train_yy(1:row1,:); test_xx(row11:row,:);%预测输入 test_yy(row11:row,:);%预测输出 train_xtrain_x; train_ytrain_y; test_xtest_x; test_ytest_y; %%数据归一化 [train_x,minx,maxx, train_yy,miny,maxy] premnmx(train_x,train_y); test_xtramnmx(test_x,minx,maxx); train_xtrain_x; train_yytrain_yy; train_ytrain_y; test_xtest_x; test_ytest_y; %% 参数初始化 %粒子群算法中的两个参数 c1 1.5;%; % c1 belongs to [0,2] c1:初始为1.5,pso参数局部搜索能力表征个体极值对当前解得影响 c2 1.7;%; % c2 belongs to [0,2] c2:初始为1.7,pso参数全局搜索能力表征全局极值对当前解得影响 maxgen100; % 进化次数 300 sizepop30; % 种群规模30 popcmax10^(3);% popcmax:初始为1000,SVM 参数c的变化的最大值. popcmin10^(-1);% popcmin:初始为0.1,SVM 参数c的变化的最小值. popgmax10^(2);% popgmax:初始为100,SVM 参数g的变化的最大值 popgmin10^(-2);% popgmin:初始为0.01,SVM 参数g的变化的最小值. k 0.5; % k belongs to [0.1,1.0]; itness(j) fitness(j); end %群体最优更新 if fitness(j) global_fitness global_x pop(j,:); global_fitness fitness(j); end if abs( fitness(j)-global_fitness )eps pop(j,1) global_x(1) global_x pop(j,:); global_fitness fitness(j); end end fit_gen(i)global_fitness; avgfitness_gen(i) sum(fitness)/sizepop; %if global_fitness0.00005%设定终止条件避免网络过度训练影响推广能力。 %break; %end end %% 结果分析 plot(fit_gen,LineWidth,2); title([遗传优化svm适应度曲线,(参数c1,num2str(c1),,c2,num2str(c2),,终止代数,num2str(maxgen),)],FontSize,13); xlabel(进化代数);ylabel(误差适应度); bestc global_x(1); bestg global_x(2); gambestc sig2bestg modelinitlssvm(train_x,train_yy,type,gam,sig2,kernel,proprecess);%原来是显示 modeltrainlssvm(model);%原来是显示 %求出训练集和测试集的预测值 [train_predict_y,zt,model]simlssvm(model,train_x); [test_predict_y,zt,model]simlssvm(model,test_x); %预测数据反归一化 train_predictpostmnmx(train_predict_y,miny,maxy);%预测输出 test_predictpostmnmx(test_predict_y,miny,maxy); %计算均方差 trainmsesum((train_predict-train_y).^2)/length(train_y) %testmsesum((test_predict-test_y).^2)/length(test_y) for i1:set RD(i)(test_predict(i)-test_y(i))/test_y(i)*100; end for i1:set D(i)test_predict(i)-test_y(i); end RDRD DD figure plot(test_predict,:og) hold on plot(test_y,- *) legend(预测输出,期望输出) title(网络预测输出,fontsize,12) ylabel(函数输出,fontsize,12) xlabel(样本,fontsize,12) figure plot(train_predict,:og) hold on plot(train_y,- *) legend(预测输出,期望输出) title(遗传网络预测输出,fontsize,12) ylabel(函数输出,fontsize,12) xlabel(样本,fontsize,12) toc %计算时间3 仿真结果4 参考文献[1]聂敬云, 李春青, 李威威, 王韬. (2015). 关于遗传算法优化的最小二乘支持向量机在mbr仿真预测中的研究. 软件(5), 6.
返回列表