Libsvm在matlab环境下使用指南

一、安装

http://www.csie.ntu.edu.tw/~cjlin/libsvm/matlab/。在这个地址上可以下的包含matlab接口的源程序。下载完后可以放到放到任意的盘上解压,最好建一个专门来放matlab程序的文件夹。打开matlab,在matlab的面板上找到set path选项(不同版本不一样R2010b在file菜单下),将刚下载的libsvm整个目录都添加到matlab的搜索路径里。然后将当前路径定位到libsvm/matlab目录下(在current floder(matlab界面中间上方可以设置))。如果你的电脑是64位一般不需要编译生成mex文件,因为文件已经提前编译好了。如果是32位的话,那么需要点击make.m文件运行编译生成mex文件。这一步有可能不成功,可以输入mex-setup查看选择C++编译器,如果找不到编译器,那么下载安装visual studio。成功编译完成后,在任意的matlab程序中都可以使用libsvm了。

二、使用

在使用之前,要对libsvm做一个了解,而最好的资料自然是libsvm种README文件了。README文件包含了介绍,安装,SVM返回的模型参数,以及例子等。Libsvm主要用了两个函数svmtrain,svmpredict,如果你在用的时候忘了具体的参数,可以在matlab命令提示符下输入函数名就有相关的提示。

用法:1.model = svmtrain(training_label_vector, training_instance_matrix [, ‘libsvm_options‘]);

1training_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个值代表每类中测试数据所占的概率。

三、核函数

核函数的 目的是将特征向量映射到高维空间。SVM通过在高维空间寻找最大的间距的分类超平面。

核函数总共有以下4种,我们要了解在什么情况下用哪一种核函数。

一般情况下,首选RBF核,它能够把样本以非线性的方式映射到高维空间,所以能够处理类标签和特征不是线性关系的情况。线性核只是RBF的一种特殊情况。

但是有些情况下RBF核并不适用,比如特征的数量特别大的时候,一般仅仅使用线性核。

四、调参-交叉验证和网格搜索

RBF核中有两个参数需要确定 。我们并不知道怎么样的是最适用于给定的问题的。最常用的方式就是交叉验证即把训练的数据分成两部分,把一部分当成知道的,另一部分是不知道的。比如在v-fold 交叉验证中,先把训练数据分成v个相同大小的子集。然后用v-1子集的训练数据训练分类器,用剩下一个子集来测试分类器。交叉验证能够解决过拟合的问题。要怎么利用交叉验证来选取最好的呢?一般是利用网格搜索,己将组成的坐标系分成一系列网格。然后用网格上点(即对于一个个)做交叉验证,取使最后交叉验证的正确率最高的参来做为最终的参数。

ps:什么时候用RBF,什么时候用线性核

1.样本数量远远小于特征数时

比如训练和测试数据有二三十个而特征维数有好几千时,采用线性核是最好的,不需要映射数据。

2.样本数量和特征数都非常大时

可以利用另一工具箱LIBLINEAR,或者用线性核

3.样本数量远远大于特征数时

用非线性核是最好的了。

参考文献:http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf

Libsvm在matlab环境下使用指南

时间: 2024-10-12 10:20:30

Libsvm在matlab环境下使用指南的相关文章

libSVM笔记之(一)在matlab环境下安装配置libSVM

本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing 台湾林智仁教授提供的开源的SVM处理工具箱 libsvm svm工具箱的下载地址: http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 配置matlab 1.设置路径(搜索路径) 把该工具箱的库包含到matlab的函数搜索路径中去 左键添加并包含子文件夹,把所有的文件都包含进该搜

Windows 64 位 Matlab R2013a 环境下安装 libsvm

在这种环境下, 安装 libsvm 可以说是傻瓜似的了, 但就我搜出的 libsvm 安装教程来看, 以前的 libsvm 安装起来是有点麻烦的 目前最新版本是 libsvm 3.18, 按照 [1] 的描述, 将 libsvm 的 windows 目录放到 matlab 目录中, 我想博主说的这个目录应该不是 matlab 的当前工作目录, 而是 matlab 的搜索目录. 因为当前工作目录只有一个, 你把它设为 windows, 那么 libsvm 目录下的 heart_scale 数据集就

