在机器学习中,支持向量机(英语:Support Vector Machine,常简称为SVM,又名支持向量网络[1])是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。

除了进行线性分类之外,SVM还可以使用所谓的核技巧有效地进行非线性分类,将其输入隐式映射到高维特征空间中。

当数据未被标记时,不能进行监督式学习,需要用非监督式学习,它会尝试找出数据到簇的自然聚类,并将新数据映射到这些已形成的簇。将支持向量机改进的聚类算法被称为支持向量聚类[2],当数据未被标记或者仅一些数据被标记时,支持向量聚类经常在工业应用中用作分类步骤的预处理。

简言之:SVM的主要思想是建立一个超平面作为决策曲面,使得正例和反例之间的隔离边缘被最大化.

SVM的优点:

1.通用性(能够在各种函数集中构造函数)

2.鲁棒性(不需要微调)

3.有效性(在解决实际问题中属于最好的方法之一)

4.计算简单(方法的实现只需要利用简单的优化技术)

5.理论上完善(基于VC推广理论的框架)

暂且搁置理论层面的东西,看看SVM在实际应用中的效果到底如何?

SVM工具箱:种类很多,公认的最好用的是libsvm by 林智仁[台大]

========软件制作者要求给出的软件引用

Chih-Chung Chang and Chih-JenLin, LIBSVM : a library for

supportvector machines, 2001. Software available at

http://www.csie.ntu.edu.tw/~cjlin/libsvm

========

详细使用请看: Libsvm入门教程

一个好的分类器固然重要,但不要全部指望分类器,前期的数据预处理亦很重要[去噪,规范化,特征提取],可以这么说的当你数据预处理的完美的话,特征提取的好的话,分类器的影响不会占很大程度的,在某种意义下即你使用任何一种分类器都会得到较满意的准确率的!(个人见解,见仁见智)

数据标准化是指研究、制定和推广应用统一的数据分类分级、记录格式及转换、编码等技术标准的过程。数据标准化处理是数据挖掘的一项基本工作。不同评价指标往往具有不同的量纲和量纲单位,如果在预测过程中,没有进行数据标准化处理,那么大量级变量对结果的影响就会覆盖小量级变量对结果的影响,小量级变量包含的信息就可能被忽视,导致预测结果出现较大的误差。为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性问题。因而我们需要对原始数据进行数据标准化处理,使各指标处于同一数量级,以下是两种常用的数据标准化方法:

(1)最大-最小规范化法

(2)统计标准化法

下面附上最大-最小规范化法的Matlab代码:

function normal = normalization(x,kind)
% by Li Yang BNU MATH Email:farutoliyang@gmail.com QQ:516667408
% last modified 2009.2.24
%if nargin < 2kind = 2;%kind = 1 or 2 表示第一类或第二类规范化
end[m,n]  = size(x);
normal = zeros(m,n);
%% normalize the data x to [0,1]
if kind == 1  for i = 1:mma = max( x(i,:) );mi = min( x(i,:) );normal(i,:) = ( x(i,:)-mi )./( ma-mi );end
end
%% normalize the data x to [-1,1]
if kind == 2for i = 1:mmea = mean( x(i,:) );va = var( x(i,:) );normal(i,:) = ( x(i,:)-mea )/va;end
end

最后附上libsvm的参数说明:

