一、libsvm訓練函式使用如下:
1
model = svmtrain(trainlabel,traindata,
'-s 0 -t 2 -c 1.2 -g 2.8'
)
trainlabel:訓練樣本標籤
traindata:訓練樣本資料集,行向量為樣本值
1、引數-s,表示svm型別,預設值為0,可選型別有:
0 -- c- svc
1 -- nu - svc
2 -- one-class-svm
3 -- e - svr
4 -- nu-svr
2、引數-t,表示核函式型別,預設為2,可選核函式有:
0 -- 線性核函式: k(u,v)=u'*v
1 -- 多項式核函式: k(u,v)=(gamma*u'*v + coef0)^d
2 -- rbf核函式: k(u,v)=exp(-gamma*||u-v||^2)
3 -- sigmoid核函式: k(u,v)=tanh(gamma*u'*v + coef0)
4 -- 自定義核函式
u、v為資料集中的兩個樣本
核函式對應引數:
線性核函式,沒有專門需要設定的引數
多項式核函式,有三個引數。-d用來設定多項式核函式的最高此項次數,也就是公式中的d,預設值是3 。-g用來設定核函式中的gamma引數設定,也就是公式中的gamma,預設值是1/k(k是類別數)。-r用來設定核函式中的coef0,預設值是0
rbf核函式,有乙個引數。-g用來設定核函式中的gamma引數設定,預設值是1/k(k是類別數)。
sigmoid核函式,有兩個引數。-g用來設定核函式中的gamma引數設定,預設值是1/k(k是類別數)。-r用來設定核函式中的coef0,預設值是0。
3、引數-c cost,表示懲罰係數,設定c- svc、e - svr、n - svr中從懲罰係數c,預設值為1。
4、引數-wi weight,對各類樣本的懲罰係數c加權,預設值為1。
5、引數-v n,n折交叉驗證模式。
二、自定義核函式
使用-t 4引數時,可以使用自定義核函式,根據自定義核函式求出核矩陣,自定義核函式使用方法如下:比如線性核函式 是 k(u,v)=u'*v,設訓練集是train_data,設訓練集有150個樣本 , 測試集是test_data,設測試集有120個樣本,則
訓練集的核矩陣: ktrain = train_data*train_data'
測試集的核矩陣: ktest = test_data*train_data'
想要使用-t 4引數還需要把樣本的序列號放在核矩陣前面 ,形成乙個新的矩陣:
% 使用線性核函式 k(u,v) = (u' * v)
1
2
3
4
5
6
ktrain = train_data * train_data'; %求訓練集核矩陣
ktrain = [(1:150)',ktrain]; %樣本的序列號放在核矩陣前面
model = svmtrain(train_label, ktrain,
'-t 4'
); % 輸入 ktrain
ktest = test_data*train_data'; %求測試集核矩陣
ktest = [(1:120)', ktest]; %樣本的序列號放在核矩陣前面
[predict_label, accuracy, p1] = svmpredict(test_label,ktest,model); % 輸入ktest
三、混合核函式
多項式核函式有良好的全域性性能,具有很強的外推能力,並且多項式的次數越低,其外推能力越強。而gauss徑向基核函式則是區域性性強,其內推能力隨著引數的減小而減弱。通過把兩類核函式結合起來,發揮它們各自的優點,得到學習能力和推廣性都很強,兼具良好的外推和內推能力的核函式,利用多項式核函式和徑向基核函式構建混合核函式分類模型,表示式為:
式中:kpoly為多項式核函式;krbf為徑向基核函式;λ∈(0,1)。當λ較大時,混合核函式的效能表現得優良一些。
LIBSVM使用與自定義核函式
libsvm訓練函式使用如下 model svmtrain trainlabel,traindata,s 0 t 2 c 1.2 g 2.8 trainlabel 訓練樣本標籤 traindata 訓練樣本資料集,行向量為樣本值 svm型別,用引數 s 設定,預設值為0,可選型別有 0 c svc ...
LIBSVM中如何自定義核函式
自定義核函式 使用 t 4引數時,可以使用自定義核函式,根據自定義核函式求出核矩陣,自定義核函式使用方法如下 比如線性核函式 是 k u,v u v,設訓練集是train data,設訓練集有150個樣本 測試集是test data,設測試集有120個樣本,則 訓練集的核矩陣 ktrain trai...
自定義徑向基核函式
根據公式 在自定義svm的徑向基核函式時,需要描述其核矩陣,如下所示 function kernel matrix rbf kernel x1,x2,gamma 在訓練時,x1,x2均為訓練集,x1為測試樣本,即在 時,x1為測試集,x2為支援向量訓練集 len1 size x1,1 測試集樣本數 ...