libsvm之核函數


核函數參數詳解

  https://blog.csdn.net/MrFortitude/article/details/59558037

什么是核函數?

  在用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時,會出現很多錯誤

多項核函數

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

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

RBF核函數

  又稱高斯核函數,這里高斯核函數只有一個-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).一個關鍵點0<Kij<=1對比多項式核,后者關鍵值需要infinity(rxiTxj+r>1)或者zero(rxiTxj+r<1),這是高階運算,此外,我們必須指出sigmoid核在某些參數下不是合法的(例如,兩個向量的內積)、(Vapnik 1995)

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

    我選取了網上幾張圖片供大家參考

  這里是原數據分布

 

   當gamma = 1時

  當gamma = 100時

  當gamma = 10時

借鑒

https://blog.csdn.net/QQ1449301756/article/details/53544348

https://blog.csdn.net/promisejia/article/details/81391019

 

  


免責聲明!

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



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