1. 程式人生 > >LIBSVM簡介及其使用方法

LIBSVM簡介及其使用方法

libsvm 官方網站:Welcome to Chih-Jen Lin's Home Page 
http://www.csie.ntu.edu.tw/~cjlin/ 
http://www.csie.ntu.edu.tw/~cjlin/libsvm /index.html#nuandone 
可以在此網站下載 相關軟體 。

seleced from: http://blog.csdn.net/mirror_hc/archive/2008/03/26/2221207.aspx 

支援向量 機所涉及到的數學知識對一般的化學研究 者來說是比較難的,自己程式設計實現該演算法 難度就更大了。但是現在的網路 資源非常發達,而且國際上的科學研究者把他們的研究成果已經放在網路上,免費提供給用於研究目的,這樣方便大多數的研究者,不必要花費大量的時間
 理解SVM演算法的深奧數學原理和計算機程式 設計。目前有關SVM計算的相關軟體有很多,如LIBSVM、mySVM、SVMLight等,這些軟體大部分的免費下載地址 和簡單介紹都可以在http: //www.kernel-machines.org/上獲得。
LIBSVM是臺灣大學林智仁(Lin Chih-Jen)副教授等開發 設計的一個簡單、易於使用和快速有效的SVM模式識別 與迴歸 的軟體包,他不但提供了編譯好的可在Windows系列系統 的執行檔案 ,還提供了源程式碼 ,方便改進、修改以及在其它作業系統上應用 ;該軟體還有一個特點,就是對SVM所涉及的引數調節相對比較少,提供了很多的預設引數,利用這些預設引數就可以解決
 很多問題;並且提供了互動檢驗(Cross Validation)的功能。該軟體包可以在http://www.csie.ntu.edu.tw/~cjlin/ 免費獲得。該軟體可以解決C- SVM分類 、-SVM分類、-SVM迴歸和-SVM迴歸等問題,包括基於一對一演算法的多類模式識別問題。在第2章中我們也介紹了該軟體的一些優點,因此通過綜合考慮,我們決定採用該軟體作為工作軟體。SVM用於模式識別或迴歸時,SVM方法及其引數、核函式 及其引數的選擇,目前國際上還沒有形成一個統一的模式,也就是說最優SVM演算法引數選擇還只能是憑藉經驗、實驗對比、大範圍的搜尋或者利用軟體包提供的互動檢驗功能進行尋優。
LIBSVM使用方法
LibSVM是以原始碼和可執行檔案兩種方式給出的。如果是Windows系列作業系統,可以直接使用軟體包提供的程式,也可以進行修改編譯;如果是Unix類系統,必須自己編譯,軟體包中提供了編譯格式
 檔案,我們在SGI工作站(作業系統IRIX6.5)上,使用免費編譯器GNU C++3.3編譯通過。
