LibSVM分類的實用指南_第1頁
LibSVM分類的實用指南_第2頁
LibSVM分類的實用指南_第3頁
LibSVM分類的實用指南_第4頁
LibSVM分類的實用指南_第5頁
已閱讀5頁,還剩10頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、.LibSVM分類的實用指南摘要SVMsupport vector machine是一項流行的分類技術。然而,初學者由于不熟悉SVM,常常得不到滿意的結果,原因在于喪失了一些簡單但是非常必要的步驟。在這篇文檔中,我們給出了一個簡單的操作流程,得到合理的結果。譯者注:本文中大部分SVM實際指的是LibSVM1入門知識SVM是一項非常實用的數據分類技術。雖然SVM比起神經網絡Neural Networks要相對容易一些,但對于不熟悉該方法的用戶而言,開場階段通常很難得到滿意的結果。這里,我們給出了一份指南,根據它可以得到合理結果。需要注意,此指南不適用SVM的研究者,并且也不保證一定可以獲得最高精

2、度結果。同時,我們也沒有打算要解決有挑戰性的或者非常復雜的問題。我們的目的,僅在于給初學者提供快速獲得可承受結果的秘訣。雖然用戶不是一定要深化理解SVM背后的理論,但為了后文解釋操作過程,我們還是先給出必要的根底的介紹。一項分類任務通常將數據劃分成訓練集和測試集。訓練集的每個實例,包含一個目的值target value例如,分類標注和一些屬性attribute例如,特征或者觀測變量。SVM的目的是基于訓練數據產出一個模型model,用來預測只給出屬性的測試數據的目的值。給定一個訓練集,實例-標注對,支持向量機需要解決如下的優化問題:在這里,訓練向量xi通過函數被映射到一個更高維甚至有可能無窮維

3、空間。SVM在這個高維空間里尋找一個線性的最大間隔的超平面。C 0是分錯項的懲罰因子penalty parameter of the error term。被稱之為核函數kernel function。新的核函數還在研究中,初學者可以在SVM書中找到如下四個最根本的核函數:線性、多項式、徑向基函數、S型1.1實例表1是一些現實生活中的實例。這些數據集是由我們的用戶提供的,其開場時無法獲得理想精度的結果。使用了本指南描繪的過程后,我們幫助他們獲得了更好的性能。這些數據集都在:建議流程許多初學者使用如下的步驟:將數據轉換成SVM程序包的格式隨機的嘗試一些核函數和參數測試而我們建議初學者先嘗試如下的

4、步驟:將數據轉換成SVM格式包的格式對數據進展簡單的縮放處理scaling考慮RBF核:使用穿插驗證cross-validation尋找最正確參數C和使用最正確參數C和來訓練整個訓練集測試值得一提的是,最正確參數是受數據集的大小影響的,但在理論中,從穿插驗證中獲得的最正確參數已經適用于整個訓練集。后面章節,我們將詳細討論這些步驟。2數據預處理2.1類別特征SVM需要每個實例的特征集,是用實數向量表示。因此,假設存在類別屬性,我們首先將它們轉變成數值。推薦使用m個數值特征來表示m類的屬性。每個數值表示其中一個類別為1,其它類為0。例如,一個三類屬性red,green,blue,可以表示成0,0,

5、1,0,1,0,1,0,0。我們的經歷說明,假設屬性的數值不是太大,這樣分解成多特征比直接將類別屬性當做數值使用的效果要穩定。2.2縮放應用SVM之前,縮放是非常重要的。Sarle的神經網絡FAQ的第二部分1997闡述了縮放的重要性,大多數本卷須知也適用于SVM。縮放的最主要優點是可以防止大數值區間的屬性過分支配了小數值區間的屬性。另一個優點能防止計算過程中數值復雜度。因為關鍵值通常依賴特征向量的內積inner products,例如,線性核和多項式核力,屬性的大數值可能會導致數值問題。我們推薦將每個屬性線性縮放到區間-1,+1或者0,1。當然,我們必須使用同樣的方法縮放訓練數據和測試數據。例

