支持向量机(Support Vector Machine ,SVM)的主要思想是:建立一个最优决策超平面,使得该平面两侧距离该平面最近的两类样本之间的距离最大化,从而对分类问题提供良好的泛化能力。对于一个多维的样本集,系统随机产生一个超平面并不断移动,对样本进行分类,直到训练样本中属于不同类别的样本点正好位于该超平面的两侧,满足该条件的超平面可能有很多个,SVM正式在保证分类精度的同时,寻找到这样一个超平面,使得超平面两侧的空白区域最大化,从而实现对线性可分样本的最优分类。

支持向量机中的支持向量(Support Vector)是指训练样本集中的某些训练点,这些点最靠近分类决策面,是最难分类的数据点。SVM中最优分类标准就是这些点距离分类超平面的距离达到最大值;“机”(Machine)是机器学习领域对一些算法的统称,常把算法看做一个机器,或者学习函数。SVM是一种有监督的学习方法,主要针对小样本数据进行学习、分类和预测,类似的根据样本进行学习的方法还有决策树归纳算法等。

SVM的优点:

1、不需要很多样本,不需要有很多样本并不意味着训练样本的绝对量很少,而是说相对于其他训练分类算法比起来,同样的问题复杂度下,SVM需求的样本相对是较少的。并且由于SVM引入了核函数,所以对于高维的样本,SVM也能轻松应对。

2、结构风险最小。这种风险是指分类器对问题真实模型的逼近与问题真实解之间的累积误差。

3、非线性,是指SVM擅长应付样本数据线性不可分的情况,主要通过松弛变量(也叫惩罚变量)和核函数技术来实现,这一部分也正是SVM的精髓所在。

一、线性分类


对于最简单的情况,在一个二维空间中,要求把下图所示的白色的点和黑色的点集分类,显然,下图中的这条直线可以满足我们的要求,并且这样的直线并不是唯一的。

SVM的作用就是要查找到最合适的决策直线所在的位置。其他可行的直线可以如下所示:

那么哪条直线才是最优的呢?就是分类两侧距离决策直线距离最近的点离该直线综合最远的那条直线,即分割的间隙越大越好,这样分出来的特征的精确性更高,容错空间也越大。这个过程在SVM中被称为最大间隔(Maximum Marginal)。下图红色和蓝色直线之间的间隙就是要最大化的间隔,显然在这种情况下,分类直线位于中间位置时可以使得最大间隔达到最大值。

二、 线性不可分

现实情况中基于上文中线性分类的情况并不具有代表性,更多情况下样本数据的分布式杂乱无章的,这种情况下,基于线性分类的直线分割面就无法准确完成分割。如下图,在黑色点集中掺杂有白色点,白色点集中掺杂有黑色点的情况:

对于这种非线性的情况,一种方法是使用一条曲线去完美分割样品集,如下图:

从二维空间扩展到多维,可以使用某种非线性的方法,让空间从原本的线性空间转换到另一个维度更高的空间,在这个高维的线性空间中,再用一个超平面对样本进行划分,这种情况下,相当于增加了不同样本间的区分度和区分条件。在这个过程中,核函数发挥了至关重要的作用,核函数的作用就是在保证不增加算法复杂度的情况下将完全不可分问题转化为可分或达到近似可分的状态。

上图左侧红色和绿色的点在二维空间中,绿色的点被红色点包围,线性不可分,但是扩展到三维(多维)空间后,可以看到,红绿色点间Z方向的距离有明显差别,同种类别间的点集有一个共同特征就是他们基本都在一个面上,所以借用这个区分,可以使用一个超平面对这两类样本进行分类,如上图中黄色的平面。

线性不可分映射到高维空间,可能导致很高的维度,特殊情况下可能达到无穷多维,这种情况下会导致计算复杂,伴随产生惊人的计算量。但是在SVM中,核函数的存在,使得运算仍然是在低维空间进行的,避免了在高维空间中复杂运算的时间消耗。

SVM另一个巧妙之处是加入了一个松弛变量来处理样本数据可能存在的噪声问题,如下图所示:

SVM允许数据点在一定程度上对超平面有所偏离,这个偏移量就是SVM算法中可以设置的outlier值,对应于上图中黑色实现的长度。松弛变量的加入使得SVM并非仅仅是追求局部效果最优,而是从样本数据分布的全局出发,统筹考量,正所谓成大事者不拘小节。

