支持向量機是建立在統計學習理論基礎之上的新一代機器學習算法,支持向量機的優勢主要體現在解決線性不可分問題,它通過引入核函數,巧妙地解決了在高維空間中的內積運算,從而很好地解決了非線性分類問題。
構造出一個具有良好性能的SVM,核函數的選擇是關鍵.核函數的選擇包括兩部分工作:一是核函數類型的選擇,二是確定核函數類型后相關參數的選擇.因此如何根據具體的數據選擇恰當的核函數是SVM應用領域遇到的一個重大難題,也成為科研工作者所關注的焦點,即便如此,卻依然沒有得到具體的理論或方法來指導核函數的選取
1、經常使用的核函數
核函數的定義並不困難,根據泛函的有關理論,只要一種函數K(xi,xj)滿足Mercer條件,它就對應某一變換空間的內積.對於判斷哪些函數是核函數到目前為止也取得了重要的突破,得到Mercer定理和以下常用的核函數類型:
Gauss徑向基函數則是局部性強的核函數,其外推能力隨着參數σ的增大而減弱。多項式形式的核函數具有良好的全局性質。局部性較差。
采用Sigmoid函數作為核函數時,支持向量機實現的就是一種多層感知器神經網絡,應用SVM方法,隱含層節點數目(它確定神經網絡的結構)、隱 含層節點對輸入節點的權值都是在設計(訓練)的過程中自動確定的。而且支持向量機的理論基礎決定了它最終求得的是全局最優值而不是局部最小值,也保證了它 對於未知樣本的良好泛化能力而不會出現過學習現象。
2、核函數的選擇
在選取核函數解決實際問題時,通常采用的方法有:一是利用專家的先驗知識預先選定核函數;
二是采用Cross-Validation方法,即在進行 核函數選取時,分別試用不同的核函數,歸納誤差最小的核函數就是最好的核函數.如針對傅立葉核、RBF核,結合信號處理問題中的函數回歸問題,通過仿真實 驗,對比分析了在相同數據條件下,采用傅立葉核的SVM要比采用RBF核
的SVM誤差小很多.
三是采用由Smits等人提出的混合核函數方法,該方法較之前兩者是目前選取核函數的主流方法,也是關於如何構造核函數的又一開創性的工作.將不同的核函數結合起來后會有更好的特性,這是混合核函數方法的基本思想.
MATLAB中的SVM的使用
SVMStruct=svmtrain(Training,Group)
%svmtrain的輸入為樣本點training和樣本的分類情況group,輸出為一個分類器svmstruct.
核函數,核參數,和計算方法等都是可選的,如SVMStruct = svmtrain(…, ‘Kernel_Function’, Kernel_FunctionValue, …)
但是切記切記一定要成對出現。
然后,將分類器和testing sample帶入svmclassify中,可以得到分類結果和准確度。
舉個例子
svmStruct=svmtrain(data(train,:),groups(train),’Kernel_Function’,'rbf’,'Kernel_FunctionValue’,’5′,’showplot’,true);
%用了核寬為5的徑向基核,且要求作圖
% 這里我覺得原作者的寫法有誤,應該是svmStruct = svmtrain(data(train,:),groups(train),... 'Kernel_Function','rbf','RBF_Sigma',5,'showplot',true);
classes = svmclassify(svmStruct,data(test,:),’showplot’,true);
%要求輸出檢測樣本點的分類結果,且畫圖表示。
更多關於SVM的內容:http://blog.pluskid.org/?page_id=683
pluskid的博客