【预测模型】基于遗传算法优化最⼩⼆乘⽀持向量机lssvm实
现数据预测matlab代码
1 简介
本⽂提出⼀种基于最⼩⼆乘⽀持向量机的数据预测⽅法。L SSVM 是⼀种新型机器学习算法,其在传统⽀持向量机 SVM 基础上,将⼆次规划问题中的不等式约束改为等式约束,极⼤地⽅便了求解过程,克服了数据集粗糙、数据集波动性⼤等问题造成的异常回归,能有效避
免 BP 神经⽹络等⽅法中出现的局部最优等问题。GA 算法是由美国密歇根⼤学的 Holland 于 1975 年提出的⼀种模拟⽣物进化论的⾃然选择和⽣物遗传的优化技术,是⼀种⾼度并⾏、⾃适应和全局性的概率搜索算法。GA 求解问题的核⼼过程包括: 编码( ⼆进制) 、遗传操作(选择、交叉、变异) 、适应度函数。⾸先对优化参数进⾏⼆进制编码,将解空间转换成染⾊体空间; 设定进化代数、个体长度、种群⼤⼩等初始群体参数; 确定合适的适应度函数,计算群体中个体的适应度; 然后对种群进⾏遗传算⼦操作,如选择、交叉和变异,经过迭代计算,使种群不断向最优⽅向进化,从 ⽽ 得 到 最 优解。由于 LSSVM 模型需要优化的参数有两个( 惩罚因⼦ γ,核参数 σ2) ,所以种群维数
为 2。
算法流程如下:
步骤1,采集时间序列的样本数据;
cry步骤2,建⽴基于遗传算法优化参数的LSSVM数据预测模型;
system步骤3,应⽤预测模型对训练样本进⾏预测,得到训练样本的相对误差和预测值;步骤4,预测模型对训练样本的相对误差进⾏预测,从⽽得到相对误差的预测值;步骤5,对相对误差的预测值进⾏校正,从⽽得到预测速率;解决了由于最⼩⼆乘⽀持向量机核函数参数和惩罚参数的经验性赋值⽽导致的预测精度不⾜的问题.
2 部分代码
%=====================================================================
%初始化
clc
clo all
clear
format long
tic
%==============================================================
%%导⼊数据
示寂data=xlsread('1.xlsx');
[row,col]=size(data);
x=data(:,1:col-1);
y=data(:,col);
t=1; %设置测量样本数
row1=row-t;%
train_x=x(1:row1,:);
train_y=y(1:row1,:);
test_x=x(row1+1:row,:);%预测输⼊
test_y=y(row1+1:row,:);%预测输出
train_x=train_x';
train_y=train_y';
test_x=test_x';
test_y=test_y';
%%数据归⼀化
[train_x,minx,maxx, train_yy,miny,maxy] =premnmx(train_x,train_y);
test_x=tramnmx(test_x,minx,maxx);
train_x=train_x';
train_yy=train_yy';
train_y=train_y';
test_x=test_x';
test_y=test_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参数全局搜索能⼒,表征全局极值对当前解得影响
maxgen=100; % 进化次数 300
sizepop=30; % 种群规模30
popcmax=10^(3);% popcmax:初始为1000,SVM 参数c的变化的最⼤值.
popcmin=10^(-1);% popcmin:初始为0.1,SVM 参数c的变化的最⼩值.
popgmax=10^(2);% popgmax:初始为100,SVM 参数g的变化的最⼤值
popgmin=10^(-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_fitness<0.00005%设定终⽌条件,避免⽹络过度训练,影响推⼴能⼒。
%break;
%end
end
%% 结果分析
plot(fit_gen,'LineWidth',2);
夏洛克第四季title(['遗传优化svm适应度曲线','(参数c1=',num2str(c1),',c2=',num2str(c2),',终⽌代数=',num2str(maxgen),')'],'FontSize',13);
title(['遗传优化svm适应度曲线','(参数c1=',num2str(c1),',c2=',num2str(c2),',终⽌代数=',num2str(maxgen),')'],'FontSize',13); xlabel('进化代数');ylabel('误差适应度');
bestc = global_x(1);
bestg = global_x(2);
gam=bestc
sig2=bestg
model=initlssvm(train_x,train_yy,type,gam,sig2,kernel,proprecess);%原来是显⽰
model=trainlssvm(model);%原来是显⽰
%求出训练集和测试集的预测值
[train_predict_y,zt,model]=simlssvm(model,train_x);
[test_predict_y,zt,model]=simlssvm(model,test_x);
%预测数据反归⼀化
train_predict=postmnmx(train_predict_y,miny,maxy);%预测输出
test_predict=postmnmx(test_predict_y,miny,maxy);
%计算均⽅差
trainm=sum((train_predict-train_y).^2)/length(train_y)
%testm=sum((test_predict-test_y).^2)/length(test_y)
sophyfor i=1:t
RD(i)=(test_predict(i)-test_y(i))/test_y(i)*100;
end武汉室内设计培训
for i=1:t
D(i)=test_predict(i)-test_y(i);
end
RD=RD'
D=D'
figure
能动英语怎么样plot(test_predict,':og')
hold on
plot(test_y,'- *')
legend('预测输出','期望输出')
title('⽹络预测输出','fontsize',12)
ylabel('函数输出','fontsize',12)
xlabel('样本','fontsize',12)
sweetie
figure
plot(train_predict,':og')
hold on
plot(train_y,'- *')
legend('预测输出','期望输出')
title('遗传⽹络预测输出','fontsize',12)
ylabel('函数输出','fontsize',12)
xlabel('样本','fontsize',12)
toc %计算时间
3 仿真结果
4 参考⽂献
boron[1]聂敬云, 李春青, 李威威, & 王韬. (2015). 关于遗传算法优化的最⼩⼆乘⽀持向量机在mbr仿真预测中的研究. 软件(5), 6.5 MATLAB 代码与数据下载地址
见博客主页