PSO参数优化
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.利用PSO参数寻优函数(分类问题):psoSVMcgForClass
2.[bestCVaccuracy,bestc,bestg,pso_option]=
3.psoSVMcgForClass(train_label,train,pso_option)
4.输入:
5.train_label:训练集的标签,格式要求与svmtrain相同。
6.train:训练集,格式要求与svmtrain相同。
7.pso_option:PSO中的一些参数设置,可不输入,有默认值,详细请看代码的帮
助说明。
8.输出:
9.bestCVaccuracy:最终CV意义下的最佳分类准确率。
10.bestc:最佳的参数c。
11.bestg:最佳的参数g。
12.pso_option:记录PSO中的一些参数。
13.==========================================================
14.利用PSO参数寻优函数(回归问题):psoSVMcgForRegress
15.[bestCVmse,bestc,bestg,pso_option]=
16.psoSVMcgForRegress(train_label,train,pso_option)
17.其输入输出与psoSVMcgForClass类似,这里不再赘述。
复制代码
psoSVMcgForClass源代码:
1.function [bestCVaccuarcy,bestc,bestg,pso_option] =
psoSVMcgForClass(train_label,train,pso_option)
2.% psoSVMcgForClass
3.
4.%%
5.% by faruto
6.%Email:patrick.lee@ QQ:516667408
/faruto BNU
7.%last modified 2010.01.17
8.
9.%% 若转载请注明:
10.% faruto and liyang , LIBSVM-farutoUltimateVersion
11.% a toolbox with implements for support vector machines based on libsvm,
2009.
12.%
13.% Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for
14.% support vector machines, 2001. Software available at
15.% .tw/~cjlin/libsvm
16.%% 参数初始化
17.if nargin == 2
18. pso_option =
struct('c1',1.5,'c2',1.7,'maxgen',200,'sizepop',20, ...
19. 'k',0.6,'wV',1,'wP',1,'v',5, ...
20. 'popcmax',10^2,'popcmin',10^(-1),'popgmax',10^3,'popgmin',1
0^(-2));
21.end
22.% c1:初始为1.5,pso参数局部搜索能力
23.% c2:初始为1.7,pso参数全局搜索能力
24.% maxgen:初始为200,最大进化数量
25.% sizepop:初始为20,种群最大数量
26.% k:初始为0.6(k belongs to [0.1,1.0]),速率和x的关系(V = kX)
27.% wV:初始为1(wV best belongs to [0.8,1.2]),速率更新公式中速度前面的
弹性系数
28.% wP:初始为1,种群更新公式中速度前面的弹性系数
29.% v:初始为3,SVM Cross Validation参数
30.% popcmax:初始为100,SVM 参数c的变化的最大值.
31.% popcmin:初始为0.1,SVM 参数c的变化的最小值.
32.% popgmax:初始为1000,SVM 参数g的变化的最大值.
33.% popgmin:初始为0.01,SVM 参数c的变化的最小值.
34.
35.Vcmax = pso_option.k*pso_option.popcmax;
36.Vcmin = -Vcmax ;
37.Vgmax = pso_option.k*pso_option.popgmax;
38.Vgmin = -Vgmax ;
39.
40.eps = 10^(-3);
41.
42.%% 产生初始粒子和速度
43.for i=1:pso_option.sizepop
44.
45. % 随机产生种群和速度
46. pop(i,1) =
(pso_option.popcmax-pso_option.popcmin)*rand+pso_option.popcmin; 47. pop(i,2) =
(pso_option.popgmax-pso_option.popgmin)*rand+pso_option.popgmin;
48. V(i,1)=Vcmax*rands(1,1);
49. V(i,2)=Vgmax*rands(1,1);
50.
51. % 计算初始适应度
52. cmd = ['-v ',num2str(pso_option.v),' -c ',num2str( pop(i,1) ),' -g
',num2str( pop(i,2) )];
53. fitness(i) = svmtrain(train_label, train, cmd);
54. fitness(i) = -fitness(i);
55.end
56.
57.% 找极值和极值点
58.[global_fitness bestindex]=min(fitness); % 全局极值