李歡歡
【摘 要】支持向量機(SVM)具有適合處理小樣本、非線性和高維數問題,利用核函數且泛化能力強等多方面的優(yōu)點。文章簡要介紹了SVM的基本原理,然后利用支持向量機(SVM)進行兩類分類和多類分類實驗,比較不同核函數的結果。實驗證明支持向量機的分類效果比較好。
【關鍵詞】支持向量機(SVM);分類;核函數;參數選擇
支持向量機SVM(Support Vector Machines)是Vapnike等人在上世紀九十年代初建立的一種新型的學習機器,它是在以解決小樣本機器學習問題為目標的統計學習理論(SLT)的基礎上發(fā)展起來的。SVM建立在SLT的VC維理論和結構風險最小化原理的基礎上,根據有限的樣本信息在模型的復雜度和學習能力之間尋求最佳折中,獲得最好的推廣能力。與傳統方法相比,SVM能夠有效地避免過學習、欠學習、維數災難以及陷入局部極小值等問題,所以它成為機器學習的一個新研究熱點。
1.支持向量機
1.1 支持向量機的基本思想
首先通過非線性變換將輸入空間變換到一個高維空間,然后在這個新空間中求取最優(yōu)線性分類面,而這種非線性變換是通過定義適當的內積函數實現的。根據結構風險最小化準則,在使訓練樣本分類誤差極小化的前提下,盡量提高分類器的泛化推廣能力。從實施的角度看,訓練支持向量機等價于解一個線性約束的二次規(guī)劃問題,使得分隔特征空間中兩類模式點的兩個超平面之間距離最大,而且它能保證得到的解為全局最優(yōu)解,使得基于支持向量機的分類器能夠適應解決實際問題,從而具有較好的泛化和推廣能力,當然這也就是所謂的“核函數”、“大間隔”思想。
1.2 支持向量機的分類
線性支持向量機是從線性可分情況下的最優(yōu)分類超平面發(fā)展而來,由于最優(yōu)超平面的解最終是完全由支持向量決定的,所以這種方法后來被稱為支持向量機(support vector machines)。線性支持向量機分為線性可分和線性不可分兩種情況。
在實際問題中,分類問題往往是非線性問題,因此我們需要而最優(yōu)分類面也應該是非線性的。支持向量機是通過引入特征變換來將原空間的非線性問題轉化為新空間的線性問題,同時利用核函數來解決非線性分類問題,將特征進行非線性映射,將低維空間映射到高維空間,在高維空間找到一種線性關系,構造出最優(yōu)分類超平面。核函數不僅簡化了運算,而且我們不需要知道非線性映射的具體形式。因此理論上只要選取一個滿足條件的核函數,就可以構造非線性的支持向量機。
常用的核函數有:
線性核函數(linear function):
多項式核函數(polynomial function):
徑向基核函數(radial basis function):
Sigmoid核函數(Sigmoid function):
1.3 支持向量機的分類方法
支SVM最初是為兩類問題設計的,當處理多類問題時,就需要構造合適的多類分類器。構造SVM多類分類器的方法主要有兩種:一是直接法,直接在目標函數上修改,將多個分類面的參數求解合并到一個最優(yōu)化問題中,通過求解該最優(yōu)化問題“一次性”的實現多類分類(但計算復雜度高,只適合小型問題);二是間接法,主要是通過組合多個二分類器來實現多分類器的構造。常見的方法有一對一法:個類別需要個支持向量機,當對某個未
知類別的樣本進行分類時,最后得票最多的類別即為該未知樣本的類別。一對多法,訓練時依次把某個類別的樣本歸為一類,其他剩余的樣本歸為另一類,這樣個類別的樣本就構造出個SVM,分類時將未知樣本分類為具有最大分類函數值的那一類。
2.實驗過程
2.1 兩類分類
隨機產生服從正態(tài)分布的兩個矩陣,利用SVM的兩類分類思想進行分類。
例:x1=randn(2,50)+1;
x2=randn(2,50)+7;
所用命令[nsv,alpha,bias]=svc(X,Y,ker,C)
svcplot(X,Y,ker,alpha,bias,aspect,mag,xais,yais,input)
Variable Poly
global P1=1 P1=2 P1=2 P1=1
C C=100 C=1000 C=100 C=1000
Execution time 0.2s 0.2s 0.2s 0.2s
|w0|^2 6.453708 0.946768 1.125460 5.890548
Margin 0.787273 2.055456 1.885233 0.824047
Sum alpha 6.453708 0.946768 1.125460 5.890548
Support Vectors 3(3.0%) 2(2.0%) 6(6.0%) 3(3.0%)
Variable rbf
global P1=1 P1=2 P1=3 P1=4
C C=1000 C=1000 C=1000 C=1000
Execution time 0.2s 0.2s 0.2s 0.2s
|w0|^2 10.338001 5.847233 4.670641 5.046583
Margin 0.622031 0.827094 0.925426 0.890290
Sum alpha 10.338001 5.847233 4.670641 5.046583
Support Vectors 24(24.0%) 10(10.0%) 7(7.0%) 5(5.0%)
2.2 多類分類
實驗環(huán)境是matlab2010b,利用svm進行分類。使用libsvm工具箱自帶的測試數據heart-scale進行分類,先建立分類模型,然后利用得到的這個模型來進行分類預測。
選取前200個數據作為訓練集合,后70個數據作為測試集合。
利用訓練集合建立分類模型
model=svmtrain(trainlabel,traindata,-s0–t2–c 1.2–g 2.8)
利用建立的模型看其在訓練集合上的分類效果
[ptrain,acctrain]=svmpredict(trainlabel,traindata,model);
預測測試集合標簽
[ptest,acctest]=svmpredict(testlabel,testdata,model)
輸出結果
label=1 -1;nr_class=2;total SV=197;nSV=89 108;
Accuracy=99.5%(199/200)(Classific-
ation)
Accuracy=68.5714%(48/70)(Classifi-
cation)
2.3 結果分析
由以上實驗結果可知:
(1)由多項式核函數和徑向基核函數對比可知,在高維情況下徑向基核函數比多項式核函數的分類效果要好,分類間隔更大。
(2)當全局變量取值相同時,C的取值就很重要。C是對錯分的點所加的懲罰,懲罰函數就是這個錯分的點到其正確位置的距離。C越大,錯分的點就會越少,但是過擬合的情況比較嚴重,C較小時,錯分的點會很多,模型就會不準確。
(3)由多類分類結果可知,支持向量機的訓練和預測樣本時分類效果很明顯,是一種良好的分類器。
3.結論
支持向量機的分類效果非常明顯,選用不同的核函數會有不同的效果,一般我們根據具體情況選擇合適的核函數,對于高維情況一般選擇徑向基核函數,參數的選擇也是很重要的。支持向量機是是通過非線性變換將原空間的非線性問題轉化為新空間的線性問題,同時利用核函數來解決非線性分類問題,具有很好的分類功能,實驗也表明了支持向量機的分類效果比較好。
參考文獻:
[1]V.N.Vapnik.TheNatureofStatisticalLearningTheory[M].NewYork:Springer-Verlag,1995.
[2]張學工.模式識別[M].北京:清華大學出版社(第三版),
2010.
[3]彭開毅.基于PCA和SVM的刑偵人臉識別系統研究[D].四川師范大學計算機科學學院,2012,3:43-45.
[4]廉飛宇,付麥霞,張元.給予支持向量機的車輛牌照識別的研究[J].計算機工程與設計,2006,27(21):4034-4035.