【SVM预测】基于遗传算法改进SVM实现数据回归预测Matlab代码

176 阅读2分钟

1 简介

支持向量机 (Support Vector Machines, SVM) 是一种应用广泛的机器学习方法, 具有理论知识清晰完备,适应性和泛化能力良好的优点, 核心思想是在特征空间中寻找到一个最优超平面将两类样本尽可能大的分开, 能够较好的处理小样本、非线性和克服“维数灾难”问题, 并且表现出优秀的分类能力和泛化能力而被广泛应用于分类和回归等领域. 但是 SVM 对核函数的参数选取对分类效果影响很大, 不合适的参数可能使得分类器性能大大降低. 针对 SVM 核参数的选取问题, 目前尚没有统一有效的方法. 传统的参数选择方法如实验法、网格搜索法等由于耗时过长和不必要的验证流程等缺点, 更常用的方法是群智能算法如蚁群算法、遗传算法和粒子群算法等优化支持向量机核参数.粒子群算法由于算法结构简单、寻优能力相对较好, 近年来选择遗传算法优化 SVM 参数成为研究热点之一.。

2 部分代码

%子程序:计算适应度函数, 函数名称存储为fitnessfun function 
function [Fitvalue,cumsump]=fitnessfun(population);
global BitLength
global boundsbegin
global boundsend 
popsize=size(population,1);   %计算个体个数
for i=1:popsize   
   x=transform2to10(population(i,:));  %将二进制转换为十进制     
   %转化为[-1,1]区间的实数    
   xx=boundsbegin+x*(boundsend-boundsbegin)/(power(2,BitLength)-1); 
   Fitvalue(i)=targetfun(xx);  %计算函数值,即适应度
end
%给适应度函数加上一个大小合理的数以便保证种群适应值为正数 
Fitvalue=Fitvalue'; 
%计算选择概率
fsum=sum(Fitvalue);  
Pperpopulation=Fitvalue/fsum;  %适应度归一化
%计算累积概率
cumsump(1)=Pperpopulation(1) ;
for i=2:popsize   
   cumsump(i)=cumsump(i-1)+Pperpopulation(i) ;%求累计概率 
end
cumsump=cumsump' ;  %累计概率  
end

3 仿真结果

4 参考文献

[1]颜晓娟. 基于改进遗传算法寻优的SVM风能短期预测. Diss. 广西大学, 2015.

部分理论引用网络文献,若有侵权联系博主删除。

5 完整MATLAB代码与数据下载地址

见博客主页头条