為何需要核函數:
http://www.blogjava.net/zhenandaci/archive/2009/03/06/258288.html建議他的文章都仔細看一下
核函數的類型:
常用的四種核函數對應的公式如下:
先粘貼一下,以后有經驗了再自己總結。
- 如果如果特征數遠遠大於樣本數的情況下,使用線性核就可以了.
- 如果特征數和樣本數都很大,例如文檔分類,一般使用線性核, LIBLINEAR比LIBSVM速度要快很多.
- 如果特征數遠小於樣本數,這種情況一般使用RBF.但是如果一定要用線性核,則選擇LIBLINEAR較好,而且使用-s 2選項。
支持向量機是建立在統計學習理論基礎之上的新一代機器學習算法,支持向量機的優勢主要體現在解決線性不可分問題,它通過引入核函數,巧妙地解決了在高維空間中的內積運算,從而很好地解決了非線性分類問題。
構造出一個具有良好性能的SVM,核函數的選擇是關鍵.核函數的選擇包括兩部分工作:一是核函數類型的選擇,二是確定核函數類型后相關參數的選擇.因此如何根據具體的數據選擇恰當的核函數是SVM應用領域遇到的一個重大難題,也成為科研工作者所關注的焦點,即便如此,卻依然沒有得到具體的理論或方法來指導核函數的選取.
1、經常使用的核函數
核函數的定義並不困難,根據泛函的有關理論,只要一種函數K(xi,xj)滿足Mercer條件,它就對應某一變換空間的內積.對於判斷哪些函數是核函數到目前為止也取得了重要的突破,得到Mercer定理和以下常用的核函數類型:
(1)線性核函數
K(x,xi)=x⋅xi
(2)多項式核
K(x,xi)=((x⋅xi)+1)d
(3)徑向基核(RBF)
K(x,xi)=exp(−∥x−xi∥2σ2)
Gauss徑向基函數則是局部性強的核函數,其外推能力隨着參數σ的增大而減弱。多項式形式的核函數具有良好的全局性質。局部性較差。
(4)傅里葉核
K(x,xi)=1−q22(1−2qcos(x−xi)+q2)
(5)樣條核
K(x,xi)=B2n+1(x−xi)
(6)Sigmoid核函數
K(x,xi)=tanh(κ(x,xi)−δ)
采用Sigmoid函數作為核函數時,支持向量機實現的就是一種多層感知器神經網絡,應用SVM方法,隱含層節點數目(它確定神經網絡的結構)、隱含層節點對輸入節點的權值都是在設計(訓練)的過程中自動確定的。而且支持向量機的理論基礎決定了它最終求得的是全局最優值而不是局部最小值,也保證了它對於未知樣本的良好泛化能力而不會出現過學習現象。
2、核函數的選擇
在選取核函數解決實際問題時,通常采用的方法有:一是利用專家的先驗知識預先選定核函數;二是采用Cross-Validation方法,即在進行核函數選取時,分別試用不同的核函數,歸納誤差最小的核函數就是最好的核函數.如針對傅立葉核、RBF核,結合信號處理問題中的函數回歸問題,通過仿真實驗,對比分析了在相同數據條件下,采用傅立葉核的SVM要比采用RBF核
的SVM誤差小很多.三是采用由Smits等人提出的混合核函數方法,該方法較之前兩者是目前選取核函數的主流方法,也是關於如何構造核函數的又一開創性的工作.將不同的核函數結合起來后會有更好的特性,這是混合核函數方法的基本思想.
對於核函數的理解,pluskid的博客寫的相當不錯啊,大家可以看看。