高斯RBF核函数中Sigma取值和SVM分离面的影响

1:高斯RBF核函数的定义

k(x) = exp(-x^2/(2×sigma))

在MATLAB中输入一下代码:ezsurf('exp(-x^2/(2*sigma^2))'); 

在GOOGLE中输入“exp(-(x)^2/(2*y^2)), x is from -10 to 10, y is from -10 to 10”,可以得到三维动画绘图.

 

2.绘制不同sigma下的SVM分离面

load fisheriris; xdata = meas(51:end,1:2); group = species(51:end);

sigma = 1;svmStruct = svmtrain(xdata,group,'kernel_function','rbf','rbf_sigma', sigma,'showplot',true);

hold on;

sigma = 2;svmStruct = svmtrain(xdata,group,'kernel_function','rbf','rbf_sigma', sigma,'showplot',true);

hold on;

sigma = 5;svmStruct = svmtrain(xdata,group,'kernel_function','rbf','rbf_sigma', sigma,'showplot',true);

 

 

3.绘制不同sigma下的核函数值

xRange = [0 20];

ezplot('exp(-x^2/(2*1^2))', xRange);

hold on;ezplot('exp(-x^2/(2*2^2))', xRange);

ezplot('exp(-x^2/(2*5^2))', xRange);

 

4.讨论

在高斯RBF核函数中,Sigma越大,分离面越平滑;Sigma越小,分离面越细致。这是因为sigma越小,核函数对x的衰减越快,这就放大了数据x之间的差别,即k(x)对x值的变化很敏感,因此SVM的分离面变得细致;同样的道理,sigma越大,核函数对x的衰减越慢,这使k(x)对x的变化变得钝化(即不敏感),进而使SVM的分离面变得平滑。

5.绘制不同C下的分离面

C越大,分离面越弯曲复杂;C越小,分离面越平滑。

 

load fisheriris; xdata = meas(51:end,1:2); group = species(51:end);

C = 2^0;svmStruct = svmtrain(xdata,group,'kernel_function','rbf','boxconstraint', C,'showplot',true);

hold on;

C = 2^3;svmStruct = svmtrain(xdata,group,'kernel_function','rbf','boxconstraint', C,'showplot',true);

hold on;

C = 2^6;svmStruct = svmtrain(xdata,group,'kernel_function','rbf','boxconstraint', C,'showplot',true);

 

另:高斯核函数具有提取局部特征信息的能力(对局部信息敏感),多项式核函数对全局数据灵敏,因此文献【1】构造了一个新的核函数(实际上是高斯核函数和多项式核函数之和)来使算法达到兼顾全局和局部特征的能力。

【1】吕方,刘少波,于晓洋,一种复合KPCA故障诊断模型,中北大学学报(自然科学版),30(6)(2009)

posted @ 2013-06-19 10:25  huangshanshan  阅读(11312)  评论(0编辑  收藏  举报