高斯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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM