SVM (support vector machine)
简单原理流程转自:http://wenku.baidu.com/link?url=57aywD0Q6WTnl7XKbIHuEwWENnSuPS32QO8X0a0gHpOOzdnNt_K0mK2cucVaEHVSAjHvBCvQNZGhe_TEgWoDeVoWNBATyAa0bc5eDZQweEm
详细原理和实验1:PMTK ToolBox和实验2:LibSVM转自:http://blog.163.com/huai_jing@126/blog/static/171861983201171410833824/
matlab使用:http://wenku.baidu.com/link?url=LUhL9dE1zi2R5VQMIHCicN2bAxcCea_f7wjrek73PkUkfpLKEYRx8hOlG45zgYYgMkcKh92FW1l-6LecvpjjzsBJDVsPFME38frt8rtj-H7
1.matlab自带的有svmtrain,svmclassify。其中svmtrain理解:http://blog.sina.com.cn/s/blog_48e6733501016dhl.html
svmtrain理解:Training是一个M行N列的矩阵,M是样本数,N是特征维数。Group:是个列向量,表示样本对应的类别,用字符串表示(可以用数字或单个字符)。举例:svmStruct = svmtrain(sd,Y,'Kernel_Function','quadratic', 'showplot',true);
其中Kernel_FunctionValue 有如下些可选类别:
- linear — Default. Linear kernel or dot product.
- quadratic — Quadratic kernel.
- rbf — Gaussian Radial Basis Function kernel with a default scaling factor, sigma, of 1.
- polynomial — Polynomial kernel with a default order of 3.
- mlp — Multilayer Perceptron kernel with default scale and bias parameters of [1, -1].
- fuction
圆圈代表 支撑的向量
svmclassify函数的举例RD=svmclassify(svmStruct,sd,'showplot',true);
2.libsvm中举例:
model = svmtrain( allcoor_label, allcoor,'-c 1 -g 0.007 -t 0');
[ptrain_label, train_accuracy] = svmpredict( allcoor_label, allcoor, model);
其中options涵义如下:
-s svm类型:设置SVM 类型,默认值为0,可选类型有:
0 -- C- SVC
1 -- nu - SVC
2 -- one-class-SVM
3 -- e - SVR
4 -- nu-SVR
-t 核函数类型:设置核函数类型,默认值为2,可选类型有:
0 -- 线性核:u'*v
1 -- 多项式核:(g*u'*v+ coef0)degree
2 -- RBF 核:exp(-||u-v||*||u-v||/g*g)
3 -- sigmoid 核:tanh(g*u'*v+ coef 0)
-d degree:核函数中的degree设置,默认值为3;
-g r(gama):核函数中的函数设置(默认1/ k);
-r coef 0:设置核函数中的coef0,默认值为0;
-c cost:设置C- SVC、e - SVR、n - SVR中从惩罚系数C,默认值为1;
-n nu :设置nu - SVC、one-class-SVM 与nu - SVR 中参数nu ,默认值0.5;
-p e :核宽,设置e - 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折交叉验证模式。
附: MATLAB自带的svm实现函数与libsvm差别小议:
1 MATLAB自带的svm实现函数仅有的模型是C-SVC(C-support vector classification); 而libsvm工具箱有C-SVC(C-support vector classification),nu-SVC(nu-support vector classification),one-class SVM(distribution estimation),epsilon-SVR(epsilon-support vector regression),nu-SVR(nu-support vector regression)等多种模型可供使用。
2 MATLAB自带的svm实现函数仅支持分类问题,不支持回归问题;而libsvm不仅支持分类问题,亦支持回归问题。
3 MATLAB自带的svm实现函数仅支持二分类问题,多分类问题需按照多分类的相应算法编程实现;而libsvm采用1v1算法支持多分类。
4 MATLAB自带的svm实现函数采用RBF核函数时无法调节核函数的参数gamma,貌似仅能用默认的;而libsvm可以进行该参数的调节。
5 libsvm中的二次规划问题的解决算法是SMO;而MATLAB自带的svm实现函数中二次规划问题的解法有三种可以选择:经典二次方法;SMO;最小二乘。(这个是我目前发现的MATLAB自带的svm实现函数唯一的优点~)
摘自:http://www.ilovematlab.cn/thread-85860-1-1.html
SVM (support vector machine)的更多相关文章
- 机器学习算法 --- SVM (Support Vector Machine)
一.SVM的简介 SVM(Support Vector Machine,中文名:支持向量机),是一种非常常用的机器学习分类算法,也是在传统机器学习(在以神经网络为主的深度学习出现以前)中一种非常牛X的 ...
- 支持向量机SVM(Support Vector Machine)
支持向量机(Support Vector Machine)是一种监督式的机器学习方法(supervised machine learning),一般用于二类问题(binary classificati ...
- 使用Support Vector Machine
使用svm(Support Vector Machine)中要获得好的分类器,最重要的是要选对kernel. 常见的svm kernel包括linear kernel, Gaussian kernel ...
- 支持向量机 support vector machine
SVM(support Vector machine) (1) SVM(Support Vector Machine)是从瓦普尼克(Vapnik)的统计学习理论发展而来的,主要针对小样本数据进行学习. ...
- Support Vector Machine (1) : 简单SVM原理
目录 Support Vector Machine (1) : 简单SVM原理 Support Vector Machine (2) : Sequential Minimal Optimization ...
- 支持向量机(Support Vector Machine,SVM)—— 线性SVM
支持向量机(Support Vector Machine,简称 SVM)于 1995 年正式发表,由于其在文本分类任务中的卓越性能,很快就成为机器学习的主流技术.尽管现在 Deep Learnin ...
- Support Vector Machine(2):Lagrange Duality求解线性可分SVM的最佳边界
在上篇文章<Support Vector Machine(1):线性可分集的决策边界>中,我们最后得到,求SVM最佳Margin的问题,转化为了如下形式: 到这一步后,我个人又花了很长的时 ...
- 6. support vector machine
1. 了解SVM 1. Logistic regression 与SVM超平面 给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类.如果用x表示数据点,用y表示类别( ...
- Support Vector Machine (3) : 再谈泛化误差(Generalization Error)
目录 Support Vector Machine (1) : 简单SVM原理 Support Vector Machine (2) : Sequential Minimal Optimization ...
随机推荐
- hashMap put的返回值测试
@Testpublic void findOne() throws Exception { HashMap<Integer,Integer> hashMap = new HashMap&l ...
- pythonDjango开发-安装第三方插件
Python安装插件方式: 1.easy_install package 2.pip install package 如果pip安装报错,可以使用以下两种方法解决: 1.python -m pip i ...
- let和var定义变量的区别
使用 let 语句声明一个变量,该变量的范围限于声明它的块中. 可以在声明变量时为变量赋值,也可以稍后在脚本中给变量赋值. 使用 let 声明的变量,在声明前无法使用,否则将会导致错误. 如果未在 ...
- vmware虚拟机中的系统(例如kali),输入内容有延迟和卡顿的解决方案
实际上是因为内存在vmware里设置小了,设置得大点即可, 比如我的kali之前是2gb,然后之前倒是没出过这种问题,但是这次更新系统后可能出了一些问题就变得卡了, 所以我就把kali的内存从2gb调 ...
- AJAX其实就是一个异步网络请求
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).其实就是一个异步网络请求. 一.创建对象 var xmlhttp; if (w ...
- JavaScript验证时间格式
1. 短时间,形如 (13:04:06) function isTime(str) { var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/) ...
- Excel表格生成sql语句
假如excel表格中有A.B.C三列数据,希望导入到数据库users表中,对应的字段分别是name,sex,age ,在你的excel表格中增加一列,利用excel的公式自动生成sql语句,方法如下: ...
- python应用:生成简单二维码
概述 \(\quad\)第一篇python的应用就打算写一写用python生成简单的二维码啦.因为二维码在日常生活中越来越常用了,部分博客也用二维码来用作打赏的工具.但是要提醒大家的是,千万不要乱扫街 ...
- 180801-Spring之定时任务基本使用篇
文章链接:https://liuyueyi.github.io/hexblog/2018/08/01/180801-Spring之定时任务基本使用篇/ Spring之定时任务基本使用篇 spring- ...
- java学习(三)类、实例
类 public class Dog{ String breed; int age; String color; void barking(){ } void hungry(){ } void sle ...