危 傲
(西安電子科技大學(xué) 電子工程學(xué)院,陜西 西安 710071)
基于SVM算法的分類器設(shè)計
危 傲
(西安電子科技大學(xué) 電子工程學(xué)院,陜西 西安 710071)
介紹了支持向量機(jī)算法的基本思想、數(shù)據(jù)分類的概念,分析了傳統(tǒng)支持向量機(jī)算法的一般特性。用Libsvm工具箱實(shí)現(xiàn)了基于SVM算法的分類器設(shè)計,并用公共數(shù)據(jù)庫中的數(shù)據(jù)集對設(shè)計的分類器進(jìn)行了測試,重點(diǎn)針對訓(xùn)練樣本的選擇、參數(shù)的影響選擇與優(yōu)化問題進(jìn)行了研究。實(shí)驗(yàn)結(jié)果表明,在應(yīng)用支持向量機(jī)算法做數(shù)據(jù)分類時,選擇合適的訓(xùn)練樣本和參數(shù)有利于提高分類器的準(zhǔn)確度。
支持向量機(jī);Libsvm工具箱;分類器
支持向量機(jī)(Support Vector Machine,SVM)作為基于統(tǒng)計學(xué)習(xí)的一種新的通用機(jī)器學(xué)習(xí)方法,其較以往方法表現(xiàn)出在理論和實(shí)踐上的優(yōu)勢,較好地解決了小樣本、非線性、高維和局部極小等問題,在模式識別、回歸估計,分類等領(lǐng)域都得到了廣泛應(yīng)用[1-2]。支持向量機(jī)方法又稱為核方法,這是因?yàn)楹说恼归_和計算是這一方法的關(guān)鍵。但核函數(shù)的嵌入也成為支持向量機(jī)方法應(yīng)用的缺點(diǎn),如核函數(shù)選擇缺乏理論指導(dǎo),算法參數(shù)難以選擇等。這給SVM在實(shí)際應(yīng)用的推廣帶來了困難,如何得到合適且有效的核函數(shù)及其參數(shù),是采用支持向量機(jī)算法進(jìn)行數(shù)據(jù)分類的關(guān)鍵。
1.1 算法思想
支持向量機(jī)算法的主要思想可以概括為:(1)它針對線性可分情況進(jìn)行分析,而對于線性不可分的情況,通過使用非線性映射算法將低維輸入空間線性不可分的樣本轉(zhuǎn)化為高維特征空間使其線性可分,從而使高維特征空間采用線性算法對樣本的非線性特征進(jìn)行線性分析成為可能。(2)它基于結(jié)構(gòu)風(fēng)險最小化理論,在特征空間中建構(gòu)最優(yōu)分割超平面,使得學(xué)習(xí)器得到全局最優(yōu)化,并在整個樣本空間的期望風(fēng)險以某個概率滿足一定上界。
1.2 原理簡介
支持向量機(jī)基于線性劃分,但可以想象,并非所有數(shù)據(jù)均可線性劃分。如二維空間中的兩個類別的點(diǎn)可能需要一條曲線來劃分其邊界。支持向量機(jī)的原理是將低維空間中的點(diǎn)映射到高維空間中,使其成為線性可分的。再使用線性劃分的原理來判斷分類邊界。在高維空間中,它是一種線性劃分,而在原有的數(shù)據(jù)空間中,它是一種非線性劃分[2]。
有約束問題,一般表達(dá)為
(1)
支持向量機(jī)對于非線性可分的情況,可使用一個非線性函數(shù)φ(x)將數(shù)據(jù)映射到一個高維特征空間,再在高維特征空間建立優(yōu)化超平面,分類函數(shù)變?yōu)?/p>
(2)
通常無法了解φ(x)的具體表達(dá),也難以知曉樣本映射到高維空間后的維數(shù)和分布等情況,不能在高維空間求解超平面;b是分類闕值,可用任意一個支持向量求得,或通過兩類中任意一對支持向量取中值求得。由于SVM理論只考慮高維特征空間的點(diǎn)積運(yùn)算φ(xi)·φ(xj),而點(diǎn)積運(yùn)算可由其對應(yīng)的核函數(shù)直接給出,即K(xi,xj)=φ(xi)·φ(xj)用內(nèi)積K(xi,xj)代替最優(yōu)分類面中的點(diǎn)積,就相當(dāng)于將原特征空間變換到了某一新的特征空間,得到新的優(yōu)化函數(shù)
(3)
求解上述問題后得到的最優(yōu)分類函數(shù)是
(4)
上式中的求和實(shí)際上只對支持向量進(jìn)行。其中核函數(shù)K(xi,x)可有多種形式,常用的有
(1)線性核K(x,y)=(x·y)。
(2)多項式核K(xi,x)=(xi·x+1)d,d是自然數(shù)。
(3)Radial Basis Fuction(RBF)核(徑向基核)
支持向量機(jī)的一個顯著特點(diǎn)是,計算的復(fù)雜度程度與輸入空間映射成的核空間的維數(shù)無關(guān)。因此,就沒有了維數(shù)問題。換言之,人們在高維空間中進(jìn)行設(shè)計,不必使用大量參數(shù)的顯模式,其由空間的高維數(shù)決定。這也對擴(kuò)展性產(chǎn)生了影響,而實(shí)際上SVM具有較好的擴(kuò)展性。
支持向量機(jī)的一個局限是,直到目前為止也沒有最佳方法選擇核函數(shù),這仍是一個未解決的問題。但通常而言,徑向基核函數(shù)不會有過大偏差,對大部分分類問題的效果不會有較大差異,故是首選。
1.3 支持向量機(jī)的一般特性
(1)SVM學(xué)習(xí)問題可表示為凸優(yōu)化問題,因此可利用已知的有效算法發(fā)現(xiàn)目標(biāo)函數(shù)的全局最小值。而其他分類方法都采用一種基于貪心學(xué)習(xí)的策略來搜索假設(shè)空間,這種方法一般只能獲得局部最優(yōu)解。(2)SVM通過最大化決策邊界的邊緣來控制模型的能力。盡管如此,用戶必須提供其他參數(shù),如使用核函數(shù)類型和引入松弛變量等。(3)通過對數(shù)據(jù)中每個分類屬性引入一個啞變量,SVM可應(yīng)用于分類數(shù)據(jù)。(4)SVM一般只能用在二類問題,對于多類問題效果不佳。
2.1 分類器原理
數(shù)據(jù)分類是數(shù)據(jù)挖掘中的一個重要題目。數(shù)據(jù)分類是指在已有分類訓(xùn)練數(shù)據(jù)的基礎(chǔ)上,根據(jù)某種原理,經(jīng)訓(xùn)練形成一個分類器;然后使用分類器判斷測試數(shù)據(jù)的類別[5]。
基于SVM的分類器是一種基于分類邊界的方法。其基本原理是:若訓(xùn)練數(shù)據(jù)分布在二維平面上的點(diǎn),按照其分類聚集在不同的區(qū)域?;诜诸愡吔绲姆诸愃惴ǖ哪繕?biāo)是,通過訓(xùn)練找到這些分類之間的邊界。對于多維數(shù)據(jù),可將其視為N維空間中的點(diǎn),而分類邊界就是N維空間中的面,稱為超面。線性分類器使用超平面類型的邊界,非線性分類器使用超曲面。
線性劃分如圖1所示,可根據(jù)新的數(shù)據(jù)相對于分類邊界的位置來判斷其分類。一般首先討論二分類問題,然后再拓展到多分類問題。
2.2 基于SVM算法的分類器的實(shí)現(xiàn)步驟
(1)將數(shù)據(jù)集轉(zhuǎn)化為SVM支持的格式。(2)數(shù)據(jù)預(yù)處理,將數(shù)據(jù)集的分類屬性值歸一化并選擇訓(xùn)練集和測試集。(3)選擇核函數(shù)類型。(4)采用交叉驗(yàn)證和網(wǎng)格搜索方法尋找最優(yōu)的參數(shù)c和gamma。(5)用最優(yōu)化的參數(shù)訓(xùn)練出分類器。(6)用設(shè)計的分類器進(jìn)行測試[3-6]。
實(shí)驗(yàn)以Matlab為開發(fā)平臺[7],用Libsvm工具箱設(shè)計了一個簡單的分類器,并用公共數(shù)據(jù)庫中的數(shù)據(jù)集為訓(xùn)練樣例和測試樣例,重點(diǎn)對其從訓(xùn)練集的選擇方法,參數(shù)的選擇與優(yōu)化方面進(jìn)行測試與驗(yàn)證。
3.1 數(shù)據(jù)集的劃分
為方便結(jié)果的可視化,本文測試數(shù)據(jù)集的特征向量為二維,共包含210個樣例,其中前100個為正例,后110個為反例。將數(shù)據(jù)集按3種方法劃分出訓(xùn)練集和測試集。取參數(shù)c=16,g=0.01,然后分別對這其進(jìn)行測試,測試結(jié)果如表1所示。
表1 3種數(shù)據(jù)集劃分方法的測試結(jié)果
從實(shí)驗(yàn)結(jié)果可看出,前兩種均分法不佳,這是因訓(xùn)練集包含的正反例涵蓋不全,導(dǎo)致一些特例分類錯誤。第3種分法涵蓋較均勻且全面,分類效果最佳,為方便驗(yàn)證算法參數(shù)的影響,本實(shí)驗(yàn)選擇第3種分法進(jìn)行測試驗(yàn)證。
3.2 參數(shù)c和g的優(yōu)化
剖宮產(chǎn)術(shù)后疼痛主要分為腹部的切口痛、子宮的宮縮痛以及炎性疼痛。切口痛來源于腹部傷口的創(chuàng)傷性刺激,經(jīng)脊髓后角,傳遞到中樞神經(jīng)系統(tǒng),呈持續(xù)存在狀態(tài)。子宮收縮時,神經(jīng)末梢受壓,子宮下段及會陰部擴(kuò)張,產(chǎn)生宮縮痛,為短暫間斷發(fā)作的絞痛。同時,子宮收縮可導(dǎo)致局部血管缺血,組織缺氧,釋放炎癥介質(zhì),導(dǎo)致炎性疼痛。剖宮產(chǎn)術(shù)后疼痛以宮縮痛更為明顯,疼痛一般在術(shù)后12h內(nèi)達(dá)到高峰,24h內(nèi)持續(xù)處于較高水平[2]。
令c=2-5,2-3,…,215,g=2-15,2-13,…,23,采用交叉驗(yàn)證和網(wǎng)格搜索的方法尋找最優(yōu)的參數(shù)bestc和bestg,搜索結(jié)果如圖2所示。得出最好的參數(shù)bestc=23 170,bestg=0.000 244 14,對應(yīng)的準(zhǔn)確率為96.666 7%(58/60)。最優(yōu)的參數(shù)bestc和bestg對應(yīng)的可視化分類結(jié)果如圖3所示。
圖2 交叉驗(yàn)證和網(wǎng)格搜索結(jié)果
圖3 最優(yōu)參數(shù)bestc和bestg的實(shí)驗(yàn)結(jié)果
3.3 參數(shù)c的選擇及影響
固定選取g=0.000 244 14,測試不同參數(shù)c值對應(yīng)的分類準(zhǔn)確度,測試結(jié)果如表1所示。
表1 g=0.002 441 4情況下不同c值對應(yīng)的分類準(zhǔn)確度
參數(shù)c的值在變化過程中的一些典型值對應(yīng)的分類結(jié)果如圖4所示。
圖4 參數(shù)c值在變化過程中一些典型值對應(yīng)的分類結(jié)果
從測試結(jié)果可以看出,懲罰因子c決定了有多重視離群點(diǎn)點(diǎn)來的損失,隨著c值的增大,對目標(biāo)決策函數(shù)的損失也越大,此時則暗示非常不愿放棄這些利群點(diǎn),如果繼續(xù)將c值增大,增大到無窮大時,只要稍有一個點(diǎn)離群,目標(biāo)決策函數(shù)的值就會變?yōu)闊o限大,使問題無解,這樣分類器的分類效果則會很差。
懲罰因子c不是一個變量,整個分類器優(yōu)化過程中,c是一個必須事先制定的值,制定這個值后,解得一個分類器,然后用測試數(shù)據(jù)查看結(jié)果,若不理想,則更換c值再得到一個分類器,再看效果,如此則是一個參數(shù)尋優(yōu)的過程,最終可以求出分類器效果最好的c值。根據(jù)對這些離群點(diǎn)的重視程度來選擇合適的c值,如果對離群點(diǎn)不是很重視,則可選擇個小的c值,若這些離群點(diǎn)重要,則應(yīng)選擇較大c值。
3.4 參數(shù)g的選擇及影響
固定選取c=23 170,測試不同參數(shù)g對應(yīng)的分類準(zhǔn)確度,測試結(jié)果如表2所示。
表2 c=231 70情況下不同g值對應(yīng)的分類準(zhǔn)確度
參數(shù)g在變化過程中典型值對應(yīng)的分類結(jié)果如圖5所示。
圖5 典型g值對應(yīng)的分類結(jié)果
gamma參數(shù)是選擇徑向基函數(shù)作為kernel后,該函數(shù)自帶的參數(shù)。隱含地決定了數(shù)據(jù)映射到新特征空間后的分布。從實(shí)驗(yàn)結(jié)果中雖然無法直接觀測到數(shù)據(jù)映射到新特征空間后的分布情況,但是通過支持向量的變化可以看出gamma參數(shù)對分類器的影響,隨著gamma參數(shù)的增大,分類器的支持向量越多越分散,說明數(shù)據(jù)映射到新特征空間后的分布也越復(fù)雜,從而使目標(biāo)決策函數(shù)越復(fù)雜,影響分類器的分類效果。因此可以通過選擇不同的gamma參數(shù)值來觀測分類器的效果,逐步優(yōu)化gamma參數(shù),最終選擇出最優(yōu)值。
用公共數(shù)據(jù)庫中的數(shù)據(jù)集作為訓(xùn)練樣例和測試樣例,對設(shè)計的基于SVM算法的分類器進(jìn)行了實(shí)驗(yàn),研究了SVM算法中主要參數(shù)c和gamma的物理意義。從實(shí)驗(yàn)結(jié)果可看出,在將SVM算法應(yīng)用于數(shù)據(jù)分類時,參數(shù)c和gamma對結(jié)果的影響仍不容忽視,因此在應(yīng)用時,應(yīng)選擇合適的參數(shù)c和gamma類優(yōu)化分類效果。
[1] Tom M Mitchell.機(jī)器學(xué)習(xí)[M].曾華軍,張銀奎,譯.北京:機(jī)械工業(yè)出版社,2003.
[2] Crist Anne.支持向量機(jī)導(dǎo)論[M].李國正,王猛,曾華軍,譯.北京:電子工業(yè)出版社,2004.
[3] Chih-wei Hsu,Chang Chihchung,Lin Chih Jen.A practical guide to support vector classification[M].Korea:Seoul University,2010.
[4] 徐義田.基于SVM的分類算法與聚類分析[J].煙臺大學(xué)學(xué)報,2004,17(1):9-13.
[5] 楊鐵建.基于支持向量機(jī)的數(shù)據(jù)挖掘技術(shù)研究[D].西安:西安電子科技大學(xué),2005.
[6] 魏蕾,何東健,喬永亮.基于圖像處理和SVM的植物葉片分類研究[J].農(nóng)機(jī)化研究,2013(5):12-17.
[7] 徐金明,張孟喜,丁濤.Matlab實(shí)用教程[M].北京:清華大學(xué)出版社,2008.
Design of a Classifier Based on the SVM Algorithm
WEI Ao
(School of Electronic Engineering,Xidian University,Xi’an 710071,China)
The basic idea of the Support Vector Machine(SVM) algorithm and the concept of data classification is introduced.An analysis of the traditional SVM general characteristics is also made.A classifier based on the SVM algorithm is designed with Libsvm toolbox,and is tested by data set from public databases.The paper focuses on the selection of training samples,as well as the effect and optimization of parameters.The experimental results show that suitable training samples and parameters help to improve the accuracy of the classifier.
SVM;Libsvm toolbox;classifier
2014- 08- 27
危傲(1989—),男,碩士研究生。研究方向:SVM機(jī)器學(xué)習(xí)。E-mail:barry_weiao@hotmail.com
10.16180/j.cnki.issn1007-7820.2015.04.007
TP
A