6、如,假設我們把訓練數據的第一個屬性從-10,+10縮放到-1,+1,那么假設測試數據的第一個屬性屬于區間-11,+8,我們必須將測試數據轉變成-1.1,+0.8。附錄B中有一個實例可參考。3模型選擇雖然章節一中只有四個常用核函數,但我們必須決定哪一個是首選。然后是懲罰因子C和核參數的選擇。3.1 RBF核通常而言,RBF核是合理的首選。這個核函數將樣本非線性地映射到一個更高維的空間,與線性核不同,它可以處理分類標注和屬性的非線性關系。并且,線性核是RBF的一個特例Keerthi and Lin 2003,因此,使用一個懲罰因子C的線性核與某些參數C,的RBF核具有一樣的性能。同時,Sigmoi

7、d核的表現很像一定參數的RBF核Lin and Link 2003。第二個原因,超參數hyperparameter的數量會影響到模型選擇的復雜度因為參數只能靠試驗呀!。多項式核比RBF核有更多的超參數。最后,RBF核有更少的數值復雜度numerical difficulties。一個關鍵點0 Kij=1比照多項式核,后者關鍵值需要infinityrxiTxj+r 1或者zerorxiTxj+r 1,這是高階運算。此外,我們必須指出sigmoid核在某些參數下不是合法的例如,不是兩個向量的內積。Vapnik 1995當然,也存在一些情形RBF核是不適用的。特別地,當特征維數非常大的時候,很可能只

8、能適用線性核。在附錄C中有詳細討論。3.2穿插驗證和網格搜索RBF核有兩個參數:C和。對于給定的問題,我們無法事先知道哪個C和是最正確的;因此,一些模型選擇參數搜索是必不可少的。目的是確定goodC,,使得分類器可以準確地預測未知數據例如,測試數據。然而這不一定對獲得高準確率訓練有好處。如上討論,通常的做法是將數據集合劃分成兩部分,其中一部分假設是未知分類的。從未知數據集上獲得的預測準確率可以更準確地反映出分類器在獨立數據集合上的性能/效果。這種做法的一個改進版本就是穿插驗證cross-validation。在v折穿插驗證v-fold cross-validation中,我們首先將訓練集合劃分

9、成一樣大小的v個子集。然后將其中一個子集作為測試集,其他v-1個子集作為訓練集訓練分類器。如此,整個訓練集中的每個實例都會被預測一次,因此,穿插驗證的準確率等于可以被正確分類的數量百分比。穿插驗證的方法可以防止過擬合overfitting問題。圖1通過一個二分類問題來說明這個問題。實心圓和三角是訓練數據,而空心圓和三角是測試數據。在圖1a和1b中的分類器的測試準確率不好就是因為它對訓練數據過擬合了。假設我們考慮將圖1a和1b的訓練和測試數據分別作為穿插驗證的訓練和校驗集合,顯然這個準確率是不好的。另一方面,在圖1c和1d的分類器那么沒有對訓練數據過擬合,從而可以得到更好的測試準確率和穿插驗證的

10、準確率。在使用穿插驗證的方法確定參數C和時,我們推薦一種網格搜索grid-search。不同的參數值對C,被試驗著,其中一個可以得到最高的穿插驗證準確率。我們發現使用一些指數增長序列的C和是一個確定好參數的很實用技巧例如,C=2-5,2-3,.,215,=2-15,2-13,.,23。網格搜索是一個簡單且樸素的方法。事實上,有其他更高級的方法可以節省計算本錢,例如近似逼近穿插驗證率approximating the cross-validation rate。然而,有兩個原因讓我們更傾向于這個簡單的網格搜索方法。一方面,在心理上,我們會覺得通過近似法或者啟發式而不沒有詳細的參數搜索的方法不平安

11、。另一方面,網格搜索尋找最正確參數的計算時間并不會比其他高級方法多很多,主要是因為只有兩個參數需要確定。進一步而言,網格搜索可以很容易并行化因為每個C,是獨立的。許多高級方法是一個迭代過程例如walking along apath,很難并行化。由于做一次完好的網格搜索還是挺費時的,所以我們推薦首先使用一個粗糙的網格。在確定網格中一個更好區域后,可以在這個區域中執行更好的網格搜索。為了更好說明,我們做了一個實驗,數據集來自german from the Statlog collectionMichie et al.,1994。在對數據集縮放之后,我們先使用一個粗糙的網格如圖2,找到最好的C,是2

