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