分类算法SVM(支持向量机)的更多相关文章

  1. SparkMLlib分类算法之支持向量机

    SparkMLlib分类算法之支持向量机 (一),概念 支持向量机(support vector machine)是一种分类算法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最 ...

  2. 跟我学算法-svm支持向量机算法推导

    Svm算法又称为支持向量机,是一种有监督的学习分类算法,目的是为了找到两个支持点,用来使得平面到达这两个支持点的距离最近. 通俗的说:找到一条直线,使得离该线最近的点与该线的距离最远. 我使用手写进行 ...

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

    SVM 原理引入 支持向量机( SVM,Support Vector Machine ) 背景 2012年前较为火热, 但是在12年后被神经网络逼宫, 由于应用场景以及应用算法的不同, SVM还是需要 ...

  4. 跟我学算法-SVM(支持向量机)

    支持向量机是一个点离决策边界越近,离决策面越远的问题 求解的过程主要是通过拉格朗日乘子法,来求解带约束的优化问题,在问题中涉及两个方面,一个是线性的,一个是非线性的,非线性的有 我们平时比较常见的高斯 ...

  5. 机器学习 - 算法 - SVM 支持向量机 Py 实现 / 人脸识别案例

    SVM 代码实现展示 相关模块引入 %matplotlib inline import numpy as np import matplotlib.pyplot as plt from scipy i ...

  6. [分类算法] :SVM支持向量机

    Support vector machines 支持向量机,简称SVM 分类算法的目的是学会一个分类函数或者分类模型(分类器),能够把数据库中的数据项映射给定类别中的某一个,从而可以预测未知类别. S ...

  7. 【机器学习算法-python实现】svm支持向量机(1)—理论知识介绍

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景      强烈推荐阅读(http://www.cnblogs.com/jerrylead/archiv ...

  8. SVM(支持向量机)算法

    第一步.初步了解SVM 1.0.什么是支持向量机SVM 要明白什么是SVM,便得从分类说起. 分类作为数据挖掘领域中一项非常重要的任务,它的目的是学会一个分类函数或分类模型(或者叫做分类器),而支持向 ...

  9. 各常用分类算法的优缺点总结:DT/ANN/KNN/SVM/GA/Bayes/Adaboosting/Rocchio

    1决策树(Decision Trees)的优缺点 决策树的优点: 一. 决策树易于理解和解释.人们在通过解释后都有能力去理解决策树所表达的意义. 二. 对于决策树,数据的准备往往是简单或者是不必要的. ...

随机推荐

  1. 24、vb2_buffer和videobuf_buffer比较分析

    看韦东山视频第三期摄像头驱动中构造了自己的vivi驱动,但是使用的videoBuf结构体,新的版本用的是vb2_buffer结构,我机器上(ubuntu12.04)使用的内核是linux3.2,看了看 ...

  2. 11、V4L2摄像头获取单幅图片测试程序

    #根据网上常见的一个测试程序修改而来 by rockie cheng#include <stdio.h>#include <stdlib.h>#include <stri ...

  3. Android屏幕信息获取

    Android中有时需要获取屏幕的size信息以便对控件位置进行动态控制,最近做了一些研究,现在将获取屏幕大小信息的方法总结如下,可能存在一些地方理解的不全面. 1.getMetrics Displa ...

  4. Swift3.0为视图添加旋转动画_CABasicAnimation

    Swift2.3: //创建旋转动画 let anim = CABasicAnimation(keyPath: "transform.rotation") //旋转角度 anim. ...

  5. 线程堆栈大小 pthread_attr_setstacksize 的使用

    pthread_create 创建线程时,若不指定分配堆栈大小,系统会分配默认值,查看默认值方法如下: # ulimit -s8192# 上述表示为8M:单位为KB. 也可以通过# ulimit -a ...

  6. Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser 2014-06-25 14:25 722人阅读 评论(1) 收藏

    一.Lucene的查询语法 Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html (1) 语法关键字 + ...

  7. 【C++竞赛 E】xxx和yyy的旅行

    时间限制:1s 内存限制:32MB 问题描述 有n个城市和m条双向铁路.对于任意两个不同的城市x和城市y,两个城市之间有双向铁路,否则有双向公路,通过任意一条直达公(铁)路花费一小时.城市x与城市y存 ...

  8. ArcGIS Engine 编辑介绍

    转自原文 ArcGIS Engine 编辑介绍 IWorkspaceEdit接口是ArcGIS Engine 实现空间数据编辑的重要接口,它让程序启动或者停止一个编辑流程,在这个编辑流程内,可以对数据 ...

  9. HDU 5072 Coprime (单色三角形+容斥原理)

    题目链接:Coprime pid=5072"> 题面: Coprime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: ...

  10. 【u021】广义斐波那契数列

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 广义的斐波那契数列是指形如an=p*an-1+q*an-2的数列.今给定数列的两系数p和q,以及数列的 ...