一、安裝
二、使用
在使用之前,要對libsvm做乙個了解,而最好的資料自然是libsvm種readme檔案了。readme檔案包含了介紹,安裝,svm返回的模型引數,以及例子等。libsvm主要用了兩個函式svmtrain,svmpredict,如果你在用的時候忘了具體的引數,可以在matlab命令提示符下輸入函式名就有相關的提示。
用法:1.model = svmtrain(training_label_vector, training_instance_matrix [, 'libsvm_options']);
(1)training_label_vector, training_instance_matrix:
training_label_vector和
training_instance_matrix就是要訓練的標籤和特徵了。training_label_vector一般以列向量的形式存放的,每個元素即每行代表乙個instance(一般是特徵)的標籤。而training_instance_matrix也類似每行代表乙個instance.
如圖所示,上面變數代表有930個instance來訓練,每個instance1116維,下面是對於instance的標籤。
(2)libsvm_options:
怎麼選擇呢?libsvm_options:重要的是-t,以及交叉驗證時的-v
-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(-gamma|u-v|^2)
3 –sigmoid:tanh(r*u'v + coef0)
-d degree:核函式中的degree設定(針對多項式核函式)(預設3)
-g r(gama):核函式中的gamma函式設定(針對多項式/rbf/sigmoid核函式)(預設1/ k)
-r coef0:核函式中的coef0設定(針對多項式/sigmoid核函式)((預設0)
-c cost:設定c-svc,e -svr和v-svr的引數(損失函式)(預設1)
-n nu:設定v-svc,一類svm和v- svr的引數(預設0.5)
-p p:設定e -svr 中損失函式p的值(預設0.1)
-m cachesize:設定cache記憶體大小,以mb為單位(預設40)
-e eps:設定允許的終止判據(預設0.001)
-h shrinking:是否使用啟發式,0或1(預設1)
-wi weight:設定第幾類的引數c為weight*c(c-svc中的c)(預設1)
-v n: n-fold互動檢驗模式,n為fold的個數,必須大於等於2
(3)返回的model:
如上圖 -parameters: 引數。
-nr_class: 類的數目。
-totalsv:總的支援向量數目。
-rho: -判決函式wx+b的b。
-label: 每個類的標籤。
-proba:
成對的概率資訊,如果b是 0則為空。
-probb: 成對的概率資訊,如果b是 0則為空。
-nsv: 每個類的支援向量
-sv_coef:判決函式的係數
-svs:支援向量。
如果指定了'-v',那麼就實施了交叉驗證,而且返回是交叉驗證的正確率。
用法:
2. [predicted_label, accuracy, decision_values/prob_estimates] = svmpredict(testing_label_vector, testing_instance_matrix, model [, 'libsvm_options']);
(1)esting_label_vector, testing_instance_matrix:
類似於svmtrain
(2)libsvm_options:
-b 概率估計:預設0,1表示估計。(需要在使用時顯式表現)
(3)predicted_label, accuracy,
decision_values/prob_estimates:
predicted_label: svm **輸出向量。類似於輸入的label
accuracy: 向量包括正確率,均方誤差,方相關係數.
decision_values:每行是**k(k-1)/2二類svms的結果
prob_estimates: 每行包括k個值代表每類中測試資料所佔的概率。
三、核函式
核函式的
核函式總共有以下4種,我們要了解在什麼情況下用哪一種核函式。
一般情況下,首選rbf核,它能夠把樣本以非線性的方式對映到高維空間,所以能夠處理類標籤和特徵不是線性關係的情況。線性核只是rbf的一種特殊情況。
但是有些情況下rbf核並不適用,比如特徵的數量特別大的時候,一般僅僅使用線性核。
rbf核中有兩個引數需要確定
ps:什麼時候用rbf,什麼時候用線性核
1.樣本數量遠遠小於特徵數時
比如訓練和測試資料有二三十個而特徵維數有好幾千時,採用線性核是最好的,不需要對映資料。
2.樣本數量和特徵數都非常大時
可以利用另一工具箱liblinear,或者用線性核
3.樣本數量遠遠大於特徵數時
用非線性核是最好的了。
參考文獻:
在matlab環境下LIBSVM的demo
2 在matlab環境下用mex setup指令,設定matlab預設編譯器,我選擇是vs2010 3 解壓後libsvm後,在ibsvm 3.20 matlab路徑下執行make.m,把c檔案生成mexw64或mexw32,供matlab呼叫 4 現在可以利用libsvm測試,回到上乙個路徑ibs...
在MATLAB中安裝libsvm
搞了一天,看了很多資料,終於搞好了matlab中呼叫大牛寫好的svm庫,將結果告訴大家避免以後走彎路。1.參考 詳解 2.操作流程 請注意 詳細操作流程請參考上面的 詳解 這裡只說大框架和詳解裡沒有提到的問題。a.設定path file set path add with subfolders 加入...
libsvm在MATLAB的安裝
本文的配置路徑為 d matlab r2010a toolbox libsvm 3.12 matlab,從始至終都是在這個目錄下進行的。當然,你也可以將編譯好的檔案拷貝到任何地方,只要你當前的工作目錄中有這四個檔案即可。我的matlab版本 r2012b,我的libsvm版本3.12 2.解壓至指定...