libsvm之核函式

2022-05-19 08:49:41 字數 1689 閱讀 8354

在用svm處理問題時,如果函式線性不可分,希望通過將輸入空間內線性不可分資料對映到乙個高維的特徵空間內使資料在特徵空間內使線性可分的,這個對映記住φ(x)

之後優化問題中內積φi * φj

這個內積的計算量和維度是成正相關,難度較大,所以引入了核函式

核函式就是乙個對映,實際工作中我們要找到乙個最優的核函式對資料進行準確劃分

線性核函式是我工作中經常使用的一項,我一般使用如下**進行劃分

svm-train.exe -s 0 -t 0 -c 2 svm_scale.txt svm_scale.model
-s:選擇svm的型別,工作只用到了c-svc,其他以後在研究

-t:核函式的型別選擇

-c:損失函式的選擇,一般預設為1

一般來講,損失函式過大會造成過擬合:當你為100時基本不會有錯誤

過小會造成欠擬合:當你為2時,會出現很多錯誤

因為今後的工作需要用到其他的核函式,所以這裡是我通過上網查的資料然後我自認為的核函式的使用方法,這裡我列舉的都是比較通用的核函式

網上實在沒有對這個引數的實際講解,全是專有名詞,看來只能以後慢慢試驗找最優引數了

又稱高斯核函式,這裡高斯核函式只有乙個-g的引數,這裡-g就代表了模型複雜度,gamma越大,高斯分布越窄。gamma越小,高斯分布越寬,gamma相當於調整模型的複雜度,gamma值越小模型複雜度越低,gamma值越高,模型複雜度越大

通常而言,rbf核是合理的首選,這個核函式將樣本非線性地對映到乙個更高維的空間,與線性核不同,它能夠處理分類和標註和屬行的非線性關係,並且,線性核是rbf的乙個特例(keerthi and lin 2003)。因此,使用乙個懲罰因子c的線性核與某些從引數(c,γ)的rbf核具有相同的效能,同時sigmoid核的表現很像一定引數的rbf核(lin and link 2003)

第二個原因,超引數(hyperparameter)的數量會影響到模型選擇的複雜度(因為引數只能靠試驗啊!)。多項式核比rbf核有更多的超引數。

最後rbf核有更少的數值複雜度(numerica difficulties).乙個關鍵點01)或者zero(rxitxj+r<1),這是高階運算,此外,我們必須指出sigmoid核在某些引數下不是合法的(例如,兩個向量的內積)、(vapnik 1995)

當然,也存在一些情形rbf核是不適用的,特別的,很可能適用線性核,因為rbf核可以得到與線性核相近的效果(按照理論,rbf核可以模擬線性核),可能好於線性核,也可能差於,但是不應該相差太多,很多問題比如維度非常大高,或者樣本海量的情況下,大家更傾向於線性核,因為效果相當,但是在速度和模型大小方面,線性核有更好的表現

這裡是原資料分布

當gamma = 1時

當gamma = 100時

當gamma = 10時

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

libSVM簡介及核函式模型選擇

struct svm problem 儲存參加計算的所有樣本 當樣本類別事先已經被告知時,可以通過數字來給樣本資料進行標識 如果是兩類通常以1與 1 來表示 如果不清楚樣本類別可以用樣本個數編號來設定,這時候分類的準確率也就無法判定了。資料樣本是乙個二維陣列,其中每個單元格儲存的是乙個svm nod...