LIBSVM使用與自定義核函式

2021-08-30 15:14:12 字數 1969 閱讀 7291

libsvm訓練函式使用如下:

model = svmtrain(trainlabel,traindata,'-s 0 -t 2 -c 1.2 -g 2.8')

trainlabel:訓練樣本標籤

traindata:訓練樣本資料集,行向量為樣本值

svm型別,用引數-s 設定,預設值為0,可選型別有:

0 -- c- svc

1 -- nu - svc

2 -- one-class-svm

3 -- e - svr

4 -- nu-svr

核函式(用引數 -t 來指定),-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。

其它引數:

-c cost:設定c- svc、e - svr、n - svr中從懲罰係數c,預設值為1;

-wi weight:對各類樣本的懲罰係數c加權,預設值為1;

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

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訓練函式使用如下 1 model svmtrain trainlabel,traindata,s 0 t 2 c 1.2 g 2.8 trainlabel 訓練樣本標籤 traindata 訓練樣本資料集,行向量為樣本值 1 引數 s,表示svm型別,預設值為0,可選型別有 0 c ...

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 測試集樣本數 ...