English:
libsvm_options:
-s svm_type : set type of SVM (default 0)0 -- C-SVC1 -- nu-SVC2 -- one-class SVM3 -- epsilon-SVR4 -- nu-SVR
-t kernel_type : set type of kernel function (default 2)0 -- linear: u'*v1 -- polynomial: (gamma*u'*v + coef0)^degree2 -- radial basis function: exp(-gamma*|u-v|^2)3 -- sigmoid: tanh(gamma*u'*v + coef0)4 -- precomputed kernel (kernel values in training_instance_matrix)
-d degree : set degree in kernel function (default 3)
-g gamma : set gamma in kernel function (default 1/k)
-r coef0 : set coef0 in kernel function (default 0)
-c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)
-n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)
-p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)
-m cachesize : set cache memory size in MB (default 100)
-e epsilon : set tolerance of termination criterion (default 0.001)
-h shrinking: whether to use the shrinking heuristics, 0 or 1 (default 1)
-b probability_estimates: whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)
-wi weight: set the parameter C of class i to weight*C, for C-SVC (default 1)
-v n: n-fold cross validation mode
==========================================================
Chinese:
Options:可用的选项即表示的涵义如下-s svm类型:SVM设置类型(默认0)0 -- C-SVC1 --v-SVC2 – 一类SVM3 -- e -SVR4 -- v-SVR-t 核函数类型:核函数设置类型(默认2)0 – 线性:u'v1 – 多项式:(r*u'v + coef0)^degree2 – RBF函数:exp(-r|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类型中没有也不会产生影响,程序不会接受该参数;如果应有的参数设置不正确,参数将采用默认值。

机器学习——支持向量机(SVM)相关推荐

  1. 机器学习——支持向量机SVM之非线性模型(原问题和对偶问题)

    目录 一.原问题(prime problem) 二.原问题的对偶问题(dual problem) 1.定义一个辅助函数 2.定义对偶问题 >>>问题1:上面说到遍历w,那w的取值范围 ...

  2. 机器学习——支持向量机SVM之非线性模型(低维到高维映射)

    目录 一.非线性模型的最优化问题 1.非线性模型最优化模型 2.两个概念 1)正则项(regularization term) 2)调参参数 2.高维映射 1)定义及作用 2)高维映射后的最优化模型 ...

  3. 机器学习——支持向量机SVM之线性模型

    目录 一.没有免费的午餐定理 二.支持向量机SVM(support vector machine) 1.线性模型和非线性模型 2.如何在线性模型中画出一条直线(优化过程--vplink) 1)多少条? ...

  4. 机器学习-支持向量机SVM算法

    文章目录 简介 原理 硬间隔 支持向量 对偶问题 软间隔 核函数 SMO算法 小结 多分类问题 回归问题 应用示例 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点 ...

  5. Python 西瓜书机器学习支持向量机(SVM)

    %matplotlib inline #为了在notebook中画图展示 import numpy as np import matplotlib.pyplot as plt from scipy i ...

  6. 机器学习——支持向量机SVM之非线性模型(原问题转化为对偶问题)

    目录 一.复习(原问题.对偶问题.KKT条件.凸函数) 二.将最优化问题标准化为原问题(严格转化为标准形式) 1.原最优化问题 2.标准化后的问题 三.转化为对偶问题(注意变量的对应关系) 四.对对偶 ...

  7. 机器学习支持向量机SVM笔记

    SVM简述: SVM是一个线性二类分类器,当然通过选取特定的核函数也可也建立一个非线性支持向量机.SVM也可以做一些回归任务,但是它预测的时效性不是太长,他通过训练只能预测比较近的数据变化,至于再往后 ...

  8. 机器学习——支持向量机SVM之多分类问题

    目录 方法1:改造目标函数与限制条件 方法2:一类对其他类(类数为N,需要建立N个SVM模型) 情形1:多个SVM模型结果交集得出确切归类 情形2:多个SVM模型结果交集没有得出确切归类 方法3:一类 ...

  9. 机器学习——支持向量机SVM实例(兵王问题,SVM求解步骤以及思路,不求解不编程)

    目录 一.问题描述(兵王问题) 二.步骤 1.获得数据 2.样本划分(训练样本和测试样本) 3.训练样本得到SVM模型 ​ 1)数据处理 2)训练样本和测试样本归一化 3)选择核函数和调参 4)明确任 ...

  10. 机器学习之支持向量机SVM之python实现ROC曲线绘制(二分类和多分类)

    目录 一.ROC曲线 二.TP.FP.TN.FN 三. python绘制ROC曲线(二分类) 1.思路 2.关键代码 3.完整代码 四. python绘制ROC曲线(多分类) 五.参考文献 一.ROC ...

最新文章

  1. 外媒:苹果自动驾驶裁员表明其AI战略发生巨变
  2. Office 365系列(7)------ Exchange 2013与Office 365 Hybrid混合部署Step by Step参考
  3. wpf 为html 变量赋值_JavaScript 变量
  4. SELinux策略语言--客体类别和许可
  5. 单变量线性回归模型_了解如何为单变量模型选择效果最好的线性回归
  6. python基本对象类型
  7. 指纹识别 python_Python实现指纹识别你见过没?
  8. python 添加环境变量_怎么将 Python 重新添加到环境变量?
  9. 对列 、生产者与消费者
  10. 第三十七课.宽度学习
  11. 不同主机之间通过XDMCP协议通信(X-server和X-client不在同一主机)
  12. 怎样复制秀米html码,来,今天学习秀米的“复制粘贴”快捷键~
  13. 计算机如何写上大于符号,电脑大于等于号怎么打出来
  14. cpp设计并实现大整数
  15. model.evaluate中的verbose的作用
  16. rsync 远程同步
  17. python 隐函数作图(原创简单方法)
  18. 边缘设备、系统及计算杂谈(2)——go语言
  19. 2022-2028年中国离岸金融行业市场全景调查及投资潜力研究报告
  20. mysqldump和XBK备份

热门文章

  1. SQL高手篇:精典SQL FAQ收藏
  2. 问题三十六:ray tracing中的Inverse Mapping(0)——概要
  3. mysql 前沿表设计_史上最简单MySQL教程详解(基础篇)之表的维护和改造
  4. JAVA语言程序设计(基础篇)第四章——课后习题解
  5. 大数据平台的整体架构由哪些组成
  6. python经济与管理学院学生社团管理系统设计与实现_实验10-大学生社团管理系统的设计和实现...
  7. javascript div 没id_javascript原生自定义轮播图组件
  8. 因为在此系统上禁止运行脚本。有关详细信息_win10系统下Hyper-V基本(网上资源整合)3
  9. Django 模板中使用 Ajax POST
  10. python中的多态用法_Python面向对象之多态原理与用法案例分析