支持向量机libsvm实战入门
一、libsvm介紹
????SVM支持向量機(jī)是目前比較流行的一種數(shù)據(jù)挖掘方法,能夠處理較高維度,具體介紹可參考這篇博文:
支持向量機(jī)通俗導(dǎo)論(理解SVM的三層境界)
????LIBSVM是臺灣大學(xué)林智仁(Lin Chih-Jen)教授等開發(fā)設(shè)計的一個簡單、易于使用和快速有效的SVM模式識別與回歸的軟件包,他不但提供了編譯好的可在Windows系列系統(tǒng)的執(zhí)行文件,還提供了源代碼,方便改進(jìn)、修改以及在其它操作系統(tǒng)上應(yīng)用;該軟件對SVM所涉及的參數(shù)調(diào)節(jié)相對比較少,提供了很多的默認(rèn)參數(shù),利用這些默認(rèn)參數(shù)可以解決很多問題;并提供了交互檢驗(Cross Validation)的功能。
????軟件下載地址http://www.csie.ntu.edu.tw/~cjlin/libsvm/#java,最新版3.2.0
????這里我們使用JAVA版本的,主要就是svm_scale,svm_train,svm_predict這三個程序,只要安裝了JDK就可以使用如下命令運行
java?-classpath?libsvm.jar?svm_scale?+參數(shù) java?-classpath?libsvm.jar?svm_train?+參數(shù) java?-classpath?libsvm.jar?svm_predict?+參數(shù)?
二、數(shù)據(jù)準(zhǔn)備
????LibSVM使用的數(shù)據(jù)格式為<label> <index1>:<value1> <index2>:<value2> …,label表示分類,index表示第幾個變量/特征,軟件官網(wǎng)已提供了大量符合數(shù)據(jù)格式要求的數(shù)據(jù)集供我們下載:
http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/
?
????下載其中名為usps的數(shù)據(jù)集,如圖所示,該數(shù)據(jù)集分成了10類,訓(xùn)練樣本7291,測試樣本2007,屬性(變量)256個
三、數(shù)據(jù)縮放(歸一化)
svm-scale幫助提示
歸一化后的數(shù)據(jù)默認(rèn)顯示在控制臺上所以我們要重定向到文件里保存
表示將usps訓(xùn)練集進(jìn)行縮放(默認(rèn)的規(guī)則),將縮放后的數(shù)據(jù)結(jié)果重定向輸出到scale,并將這個縮放規(guī)則存儲在1.txt中以便后面繼續(xù)使用。
四、?訓(xùn)練并生成模型
svm-train幫助提示
將歸一化后的數(shù)據(jù)文件scale訓(xùn)練成模型保存在model文件中,訓(xùn)練過程如下
生成的模型文件如下所示:
五、利用模型進(jìn)行預(yù)測
svm_predict幫助提示
利用第三步生成的模型對測試數(shù)據(jù)usps.t進(jìn)行預(yù)測,預(yù)測結(jié)果保存在output文件中。
生成的預(yù)測結(jié)果文件output中直接是測試集中每個樣本的分類。
注:
svm_toy小程序
彈出一個圖形窗口自己可以在上面繪制不同顏色的點進(jìn)行測試
注:
One Class SVM 是指你的training data 只有一類positive (或者negative)的data, 而沒有另外的一類。在這時,你需要learn的實際上你training data 的boundary。而這時不能使用 maximum margin 了,因為你沒有兩類的data。 所以呢,在這邊文章中,“Estimating the support of a high-dimensional distribution”, Schlkopf 假設(shè)最好的boundary要遠(yuǎn)離feature space 中的原點。
左邊是在original space中的boundary,可以看到有很多的boundary 都符合要求,但是比較靠譜的是找一個比較 緊(closeness) 的boundary (紅色的)。這個目標(biāo)轉(zhuǎn)換到feature space 就是找一個離原點比較遠(yuǎn)的boundary,同樣是紅色的直線。當(dāng)然這些約束條件都是人為加上去的,你可以按照你自己的需要采取相應(yīng)的約束條件,比如讓你data的中心離原點最遠(yuǎn)。
?
參考文章:
http://www.tanglei.name/an-example-for-beginning-to-learn-libsvm/
別人翻譯的README里面命令參數(shù)詳解
http://blog.sina.com.cn/s/blog_4c38701d01011ept.html
libsvm 參數(shù)說明【中英文雙語版本】
http://www.matlabsky.com/forum-viewthread-tid-12380-fromuid-18677.html
本文出自 “點滴積累” 博客,請務(wù)必保留此出處http://tianxingzhe.blog.51cto.com/3390077/1655672
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的支持向量机libsvm实战入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ES6优缺点
- 下一篇: android L 关机流程图