支持向量机SVM的参数自适应选择-matlab

 引言

支持向量机SVM是机器学习中非常优秀的算法,在解决小样本问题上具有出色的性能。然而,SVM的性能受其参数的影响。传统的依靠人工经验选取和网格试错法都难以很好地解决。群智能优化算法是一种很有吸引力的算法,可以在保持计算成本合理的情况下解决SVM参数的选择问题,提高SVM的分类性能和泛化能力。本文利用matlab自带的SVM分类器(省去了安装第三方工具箱的繁琐),通过群智能优化算法选择SVM合适参数,解决分类问题。

数据集

本文使用分类任务中经典的iris鸢尾花数据集。该数据集有3个类别,每个类别50个样本,每个样本4个特征,形成了150*4的样本格式,即样本数*特征个数

SVM分类器

本文利用Matlab自带了SVM分类器fitcecoc函数用于多分类任务(类别数>2),利用fitcsvm用于二分类任务。详细信息请参考matlab的阅读文档:

https://www.mathworks.com/help/stats/fitcecoc.html  

本文选择径向基核函数(RBF)作为SVM的核函数,因此,SVM待选择的参数有两个:惩罚系数C和核参数g。k折交叉验证的误差作为优化目标函数。

优化算法

以2023年发表在中科院1区SCI上的成吉思汗鲨鱼优化算法(Genghis Khan shark optimizer,GKSO)(源码),和受欢迎的灰狼优化算法(GWO)(源码作为例子。前期也推出了多种统计指标(一网打尽优化算法的8种统计指标,助力提升论文录用率(附Matlab代码)),本文在SVM参数优化中继续使用。

% 这是一个入门级示例代码,目的是快速准确实现功能
% 更多高级的运用(图形美化,代码美化等),请自行探索修改
% 运行时间与电脑配置,参数设置等有关
% 关注微信公众号:优化算法侠,发现更多精彩
clc;clear;close all; warning off
disp('Running......')
%% 读取数据
load iris
data = iris(:,1:4); % 所有样本,格式:样本数N x 特征数M
labels=iris(:,5);   % 所有标签-用1,2,3...表示

%% 一些设置
global train_data train_label test_data test_label  %声明全局变量,便于后续使用

%  运行多次,结果保存在Optimal_results
str = {'中文名字','英文缩写','收敛曲线','最优函数值','最优解','输出标签','准确率'}; % 表头制作
Optimal_results={}; 
for i=1:length(str)
    Optimal_results{i,1}=str(i);
end
%% 每一次运行重新划分数据集
% 参数设置
run_times=2; % 运行次数
train_p=0.6; % 训练集比例:60%
% 优化问题的四大元素:
fobj=@objective_func;            % 目标函数
lb = [ 2^-3 2^-3];                % 下界
ub = [ 2^10 2^10 ];                 % 上界
dim=length(lb);                       % 维度
%
nPop=20;                                  % 种群数
MaxIter=30;                              % 最大迭代次数
for run_time=1:run_times
    %% 划分训练集和测试集

    [train_data, train_label,test_data,test_label]=data_splite(data,labels,train_p);
    
    %% 调用优化算法 
    % 
    tic
    [Best_score,Best_paras,cg_curve]=GWO(nPop,MaxIter,lb,ub,dim,fobj);
    [out_label,accuracy]= Make_model(Best_paras); % 输入测试集输出结果
    Optimal_results{1,2}="灰狼算法";                      % 中文名字
    Optimal_results{2,2}="GWO";                           % 名字
    Optimal_results{3,2}(run_time,:)=cg_curve;       % 收敛曲线
    Optimal_results{4,2}(run_time)=Best_score;      % 最优函数值
    Optimal_results{5,2}{run_time}=Best_paras;       % 最优解
    Optimal_results{6,2}{run_time}=out_label;         % 输出的标签
    Optimal_results{7,2}(run_time)=accuracy;         % 准确率
    
    % 
    [Best_score,Best_paras,cg_curve]=GKSO(nPop,MaxIter,lb,ub,dim,fobj);
    [out_label,accuracy]= Make_model(Best_paras); 
    Optimal_results{1,3}="成吉思汗鲨鱼算法";                     
    Optimal_results{2,3}="GKSO";                           
    Optimal_results{3,3}(run_time,:)=cg_curve;      
    Optimal_results{4,3}(run_time)=Best_score;      
    Optimal_results{5,3}{run_time}=Best_paras;      
    Optimal_results{6,3}{run_time}=out_label;         
    Optimal_results{7,3}(run_time)=accuracy;         
    %
    toc
end
%% 统计输出有:
%          最差值worst
%          最优值best
%          标准差值std 
%          均值mean 
%          中值median
%          wilcoxon_test:Wilcoxon符号秩检验、 Wilcoxon秩和检验
%          friedman_p_value:friedman检验
[Results,wilcoxon_test,friedman_p_value]=Cal_stats(Optimal_results);
for i=2:size(Results,2)    
    fprintf('%s 优化SVM的 %d 次平均准确率为:%.4f \n',Results{2,i},run_times,Results{7,i});
end
%% 绘图-收敛曲线,混淆矩阵,箱线图等
DrawPic(Results,Optimal_results)
disp('End !!!')

结果展示:

优化算法收敛曲线对比

图片

混淆矩阵

图片

图片

分类结果图

图片

图片

箱型图boxplot

图片

多次运行结果保存在Optimal_results中。这里考虑快速验证代码和算法,仅运行了2次,可根据实际需要修改。

图片

Matlab代码下载

微信搜索并关注-优化算法侠,或扫描下方二维码关注,以算法名字搜索历史文章即可下载。

纷传

320多种基础的群智能优化算法-matlab

速来下载!超320种基础优化算法!-Matlab版(截至2023.12.02)icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247485602&idx=1&sn=806af7a9a7169b058e179ca2a089c287&chksm=c12be4a7f65c6db15c5969dd0223d2e42759a8e24a263fb71abac3b5015c0cabe2c5bdbbf285&token=649838004&lang=zh_CN#rd

175种群智能优化算法python库

超175+种群智能优化算法Python库!!!icon-default.png?t=N7T8http://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247484577&idx=1&sn=ed0b2e27b73e738c094c7534a63a2cda&chksm=c12be8a4f65c61b2f3d90e2b4d1f480f8d0bb038b6598828ebf2434006e07925f8102af9795f&scene=21#wechat_redirect

求解cec测试函数-matlab

最新最火!cec2022测试函数来了(附Matlab代码)icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247484693&idx=1&sn=ce311acb26bee2894db6fe90776288bd&chksm=c12be910f65c6006af080b1e97ad5514eee06b64d2caeeac2008b8c06fdc3ba379455e9ca709&scene=21#wechat_redirect

解决12工程设计优化问题-matlab

略微出手,工程设计问题(12)(附Matlab代码)icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247485052&idx=1&sn=80e5573c1c005ee5640e44935044ee35&chksm=c12bea79f65c636fc73758b4f4893502bd89cbd1c5d15d7db15e8b5c94eeae40450439d44944&token=681266555&lang=zh_CN#rd

求解11种cec测试函数-python

一网打尽!170+种优化算法求解11种cec测试函数(附Python代码)icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247484745&idx=1&sn=1957f7c9b44c47f171c1cd46054d1679&chksm=c12be94cf65c605a5e0f8404e6c90964ce0743b7c25ff5f98a03dedc77e5eec5b48bf0c0e782&token=681266555&lang=zh_CN#rd

解决12种工程设计优化问题-python

大放送!170+种优化算法解决12种工程设计问题(附python代码)icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247485068&idx=1&sn=c913be0f2445f8b4d3e944569f5e599f&chksm=c12bea89f65c639f1df0f8e6cacffc1fdffa96683d10743094435ee6b0b55573a5bc8eec7eb3&token=681266555&lang=zh_CN#rd

  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 对于“基于改进粒子群优化支持向量机的数据回归预测-非线性权重递减.zip”这个问题,它是一个压缩文件,可能包含一种改进的粒子群优化支持向量机算法用于数据回归预测的代码或软件。 粒子群优化是一种基于群体智能的优化算法,通常用于求解复杂的非线性问题。支持向量机SVM)作为一种机器学习算法,可以进行数据分类和回归预测。 改进粒子群优化支持向量机的数据回归预测方法可能采用非线性权重递减的策略,这种策略可以在迭代中逐渐减小权重,来提高模型的收敛性和预测性能。 该压缩文件中可能包含以下内容: 1. 算法代码:用于实现改进的粒子群优化支持向量机算法的源代码文件,可能使用常见的编程语言编写,如Python、MATLAB等。 2. 数据集:用于进行数据回归预测的实验数据集,可能是一个或多个数据文件,包含了训练集和测试集的数据。 3. 文档说明:提供有关算法原理和实验设置的详细文档,可能是PDF、Word文档或README文件等。 使用该压缩文件可以进行以下操作: 1. 解压缩文件:使用解压软件如WinRAR、7-Zip等解压缩软件,将文件解压至指定的目录中。 2. 查看算法代码:使用合适的文本编辑器打开源代码文件,了解改进的粒子群优化支持向量机算法的具体实现。 3. 准备数据集:通过查看文档说明,了解数据集的格式和内容,并根据需要进行数据预处理或拆分工作。 4. 运行算法:根据算法代码的要求,配置相关参数,并运行算法代码来进行数据回归预测实验。 5. 分析结果:根据实验的输出结果,进行结果分析和评估,了解改进算法在数据回归预测任务上的性能表现。 通过这个压缩文件,可以学习和使用基于改进粒子群优化支持向量机的方法进行数据回归预测,对于非线性权重递减策略进行探索和实验。这可能有助于提高数据预测准确性和模型的泛化能力。 ### 回答2: “基于改进粒子群优化支持向量机的数据回归预测-非线性权重递减.zip”是一个压缩文件,其中包含了一种基于改进粒子群优化支持向量机的数据回归预测方法,其特点在于采用了非线性权重递减策略。 在数据回归预测问题中,支持向量机是一种常用的机器学习算法。然而,在实际应用中,SVM的性能受到一些因素的限制,如参数选择、噪声的影响等。为了改进SVM的性能,在该方法中引入了粒子群优化算法。 粒子群优化算法是一种自然启发式优化算法,模拟了鸟群觅食的行为。通过调整粒子的位置和速度来求解最优解。在该方法中,将SVM参数作为粒子的位置,利用粒子群优化算法来搜索最优的参数设置。 与传统的粒子群优化算法相比,这个方法的一个改进是引入了非线性权重递减策略。该策略的思想是在搜索过程中,逐渐减小权重的大小,以加快算法的收敛速度。具体实现时,可以根据问题的复杂度和数据的分布情况来确定递减的速度。 该方法的应用范围主要是数据回归预测问题,通过训练一组带有标签的数据样本,建立一个回归模型,然后利用该模型对新的样本进行预测。其中,预测结果可以是连续的数值,也可以是某个类别的标签。 总之,“基于改进粒子群优化支持向量机的数据回归预测-非线性权重递减.zip”提供了一种改进的数据回归预测方法,通过引入粒子群优化算法和非线性权重递减策略,可以提升支持向量机在数据回归预测中的性能。 ### 回答3: 《基于改进粒子群优化支持向量机的数据回归预测-非线性权重递减.zip》是一个压缩文件,其中包含了一个基于改进粒子群优化支持向量机的数据回归预测模型。这个模型的特点是采用了非线性权重递减的方法来优化支持向量机的性能。 支持向量机(Support Vector Machine,SVM)是一种常用的机器学习方法,通过将数据映射到高维空间中,实现对数据的分类或回归预测。在传统的SVM模型中,线性权重递减方法被广泛使用,即权重随着特征的增加而递减,但该方法在处理非线性问题时可能效果不佳。 这个压缩文件中的模型提出了一种非线性权重递减方法,通过引入改进粒子群优化算法来寻找最优的权重递减函数。改进粒子群优化算法是一种通过模拟鸟群觅食行为来优化问题的算法,该算法可以自适应地更新权重递减函数,使其更好地适应非线性问题。 该模型的使用方法是解压缩文件,并在支持向量机的基础上进行改进后的算法实现。通过使用这个模型,我们可以在数据回归预测中获得更好的性能,特别是处理一些非线性问题时的效果更加明显。这个模型的具体实现可以根据模型中的代码文件来进行详细了解和应用。 总之,《基于改进粒子群优化支持向量机的数据回归预测-非线性权重递减.zip》是一个包含改进粒子群优化支持向量机的数据回归预测模型的压缩文件,通过引入非线性权重递减方法,我们可以在处理非线性问题时获得更好的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值