12、3,2-5,穿插驗證的正確率可以到達77.5%。然后,我們在23,2-5臨近區域進展了一次更好的網格搜索如圖3,獲得了一個更好的穿插驗證的正確率77.6%,參數為23.25,2-5.25。在最好的C,找到以后,可以在整個訓練集上再次訓練產出最終的分類器。上述的方法對于上千或更多數據規模的問題上可以工作的很好。而對于超大數據集合而言,一個可行的方法是隨機抽取一個子集,運行網格搜索,找到最正確區域,然后在該區域上針對數據全集進展網格搜索。4討論在某些情況下,上述方法不一定足夠好,因此其他技術如特征選取可能就不可少了。而這些議題超出本指南的范疇了。我們的實驗說明,這個方法在特征不是很多的情況下可以工

13、作的很好。假設有幾千維的屬性,那么在使用SVM時可能就需要先選取屬性的子集了。5附錄A:推薦過程的實例在這個附錄中我們使用了一般初學者通常使用的推薦過程來比較了準確率。實驗使用LIBSVM軟件,處理表1中提到的三個問題。對于每個問題,我們首先給出直接訓練和測試的準確率。其次,我們展示一下在是否有縮放之后的準確率差異。從2.2節中討論的,訓練數據的屬性的區間必須保存,如此我們才可以在縮放了測試數據之后還可以復原。第三,給出了使用了推薦步驟包括縮放和模型選擇后的準確率。最后,我們示范了一下使用LIBSVM的工具自動處理整個過程。注意,一個類似的參數選擇工具grid.py在R-LIBSVM中也是可利

14、用的。5.1天文粒子物理Astroparticle Physics原始數據集,使用缺省參數:$./svm-train svmguide1$./svm-predict svmguide1.t svmguide1.model svmguide1.t.predictAccuracy=66.925%縮放數據集,只使用缺省參數:$./svm-scale-l-1-u 1-s range1 svmguide1 svmguide1.scale$./svm-scale-r range1 svmguide1.t svmguide1.t.scale$./svm-train svmguide1.scale$./svm

15、-predict svmguide1.t.scale svmguide1.scale.model svmguide1.t.predictAccuracy=96.15%縮放數據集并且進展參數選擇tools目錄下有grid.py:$python grid.py svmguide1.scale2.0 2.0 96.8922Best:C=2.0,=2.0 with five-fold cross-validation rate=96.8922%$./svm-train-c 2-g 2svmguide1.scale$./svm-predict svmguide1.t.scale svmguide1.sc

16、ale.model svmguide1.t.predictAccuracy=96.875%使用自動腳本:$python easy.py svmguide1 svmguide1.t Scaling training data.Cross validation.Best c=2.0,g=2.0 Training.Scaling testing data.Testing.Accuracy=96.875%3875/4000classification5.2生物信息學Bioinformatics原始數據集使用缺省參數:$./svm-train-v 5svmguide2Cross Validation A

17、ccuracy=56.5217%縮放數據集只使用缺省參數:$./s vm-scale-l-1-u 1svmguide2 svmguide2.scale$./svm-train-v 5svmguide2.scaleCross Validation Accuracy=78.5166%縮放數據集且使用參數選擇:$python grid.py svmguide2.scale2.0 0.5 85.1662Cross Validation Accuracy=85.1662%Best C=2.0,=0.5 with five fold cross-validation rate=85.1662%使用自動腳本

18、:$python easy.py svmguide2 Scaling training data.Cross validation.Best c=2.0,g=0.5 Training.5.3交通工具Vehicle原始數據集,使用缺省參數:$./svm-train svmguide3$./svm-predict svmguide3.t svmguide3.model svmguide3.t.predictAccuracy=2.43902%縮放數據集,只使用缺省參數:$./svm-scale-l-1-u 1-s range3 svmguide3 svmguide3.scale$./svm-scal

