PSO参数优化

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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); % 全局极值

相关文档
最新文档