1. 程式人生 > >【神經網路學習筆記】LIBSVM引數講解

【神經網路學習筆記】LIBSVM引數講解

支援向量機SVM(Support Vector Machine)作為一種可訓練的機器學習方法可以實現模式分類和非線性迴歸,本文就matlab中的LIBSVM工具箱展開說明。

在matlab中呼叫LIBSVM工具箱可以方便的使用LIBSVM網路,臺灣大學的林智仁教授已經封裝好各方法,大家可以在此下載。

LIBSVM工具箱的主要函式為svmtrain和svmpredict,呼叫格式為

model = svmtrain(train_lable,train_data,options);

[predict_lable,accuracy/mse,dec_value] = svmpredict(test_lable,test_data,model);

svmtrain:

train_lable:訓練標籤

train_data:訓練資料

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(-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
  其中-g選項中的k是指輸入資料中的屬性數。option -v 隨機地將資料剖分為n部分並計算互動檢驗準確度和均方根誤差。以上這些引數設定可以按照SVM的型別和核函式所支援的引數進行任意組合,如果設定的引數在函式或SVM型別中沒有也不會產生影響,程式不會接受該引數;如果應有的引數設定不正確,引數將採用預設值。

下面用一個例子來解釋各引數,使用LIBSVM工具箱自帶的heart_scale.mat資料(共270個樣本,每個樣本有13個屬性)

%% A Little Clean Work
clear;
clc;
close all;
format compact;
%%
% 首先載入資料
load heart_scale;
data = heart_scale_inst;
label = heart_scale_label;
% 建立分類模型
model = svmtrain(label,data,'-s 0 -t 2 -c 1.2 -g 2.8');
% 利用建立的模型看其在訓練集合上的分類效果
[PredictLabel,accuracy,dec_value1] = svmpredict(label,data,model);
accuracy

%% 分類模型model解密
model
Parameters = model.Parameters
Label = model.Label
nr_class = model.nr_class
totalSV = model.totalSV
nSV = model.nSV 

執行結果:

Accuracy = 99.6296% (269/270) (classification)
accuracy =
   99.6296
    0.0148
    0.9851
model = 
    Parameters: [5x1 double]
      nr_class: 2
       totalSV: 259
           rho: 0.0514
         Label: [2x1 double]
    sv_indices: [259x1 double]
         ProbA: []
         ProbB: []
           nSV: [2x1 double]
       sv_coef: [259x1 double]
           SVs: [259x13 double]
Parameters =
         0
    2.0000
    3.0000
    2.8000
         0
Label =
     1
    -1
nr_class =
     2
totalSV =
   259
nSV =
   118
   141

這裡為了簡單起見沒有劃分訓練集和測試集,下面探究一下各個引數的意義

1、model.parameters

Parameters =
         0
    2.0000
    3.0000
    2.8000
         0

從上到下依次是

-s svm型別:SVM設定型別(預設0)

-t 核函式型別:核函式設定型別(預設2)

-d degree:核函式中的degree設定(針對多項式核函式)(預設3)

-g r(gama):核函式中的gamma函式設定(針對多項式/rbf/sigmoid核函式)(預設1/ k)

-r coef0:核函式中的coef0設定(針對多項式/sigmoid核函式)((預設0)

引數數字的意義見上。

2、model.label  model.nr_class

Label =
     1
    -1
nr_class =
     2

model.label表示資料集中類別的標籤都有哪些,這裡是1和-1

model.nr_class表示資料集中一共有多少個類別,這裡是二分類

3、model.totalSV   model.nSV

totalSV =
   259
nSV =
   118
   141

model.totalSV 代表總共的支援向量的數目,這裡共259個支援向量

model.nSV 每類標籤的支援向量數,這裡標籤為1的支援向量有118個,-1的有141個。

4、model.sv_coef   model.SVs   model.rho

model.sv_coef承裝的是259個支援向量雜決策函式中的係數

 model.SVs 承裝259個支援向量

model.rho 決策函式中常數項的相反數

通過model提供的資訊,可以建立上面的決策函式,程式碼實現如下:

%% DecisionFunction
function plabel = DecisionFunction(x,model)

gamma = model.Parameters(4);
RBF = @(u,v)( exp(-gamma.*sum( (u-v).^2) ) );

len = length(model.sv_coef);
y = 0;

for i = 1:len
    u = model.SVs(i,:);
    y = y + model.sv_coef(i)*RBF(u,x);
end
b = -model.rho;
y = y + b;

if y >= 0
    plabel = 1;
else
    plabel = -1;
end
有了這個決策函式就可以自己預測樣本標籤了
%%
plable = zeros(270,1);
for i = 1:270
    x = data(i,:);
    plabel(i,1) = DecisionFunction(x,model);
end

LIBSVM官方網站有關matlab介面的FAQ地址:www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html

相關推薦

神經網路學習筆記LIBSVM引數講解

支援向量機SVM(Support Vector Machine)作為一種可訓練的機器學習方法可以實現模式分類和非線性迴歸,本文就matlab中的LIBSVM工具箱展開說明。 在matlab中呼叫LIBSVM工具箱可以方便的使用LIBSVM網路,臺灣大學的林智仁教授已經封裝好

計算機網路學習筆記

第二章 應用層 目錄 第二章 應用層 2.1應用層協議原理 2.1.1    網路應用程式體系結構 2.1.2    程序通訊 2.1.3    可供應用程式使用的運輸服務 2.1.4&nbs

計算機網路學習筆記概述

網際網路概述 計算機網路由若干結點(node)和連線這些結點的鏈路(link)組成。網路中的結點可以是計算機、集線器、交換機或路由器等。 網路之間還可以通過路由器互連起來,這就狗策了一個覆蓋範圍更大的計算機網路。這樣的網路稱為網際網路(internetwork或inter

js高程學習筆記關於變數值和函式引數

變數包含了兩種不同型別的值: 基本型別 (Undefined、null、Boolean、Number、string都屬於基本型別) 引用型別 (物件) 兩種值在賦值上不同的是: 將一個引用型別的值(物件)賦值給一個變數,可以為其新增/刪除屬性和方法。 但如果是一個基本型別的值是不可以

Python 學習筆記各種引數

動態語言好難啊。記一下重點。 【可變引數】可變引數使用 *p 來定義,這時候 p 是一個 tuple。傳入的時候可以直接傳入 f(1,2,3) 也可以使用 f(*tuple/list) 傳入一個可

SQL Server學習筆記事務、鎖定、阻塞、死鎖

body sqlserve distrib reset reads cli ast function pre http://blog.csdn.net/sqlserverdiscovery/article/details/7712068 Column nameData

安全牛學習筆記XSS的簡述

cookie 服務器 漏洞 安全 xss 1.Cross Site SCripting 攻擊者往Web頁面裏插入惡意Script代碼,當用戶瀏覽該頁時,嵌入其中Web裏面的Script代碼會被執行,從而達到惡意攻擊用戶的目的。

安全牛學習筆記XSS的利用

xss 惡意代碼 漏洞 反射型XSS1.概念 通過社會工程學等手段誘騙用戶點擊某個精心構造的鏈接,該鏈接會將惡意的js代碼提交給 有漏洞的服務器網站,並由服務器返回給受害者的客戶端執行。 2.POC -<scri

安全牛學習筆記Web掃描器(1)

安全 web 漏洞 1.偵察httrack可將目標網站的網頁全部爬取下來,減少偵察過程中與目標服務器發生的交互。 2.Nikto(1).檢測對象 掃描軟件版本 搜索存在安全隱患的文件 配置漏洞

安全牛學習筆記OSI網絡模型

http ssh stmp 安全 OSI網絡模型 物理層規定比特在物理介質中的傳輸方式,解決物理傳輸過程中的問題。 代表設備:中繼器,集線器(多端口中繼器) 數據鏈路層 在不可靠的網絡環境中進行可靠的數據傳輸。解決數據傳輸中可能出現的

安全牛學習筆記搜索引擎

安全、web、滲透、信息安全 搜索引擎 shodan爬取banner信息。搜索聯網設備。 常用關鍵字: netcity country CNport oshostname實例:cisco 200 ok 思科設備default password 默認密碼

安全牛學習筆記服務掃描

安全、web、滲透、信息安全 1.簡述 識別開放端口上的應用 識別目標操作系統 提高攻擊效率 2.分類 Banner信息獲取 服務識別 操作系統識別snmp分析 防火墻識別 3.Banner (1).含義

知了堂學習筆記Eclipse,Myeclipse連接MySQL數據庫和Oracle數據庫

let ets 最好 lec 代碼 htm ner pro 密碼 一.連接MySQL數據庫   1.由於Eclipse,Myeclipse都沒有連接MySQL數據的架包,我們需要自行下載MySQL連接架包 mysql-connector(官方鏈接:http://dev.my

安全牛學習筆記Kali Linux 安裝-持久加密USB安裝、熟悉環境、熟悉BASH命令

security+ linux 信息安全 持久加密USB安裝-1LUKS: linux UNified Key Setup 磁盤分區加密規範 不依賴於操作系統的磁盤級加密 Windows——DoxBox 後端:dm-crypt 前端:cryptsetup 微軟的bitlocker將鏡像

安全牛學習筆記網絡配置、更新升級、安裝軟件包、瀏覽器插件

信息安全;網絡配置[email protected]:~# dhclient eth0 //用來通過 dhcp 協議配置本機的網絡接口[email protected]:~# ifconfig 查看現在的ip地址[email protected]:~# ifc

安全牛學習筆記 Kali Linux安裝-熟悉環境

信息安全;security+;kali linux熟悉BASH命令 Ls、cd、pwd、cat、more、tail、cp、rm、top、ps、greg、ifconfig、netstat、awk、sort、route、mount、dmesg、find、whereis、Echo、vi 管道 shell腳本[

安全牛學習筆記基本工具-NETCAT(telnet/banner、傳輸文本信息)

信息安全;security+;kali linux滲透測試常用工具經常使用且功能強大安全從業者必不可少的幫手Nc / ncatWireshackTcpdumpNETCAT-----NC網絡工具中的瑞士軍刀——小身材、大智慧偵聽模式/傳輸模式telnet/獲取banner信息傳輸文本信息傳輸文件目錄加密傳輸文件

安全牛學習筆記實驗環境

信息安全;security+;kali linux滲透測試準備實驗環境 滲透非授權系統的弊端 搭建自己的實驗環境安裝虛擬機微軟最新版軟件 http://msdn .microsoft.com/en-ca/subscriptions/aa336858windows虛擬機 http://dev.mod

安全牛學習筆記TOR

信息安全;security+;kali linux滲透測試保護隱私防止被追蹤誌願者組成長期在天朝完全無法使用 感謝 雲暗網 互聯網搜索引擎無法發現 互聯網黑市下載和看視頻是不道德的行為互聯網黑市交易的貨幣是比特幣比特幣很難在互聯網復原下載http://www.torproject.org/d

知了堂學習筆記java 接口與抽象類

表現 lar images 例子 然而 編寫 targe 無法 abstract 本次主角:抽象類 、接口。 對於皮皮瀟這樣一類的Java初學者來說,接口和抽象類如果不去花大量的精力與時間是很難弄清楚的,而我也是在最近這周的項目學習中感覺到了我對這兩個概念不熟悉,所以導致對