Mac环境下cocos2d-x开发环境完全指南

本教程来自CSDN博客:http://blog.csdn.net/zhaokaiqiang1992 转载请说明! 本教程主要指导新手在Mac环境下cocos2d-x开发环境搭建. 1.cocos2d-x下载 下载网站:http://cn.cocos2d-x.org/download/ 下载3.x版本后,解压即可 2.必备软件安装及环境配置 进行cocos2d-x开发,必须安装的软件有 Java SDK(Mac自带) Ant(安装可以参考这个教程:http://www.cnblogs.com/il

CentOS 7下最新版(6.2.4)ELK+Filebeat+Log4j日志集成环境搭建完整指南

现在的公司由于绝大部分项目都采用分布式架构,很早就采用ELK了,只不过最近因为额外的工作需要,仔细的研究了分布式系统中,怎么样的日志规范和架构才是合理和能够有效提高问题排查效率的.经过仔细的分析和研究,确定下面的架构应该是比较合理的之一(Filebeat也支持直接写到ES).关于ELK的各种架构以及优缺点,可以参考https://www.ibm.com/developerworks/cn/opensource/os-cn-elk-filebeat/index.html. 首先,不管是不是分布式架

第十八篇 Linux环境下常用软件安装和使用指南

提醒:如果之后要安装virtualenvwrapper的话,可以直接跳到安装virtualenvwrapper的方法,而不需要先安装好virtualenv 安装virtualenv和生成虚拟环境 安装virtualenv:yum -y install python-virtualenv 生成虚拟环境: 先切换到想要生成虚拟环境的目录下面 生成python2的虚拟环境:virtualenv 虚拟环境名,例如:virtualenv test_py2 生成python3的虚拟环境:virtualenv

Libsvm的MATLAB调用和交叉验证

今天听了一个师兄的讲课,才发现我一直在科研上特别差劲,主要表现在以下几个方面,(现在提出也为了督促自己在以后的学习工作道路上能够避免这些问题) 1.做事情总是有头无尾,致使知识点不能一次搞透,每次在用到相同知识点的时候才发现之前对这个知识了解的还是不透彻. 2.不善于总结,做的东西(如代码和论文)很多也比较杂,但是却没有记录每一项工作,致使到最后很难理清之前做过的东西. 3.检索能力较差,致使寻找自己需要的资料需要耗费太长的时间. 4.阅读文献的数量太少,因此很难提出新的想法和见解. 以上4点是

[转载]SharePoint 2013测试环境安装配置指南

软件版本 Windows Server 2012 标准版 SQL Server 2012 标准版 SharePoint Server 2013 企业版 Office Web Apps 2013 备注:安装之前,需要各个服务器的IP地址,机器名称设置好,并且已经加入到域中. 一 安装AD域控制器 1. 添加AD服务 a) 打开服务器管理器,选择[添加角色和功能] b) 在[开始之前]页面直接点击[下一步] c) 选择[基于角色或基于功能的安装]后,点击[下一步] d) 选择[从服务器池中选择服务器

cocos2d-x 3.x Mac环境下搭建, 创建Xcode项目

最近比较闲..折腾一下cocos2d-x 3.x系列. 虽然出来很久了,不过一直没时间学习.之前一直用着2.14版本. cocos2d v3.x 版本出来后,从配置安装到创建项目都是命令行,下面简单说一下. 1. 下载地址    http://cn.cocos2d-x.org/download/   (目前最新版本3.3   375M左右) 2. 下载完成解压后, 打开终端, 进入到对应文件夹. 比如我的: cd /Users/apple/Desktop/Colin/Cocos2d-x/coco

Windows7环境下搭建Cocos2d-x3.3环境并配置android交叉编译环境

   本指南将介绍如何在Windows 7平台搭建Cocos2d-x Android开发环境.本指南操作要求一台搭载Windows 7平台及安装Visual Studio 2012/2013的电脑.最好拥有快速稳定的网络,因为在指南操作中需要下载许多软件包. 一.电脑环境 Win7+32位 二.必备软件下载地址与版本 1.Eclipse 下载地址:http://www.eclipse.org/downloads/ 笔者使用版本:Luna(最新版本Mars,官方定于2015年6月24日发布),记得