LIBSVM使用的資料 格式
該軟體使用的訓練資料和檢驗資料檔案格式如下:
<label> <index1>:<value1> <index2>:<value2> ...
其中<label> 是訓練資料集的目標值,對於分類,它是標識某類的整數(支援多個類);對於迴歸,是任意實數。<index> 是以1開始的整數,可以是不連續的;<value>為實數,也就是我們常說的自變數。檢驗資料檔案中的label只用於計算準確度或誤差,如 果它是未知的,只需用一個數填寫這一欄,也可以空著不填。在程式包中,還包括有一個訓練資料例項:heart_scale,方便參考資料檔案格式以及練習 使用軟體。
可以編寫小程式,將自己常用的資料格式轉換成這種格式
Svmtrain和Svmpredict的用法
LIBSVM軟體提供的各種功能都是DOS命令執行方式。我們主要用到兩個程式,svmtrain(訓練建模)和svmpredict(使用已有的模型 進行預測 ),下面分別對這兩個程式的使用方法、各引數的意義以及設定方法做一個簡單介紹:
Svmtrain的用法:svmtrain [options] training_set_file [model_file]
Options:可用的選項即表示的涵義如下
-s svm型別:SVM設定型別(預設0)
0 -- C-SVC
1 --v-SVC
2 – 一類SVM
3 -- e -SVR
4 -- v-SVR
-t 核函式型別:核函式設定型別(預設2)
0 – 線性:u'v
1 – 多項式:(r*u'v + coef0)^degree
2 – RBF函式:exp(-r|u-v|^2)
3 –sigmoid:tanh(r*u'v + coef0)
-d degree:核函式中的degree設定(預設3)
-g r(gama):核函式中的函式設定(預設1/ k)
-r coef0:核函式中的coef0設定(預設0)
-c cost:設定C-SVC, -SVR和-SVR的引數(預設1)
-n nu:設定-SVC,一類SVM和- SVR的引數(預設0.5)
-p e:設定 -SVR 中損失函式的值(預設0.1)
-m cachesize:設定cache記憶體大小,以MB為單位(預設40)
-e :設定允許的終止判據(預設0.001)
-h shrinking:是否使用啟發式,0或1(預設1)
-wi weight:設定第幾類的引數C為weightC(C-SVC中的C)(預設1)
-v n: n-fold互動檢驗模式
其中-g選項中的k是指輸入資料中的屬性數。option -v 隨機地將資料剖分為n部分並計算互動檢驗準確度和均方根誤差。以上這些引數設定可以按照SVM的型別和核函式所支援的引數進行任意組合,如果設定的引數在 函式或SVM型別中沒有也不會產生影響,程式不會接受該引數;如果應有的引數設定不正確,引數將採用預設值。training_set_file是要進行 訓練的資料集;model_file是訓練結束後產生的模型檔案,檔案中包括支援向量樣本數、支援向量樣本以及lagrange係數等必須的引數;該引數 如果不設定將採用預設的檔名,也可以設定成自己慣用的檔名。
Svmpredict的用法:svmpredict test_file model_file output_file
model_file是由svmtrain產生的模型檔案;test_file是要進行預測的資料檔案;Output_file是svmpredict的輸出檔案。svm-predict沒有其它的選項。
svmtrain -s 0 -c 1000 -t 1 -g 1 -r 1 -d 3 data_file
訓練一個由多項式核(u'v+1)^3和C=1000組成的分類器。
svmtrain -s 1 -n 0.1 -t 2 -g 0.5 -e 0.00001 data_file
在RBF核函式exp(-0.5|u-v|^2)和終止允許限0.00001的條件下,訓練一個-SVM ( = 0.1)分類器。
svmtrain -s 3 -p 0.1 -t 0 -c 10 data_file
以線性核函式u'v和C=10及損失函式= 0.1求解SVM迴歸。
附錄1:LIBSVM的簡單介紹
1. LIBSVM 軟體包簡介 
LIBSVM 是臺灣大學林智仁(Chih-Jen Lin)博士等開發設計的一個操作簡單、易於使用、快速有效的通用SVM 軟體包,可以解決分類問題(包括C- SVC、n - SVC )、迴歸問題(包括e - SVR、n - SVR )以及分佈估計(one-class-SVM )等問題,提供了線性、多項式、徑向基和S形函式四種常用的核函式供選擇,可以有效地解決多類問題、交叉驗證選擇引數、對不平衡樣本加權、多類問題的概率 估計等。LIBSVM 是一個開源的軟體包,需要者都可以免費的從作者的個人主頁http://www.csie.ntu.edu.tw/~cjlin/ 處獲得。他不僅提供了LIBSVM的C++語言的演算法原始碼,還提供了Python、Java、R、MATLAB、Perl、Ruby、LabVIEW以 及C#.net 等各種語言的介面,可以方便的在Windows 或UNIX 平臺下使用,也便於科研工作者根據自己的需要進行改進(譬如設計使用符合自己特定問題需
要的核函式等)。另外還提供了WINDOWS 平臺下的視覺化操作工具 SVM-toy,並且在進行模型引數選擇時可以繪製出交叉驗證精度的等高線圖。
2. LIBSVM 使用方法簡介
LIBSVM 在給出原始碼的同時還提供了Windows作業系統下的可執行檔案,包括:進行支援向量機 訓練的svmtrain.exe;根據已獲得的支援向量機模型對資料集進行預測的svmpredict.exe;以及對訓練資料與測試資料進行簡單縮操作的svmscale.exe。它們都可以直接在DOS 環境中使用。如果下載的包中只有C++
的原始碼,則也可以自己在VC等軟體上編譯生成可執行檔案。
LIBSVM 使用的一般步驟是:
1) 按照LIBSVM軟體包所要求的格式準備資料集;
2) 對資料進行簡單的縮放操作;
3) 考慮選用RBF 核函式2 K(x,y) e x y = -g - ;
4) 採用交叉驗證選擇最佳引數C與g ;
5) 採用最佳引數C與g 對整個訓練集進行訓練獲取支援向量機模型;
6) 利用獲取的模型進行測試與預測。
一. LIBSVM 使用的資料格式
LIBSVM使用的訓練資料和測試資料檔案格式如下:
: :< 2> …
其中 是訓練資料集的目標值,對於分類,它是標識某類的整數(支援
多個類);對於迴歸,是任意實數。
是以1 開始的整數,表示特徵 的序號;
為實數,也就是我們常說的特徵值或自變數。當特徵值為0 時,特徵序號與特徵值都可以同時省略,即index可以是不連續的自然數。
與第一個特徵序號、前一個特徵值與後一個特徵序號之間用空格隔開。測試資料檔案中的label 只用於計算準確度或誤差,如果它是未知的,只需用任意一個數填寫這一欄,也可以空著不填。例如:
+1 1:0.708 2:1 3:1 4:-0.320 5:-0.105 6:-1 8:1.21
二. svmscale 的用法
對資料集進行縮放的目的在於:
1)避免一些特徵值範圍過大而另一些特徵值範圍過小;
2)避免在訓練時為了計算核函式而計算內積的時候引起數值計算的困難。因此,通常將資料縮放到[ -1,1]或者是[0,1]之間。
用法:svmscale [-l lower] [-u upper] [-y y_lower y_upper]
[-s save_filename] [-r restore_filename] filename
(預設值: lower = -1,upper = 1,沒有對y進行縮放)
其中,
-l:資料下限標記;lower:縮放後資料下限;
-u:資料上限標記;upper:縮放後資料上限;
-y:是否對目標值同時進行縮放;y_lower為下限值,y_upper為上限值;
-s save_filename:表示將縮放的規則儲存為檔案save_filename;
-r restore_filename:表示將縮放規則檔案restore_filename載入後按此縮放;
filename:待縮放的資料檔案(要求滿足前面所述的格式)。
縮放規則檔案可以用文字瀏覽器開啟,看到其格式為:
lower upper
lval1 uval1
lval2 uval2
其中的lower 與upper 與使用時所設定的lower 與upper 含義相同;index 表
示特徵序號;lval 為該特徵對應轉換後下限lower 的特徵值;uval 為對應於轉換後上限upper 的特徵值。
資料集的縮放結果在此情況下通過DOS視窗輸出,當然也可以通過DOS的
檔案重定向符號“>”將結果另存為指定的檔案。
使用例項:
1) svmscale –s train3.range train3>train3.scale
表示採用預設值(即對屬性值縮放到[ -1,1]的範圍,對目標值不進行縮放)
對資料集train3 進行縮放操作,其結果縮放規則檔案儲存為train3.range,縮放集的縮放結果儲存為train3.scale。
2) svmscale –r train3.range test3>test3.scale
表示載入縮放規則train3.range 後按照其上下限對應的特徵值和上下限值線
性的地對資料集test3 進行縮放,結果儲存為test3.scale。
三. svmtrain 的用法
svmtrain實現對訓練資料集的訓練,獲得SVM模型。
用法: svmtrain [options] training_set_file [model_file]
其中,
options(操作引數):可用的選項即表示的涵義如下所示
-s svm型別:設定SVM 型別,預設值為0,可選型別有:
0 -- C- SVC
1 -- n - SVC
2 -- one-class-SVM
3 -- e - SVR
4 -- n - SVR
-t 核函式型別:設定核函式型別,預設值為2,可選型別有:
0 -- 線性核:u'*v
1 -- 多項式核: (g*u'*v+ coef 0)deg ree
2 -- RBF 核:e( u v 2) g -
3 -- sigmoid 核:tanh(g*u'*v+ coef 0)
-d degree:核函式中的degree設定,預設值為3; -g g :設定核函式中的g ,預設值為1/ k ;
-r coef 0:設定核函式中的coef 0,預設值為0;
-c cost:設定C- SVC、e - SVR、n - SVR中從懲罰係數C,預設值為1;
-n n :設定n - SVC、one-class-SVM 與n - SVR 中引數n ,預設值0.5;
-p e :設定n - SVR的損失函式中的e ,預設值為0.1;
-m cachesize:設定cache記憶體大小,以MB為單位,預設值為40;
-e e :設定終止準則中的可容忍偏差,預設值為0.001;
-h shrinking:是否使用啟發式,可選值為0 或1,預設值為1;
-b 概率估計:是否計算SVC或SVR的概率估計,可選值0 或1,預設0;
-wi weight:對各類樣本的懲罰係數C加權,預設值為1;
-v n:n折交叉驗證模式。
其中-g選項中的k是指輸入資料中的屬性數。操作引數 -v 隨機地將資料剖分為n 部分並計算交叉檢驗準確度和均方根誤差。以上這些引數設定可以按照SVM 的型別和核函式所支援的引數進行任意組合,如果設定的引數在函式或SVM 型別中沒有也不會產生影響,程式不會接受該引數;如果應有的引數設定不正確,引數將採用預設值。training_set_file是要進行訓練的資料 集;model_file是訓練結束後產生的模型檔案,該引數如果不設定將採用預設的檔名,也可以設定成自己慣用的檔名。
使用例項:
1)svmtrain train3.scale train3.model
訓練train3.scale,將模型保存於檔案train3.model,並在dos視窗中輸出如下
結果:
optimization finished, #iter = 1756
nu = 0.464223
obj = -551.002342, rho = -0.337784
nSV = 604, nBSV = 557
Total nSV = 604
其中,#iter為迭代次數,nu 與前面的操作引數-n n 相同,obj為SVM檔案
轉換為的二次規劃求解得到的最小值,rho 為判決函式的常數項b,nSV 為支援
向量個數,nBSV為邊界上的支援向量個數,Total nSV為支援向量總個數。
訓練後的模型儲存為檔案train3.model,用記事本等文字瀏覽器開啟可以看到其內容如下(其後“%”後內容為筆者所加註釋):
svm_type c_svc % 訓練所採用的svm型別,此處為C- SVC
kernel_type rbf % 訓練採用的核函式型別,此處為RBF核
gamma 0.047619 % 與操作引數設定中的g 含義相同
nr_class 2 % 分類時的類別數,此處為兩分類問題
total_sv 604 % 總共的支援向量個數
rho -0.337784 % 決策函式中的常數項b
label 0 1 % 類別標籤
nr_sv 314 290 % 各類別標籤對應的支援向量個數
SV % 以下為支援向量
1 1:-0.963808 2:0.906788 ... 19:-0.197706 20:-0.928853 21:-1
1 1:-0.885128 2:0.768219 ... 19:-0.452573 20:-0.980591 21:-1
... ... ...
1 1:-0.847359 2:0.485921 ... 19:-0.541457 20:-0.989077 21:-1
% 對於分類問題,上面的支援向量的各列含義與訓練資料集相同;對於迴歸問題,略有不同,與訓練資料中的標籤label(即y值)所對應的位置在模型檔案的支援向量中現在存放的是Lagrange 係數a 值,即為下面決策函式公式中的a 值:
* *
1
() ( )( ( ) ( )) ( ) ( , )
( , )
k
i i i i i i
i i sv
i i
i sv
fx a a x x b a a k x x b
ak x x b
=   = - F F + = - +
= + g
四. svmpredict 的用法
svmpredict 是根據訓練獲得的模型,對資料集合進行預測。
用法:svmpredict [options] test_file model_file output_file
options(操作引數):
-b probability_estimates:是否需要進行概率估計預測,可選值為0 或者1,
預設值為0。
model_file 是由svmtrain 產生的模型檔案;test_file 是要進行預測的資料文
件;output_file 是svmpredict 的輸出檔案,表示預測的結果值。svmpredict 沒有
其它的選項。

相關推薦

LIBSVM簡介及其使用方法

libsvm 官方網站:Welcome to Chih-Jen Lin's Home Page http://www.csie.ntu.edu.tw/~cjlin/ http://www.csie.ntu.edu.tw/~cjlin/libsvm /index.html#nuandone 可以在此網站下載 相

RabbitMQ簡介及其使用方法

一 、RabbitMQ簡介RabbitMQ是基於AMQP實現的一個開源訊息元件,主要用於在分散式系統中儲存轉發訊息,由因高效能、高可用以及高擴充套件而出名的 Erlang 寫成。其中,AMQP(Advanced Message Queuing Protocol,即高階訊息佇列

MVC架構簡介及其測試策略

輸入 mvc 強行 嘗試 部分 img 基本架構 fire 有用 最近在WEB端測試工作中陷入了瓶頸,單純的手動功能測試在沒有成熟的代碼規範之前還是很容易坑的,WEB自動化測試一時半會還沒有什麽進展,所以決定先學習一下網站用的MVC架構,跟著教程寫了一個小網站,大概也找

SQLyog簡介及其功能(附百度雲盤下載地址)

++ 基本 記錄 導出 對數 簡介 sam 接口 管理 一、軟件簡介   SQLyog 是一個快速而簡潔的圖形化管理MYSQL數據庫的工具,它能夠在任何地點有效地管理你的數據庫。SQLyog是業界著名的Webyog公司出品的一款簡潔高效、功能強大的圖形化MySQL數據庫管

JSP九大內置對象及其方法

name line tco exce sco trace 作用範圍 conf pos 內置對象包括 request response pageContext session application out config page exception 1.out (1)cle

常用類及其方法應用

get arrays類 數字 arrays ima form cas per time Math類(計算)、Arrays類(排序等)、BigInteger類(精確整數)、BigDecimal類(精確浮點數) ---------------------------------

JavaScript中的對象及其方法

數量 添加元素 截取 for 字母 -1 多維 java nbsp 1.數組對象: javascript中數組是一種特殊的對象。創建一個新的數組類似於創建一個對象實例,通過new運算符和相應的數組構造函數完成。數組的構造函數是Array(),可以接受多個參數,編寫方法如

字符流Writer對象創建子類及其方法

pipe 緩存 writer PE spa AD 清除 nbsp 直接 字符流中輸出數據主要用Writer來完成,輸出使用Reader 父類---Writer 子類---BufferedWriter / CharArrayWriter / FilterWrite

轉載:Linux音頻驅動-OSS和ALSA聲音系統簡介及其比較

sdn stat 邏輯 音量 技術 hone ltr close clear Linux音頻驅動-OSS和ALSA聲音系統簡介及其比較 概述 昨天想在Ubuntu上用一下HTK工具包來繪制語音信號的頻譜圖和提取MFCC的結果,但由於前段時間把Ubuntu升級到13.0

01_Hive簡介及其工作機制

ofo .com 結構化 hdfs href htm hadoop 保存 簡單 1.Hive簡介   Hive是一個基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一個表。並提供類SQL查詢功能, 可以將sql語句轉換為MapReduce任務運行。其優點是

MATLAB安裝libsvm工具箱的方法

操作系統 win7 64 ++ 題集 sel 次方 不安裝 readme 子文件夾 支持向量機(support vector machine,SVM)是機器學習中一種流行的學習算法,在分類與回歸分析中發揮著重要作用。基於SVM算法開發的工具箱有很多種,下面我們要安裝的是十

python數據類型:tuple、dict及其方法

asdf 修改 進行 key存在 join int 找到 efault spa 1.tu(對象)對應的tuple(類) 元組是對列表的二次加工,元素不可被修改,不能被增加或者刪除 tu = (111,"alex",(11,22),[(33,44)],True,33,44,)

ES6對象構建及其方法和比較

ssi es5 kill 自定義對象 nbsp let 比較 jin cti let name=‘jin‘; let skill=‘web‘; //ES6允許我們用變量的形式賦值 let obj={name,skill}; console.log(obj); //key

Python 的 time 模塊導入及其方法

imp com 轉換 文章 輸出結果 重要 time模塊 常見 講解 時間模塊很重要,Python 程序能用很多方式處理日期和時間,轉換日期格式是一個常見的功能,講解一下Python 的 time 模塊導入及其方法。 1,time 模塊導入 import time; # 引

python之路 第二篇 數據類型詳解及其方法

字符 引號 print 成員 移除 join att pri str 字符串 #作用:描述名字,性別,國籍,地址等信息#定義:在單引號\雙引號\三引號內,由一串字符組成 name=‘Matthew‘ #優先掌握的操作: #1、按索引取值(正向取+反向取) :只能取 #2

網路分流器-網路分流器-網路流量監控技術及其方法

戎騰網路分流器作用於網路安全領域網路監控前端, 流量監控主要通過那些手段呢? 今天來講講! 支援48個10G 亦可更換內部子卡,支援4個100G,支援不同鏈路,LAN,GE,WAN,POS等 流量監控的手段有哪些,RMON和SMON的區別是什麼? SMON用於交換式網路,而ROMN用於共享式網路。 為

網絡分流器-網絡分流器-網絡流量監控技術及其方法

smo 互聯網 部分 聚合 -- 優點 mage vlan通信 ces 戎騰網絡分流器作用於網絡安全領域網絡監控前端, 流量監控主要通過那些手段呢? 今天來講講! 支持48個10G 亦可更換內部子卡,支持4個100G,支持不同鏈路,LAN,GE,WAN,POS等 流量監控的

jvm簡介及其記憶體分佈介紹(入門級)

一.jvm執行機制 jvm啟動流程: java虛擬機器啟動的命令是通過java +xxx(類名,這個類中要有main方法)或者javaw啟動的。 執行命令後,系統第一步做的就是裝載配置,會在當前路徑中尋找jvm的config配置檔案。 找到jvm的config

常用的人臉表情資料庫簡介及其論文出處

【時間】2018.10.16 【題目】常用的人臉表情資料庫簡介及其論文出處   一、常用的人臉表情資料庫簡介 本文簡要的介紹一些公開的表情資料庫: (1)JAFFE人臉表情資料庫【12】:該資料庫是由日本ART建立的日本女性表情庫,其中的圖片採集於10名女性志願者,每個

圖解STL中演算法的分類、簡介及其Demo

STL中包含演算法標頭檔案<algorithm>就可以使用其中的演算法了,使用這些通用的演算法可以使得程式碼更加簡單、易讀、通用。但是這些演算法有哪些呢?以及這些演算法的職能又是什麼?其實這些東西,候捷大師在他的《STL原始碼剖析》中都有列舉,且FluentCPP有一篇文章1