struct
svm_problem
//儲存參加計算的所有樣本;
當樣本類別事先已經被告知時,可以通過數字來給樣本資料進行標識(如果是兩類通常以1與-1
來表示)。如果不清楚樣本類別可以用樣本個數編號來設定,這時候分類的準確率也就無法判定了。
資料樣本是乙個二維陣列,其中每個單元格儲存的是乙個svm_node,y
與樣本資料的對應關係為:
資料節點的結構體
struct
svm_node
//儲存單一向量的單個特徵;
如果需要儲存向量x=(1,121,12321,121,1),就可以使用6個
svm_node
來儲存,記憶體映像為:
index
1 -1
value
null
注意:向量是以索引值為-1
的元素為結束標誌位的。如果沒有標誌位將導致程式崩潰。
enum;
c_svc
:c表示懲罰因子,
c越大表示對錯誤分類的懲罰越大
nu_svc
:和c_svc
相同。one_class
:不需要類標號
,用於支援向量的密度估計和聚類.
epsilon_svr
:-不敏感損失函式,對樣本點來說,存在著乙個不為目標函式提供任何損失值的區域,即
-帶。nu_svr
:由於epsilon_svr
需要事先確定引數
,然而在某些情況下選擇合適的引數卻不是一件容易的事情。而
nu_svr
能夠自動計算引數。
注意:c_svc
與nu_svc
其實採用的模型相同,但是它們的引數
c的範圍不同,
c_svc
採用的是
0到正無窮,
nu_svc
是[0,1]
。enum;
linear
:線性核函式(linear kernel
)poly
:多項式核函式(
ploynomial kernel
)rbf
:徑向機核函式
(radical basis function)
sigmoid
:神經元的非線性作用函式
核函式(sigmoid tanh)
precomputed
:使用者自定義核函式
只有四個常用核函式,但我們必須決定哪乙個是首選。然後是懲罰因子c和核引數的選擇。
在支援向量機中使用的核函式主要有四類:
線性核函式:
多項式核函式:
rbf核函式:
sigmoid核函式:
其中, 和 均為核引數。
究竟用哪一種核函式取決對資料處理的要求,不過建議一般都是使用rbf核函式。因為rbf核函式具有良好的性態,在實際問題中表現出了良好的效能。
1 rbf核
通常而言,rbf核是合理的首選。這個核函式將樣本非線性地對映到乙個更高維的空間,與線性核不同,它能夠處理分類標註和屬性的非線性關係。並且,線性核 是rbf的乙個特例(keerthi and lin 2003),因此,使用乙個懲罰因子c的線性核與某些引數(c,γ)的rbf核具有相同的效能。同時,sigmoid核的表現很像一定引數的rbf核 (lin and link 2003)。
第二個原因,超引數(hyperparameter)的數量會影響到模型選擇的複雜度(因為引數只能靠試驗呀!)。多項式核比rbf核有更多的超引數。
最後,rbf核有更少的數值複雜度(numerical difficulties)。乙個關鍵點01)或者zero(rxitxj+r<1),這是高階運算。此外,我們必須指出sigmoid核在某些 引數下不是合法的 (例如,不是兩個向量的內積)。(vapnik 1995)
當然,也存在一些情形rbf核是不適用的。特別地,當特徵維數非常大的時候,很可能只能適用線性核。
kernel_type–
svm的核心型別,下面是可能的取值:
degree– 核心函式(poly)的引數degree。
gamma– 核心函式(poly/ rbf/ sigmoid)的引數
coef0– 核心函式(poly/ sigmoid)的引數coef0
。cvalue– svm型別(c_svc/ eps_svr/ nu_svr)的引數c
。nu– svm型別(nu_svc/ one_class/ nu_svr)的引數
p– svm型別(eps_svr)的引數
class_weights– c_svc中的可選權重,賦給指定的類,乘以c以後變成
term_crit– svm的迭代訓練過程的中止條件,解決部分受約束二次最優問題。您可以指定的公差和/或最大迭代次數。
libsvm之核函式
在用svm處理問題時,如果函式線性不可分,希望通過將輸入空間內線性不可分資料對映到乙個高維的特徵空間內使資料在特徵空間內使線性可分的,這個對映記住 x 之後優化問題中內積 i j 這個內積的計算量和維度是成正相關,難度較大,所以引入了核函式 核函式就是乙個對映,實際工作中我們要找到乙個最優的核函式對...
LIBSVM中的核函式及其引數
在libsvm中 t用來指定核函式型別 預設值是2 0 線性核函式 1 多項式核函式 2 rbf核函式 3 sigmoid核函式 4 自定義核函式 常用的四種核函式對應的公式如下 首先介紹下與核函式相對應的引數 1 對於線性核函式,沒有專門需要設定的引數 2 對於多項式核函式,有三個引數。d用來設定...
LIBSVM使用與自定義核函式
libsvm訓練函式使用如下 model svmtrain trainlabel,traindata,s 0 t 2 c 1.2 g 2.8 trainlabel 訓練樣本標籤 traindata 訓練樣本資料集,行向量為樣本值 svm型別,用引數 s 設定,預設值為0,可選型別有 0 c svc ...