19、e-r range3 svmguide3.t svmguide3.t.scale$./svm-train svmguide3.scale$./svm-predict svmguide3.t.scale svmguide3.scale.model svmguide3.t.predictAccuracy=12.1951%縮放數據集,并使用參數選擇:$python grid.py svmguide3.scale128.0 0.125 84.8753Best C=128.0,=0.125 with five-fold cross-validation rate=84.8753%$./svm-train

20、-c 128-g 0.125 svmguide3.scale$./svm-predict svmguide3.t.scale svmguide 3.scale.model svmguide3.t.predict!Accuracy=87.8049%使用自動腳本:$python easy.py svmguide3 svmguide3.t Scaling training data.Cross validation.Best c=128.0,g=0.125 Training.Scaling testing data.Testing.Accuracy=87.8049%36/41classificati

21、on6附錄B:縮放訓練和測試數據時的常見錯誤第2.2節中已經強調了對訓練數據和測試數據要使用一樣縮放比例因子的重要性。這里我們給出一個實際例子:交通信號燈的分類問題。數據可以在LIBSVM中獲取。假設訓練集合測試集被分別縮放到0,1區間,那么結果的準確率低于70%。$./svm-scale-l 0svmguide4 svmguide4.scale$./svm-scale-l 0svmguide4.t svmguide4.t.scale$python easy.py svmguide4.scale svmguide4.t.scale Accuracy=69.2308%216/312classif

22、ication而對訓練集和測試集使用一樣的縮放比例因子,我們可以獲得高的多的準確率。$./svm-scale-l 0-s range4 svmguide4 svmguide4.scale$./svm-scale-r range4 svmguide4.t svmguide4.t.scale$python easy.py svmguide4.scale svmguide4.t.scale Accuracy=89.4231%279/312classification使用正確的設置,svmguide4.t.scale中的10個特征的最大值如下:0.7402,0.4421,0.6291,0.8583,0

23、.5385,0.7407,0.3982,1.0000,0.8218,0.9874顯然,前一個方法對測試集的縮放到0,1生成的是一個錯誤數據集。7附錄C:何時使用線性核而不是RBF核假設特征的數量很大,一種方法是沒有必要將數據集映射到更高維空間。也就是說,非線性映射并不可以提升性能。使用線性核linear kernel已經足夠好了,并且只需要搜索試驗出一個參數C即可。3.1節中描繪的RBF核可以致少和線性核一樣好的觀點是建立在已經搜索到適宜的參數C,空間。接下來,我們分成3部分進展討論。7.1實例數特征數生物信息學中的許多微陣列數據都屬于這類型。我們以一份數據為例:白血病數據。其中訓練集和測試集

24、分別有38、34個實例,特征有7129個,遠大于實例數。我們合并了兩個文件,分別使用RBF核和線性核,來比較了穿插校驗的準確率。RBF核,帶有參數選擇過程:$cat leu leu.t leu bined$python grid.py leu bined8.0 3.0517578125 e-05 97.2222Best C=8.0,=0:000030518 with five-fold cross-validation rate=97.2222%線性核,帶有參數選擇過程:$python grid.py-log2c-1,2,1-log2g 1,1,1-t 0leu bined0.5 2.0 98

25、.6111Best C=0.5 with five-fold cross-validation rate=98.61111%雖然grid.py是為RBF核設計的,但上面的方法也可以對線性核進展不同C的檢測-log2g 1,1,1實際上是設置了一個虛擬的。可以看到,使用線性核和RBF核其穿插驗證的準確率是相當的。顯然,當特征數非常大時,其中一種方式就是無需再映射數據了。除了LIBSVM,在這個實例中,下文提到的LIBLINEAR也是非常有效的工具。7.2實例數和特征數都很大這類數據通常出如今文本分類中。LIBSVM對這類問題不是非常好用。幸運的是,我們有另一款工具LIBLINEAR,非常適宜這類數據。我們舉例說明在文本分類中LIBSVM和LIBLINEAR的差異,數據集來自LIBSVM中的rcv1_train.binary。實例數有20242,特征數有47236個。$time libsvm-2.85/svm-train-c 4-t 0-e 0.1-m 800-v 5rcv1_train.binary Cross Validation Accuracy=96.8136%345.569 s$time liblinear-1.21/train

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論