matlab自帶工具箱svmtrain函數參數的選擇


 

1、在使用svmtrain函數時,需要使用核函數進行分類,百度大部分的都是關於libsvm下的核函數使用,看到了一篇寫matlab的svmtrain參數選擇,如下

https://blog.csdn.net/shenziheng1/article/details/54178685/

還可以使用 help svmtrain查看svmtrain函數的參數示例和使用示例,如需要閱讀體驗更好,請使用doc svmtrain 查看

例子:

 1 e.g.
 2 clc;clear all
 3 load fisheriris %載入matlab自帶的數據[有關數據的信息可以自己到UCI查找,這是UCI的經典數據之一],
 4 % UCI數據庫http://archive.ics.uci.edu/ml/該數據庫得到大家認可
 5 %其中meas是150*4的矩陣代表着有150個樣本每個樣本有4個屬性描述
 6 %species代表着這150個樣本的分類 
 7 data = [meas(:,1), meas(:,2)]; %在這里只取meas的第一列和第二列,即只選取前兩個屬性.
 8 groups = ismember(species,'setosa');
 9 %由於species分類中是有三個分類:setosa,versicolor,virginica,為了使問題簡單,我們將其變為二分類問題:Setosa
10 %and non-Setosa,groups中只有0和1
11 [train, test] = crossvalind('holdOut',groups);%生成索引,一部分用來訓練,其他部分用來測試
12 cp = classperf(groups);%隨機選擇訓練集合測試集,其中cp作用是后來用來評價分類器的.*/
13 svmStruct = svmtrain(data(train,:),groups(train),'showplot',true); 14 %svmStruct= svmtrain(data(train,:),groups(train),'Kernel_Function','rbf','RBF_Sigma',1,'boxconstraint',1,'showplot',true); 15 %使用svmtrain進行訓練,得到訓練后的結構svmStruct,在預測時使用.

 上述 ‘Kernel_Function’表示核函數,包括'linear'  (線性)默認、 'quadratic' (二次)、 'polynomial' (多項式默認三階)、'rbf'(高斯徑向基函數)

線性核函數用於數據線性可分的情況下,后面三個一般應用於數據線性不可分的情況(將而二維數據映射到更高的維度從而使數據可區分)

吳恩達老師 機器學習講義  https://pan.baidu.com/s/1boGzeDx

      機器學習視頻  http://open.163.com/special/opencourse/machinelearning.html

高斯核函數為

$$f(X_{i})=e^{-\frac{||x_{i}-l_{i}||^2}{2\sigma^2 }}$$

‘Rbf_sigma’表示高斯核函數的參數,

’boxconstraint‘表示懲罰系數,類同於libsvm中svmtrain的參數c

C越大,相當於懲罰松弛變量,希望松弛變量接近0,即對誤分類的懲罰增大,趨向於對訓練集全分對的情況,這樣對訓練集測試時准確率很高,但泛化能力弱。C值小,對誤分類的懲罰減小,允許容錯,將他們當成噪聲點,泛化能力較強。

 


免責聲明!

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



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