支持向量机(support vector machine)

支持向量机SVM

支持向量机(support vector machine,SVM)是由Cortes和Vapnik在1995年提出的,由于其在文本分类和高维数据中强大的性能,很快就成为机器学习的主流技术,并直接掀起了“统计学习”在2000年前后的高潮,是迄今为止使用的最广的学习算法。

本篇将要简要的介绍一下SVM,如有错误请批评指正,共同学习。本文主要分为以下几个部分:

  • SVM的优化目标(代价函数)
  • SVM最大间隔超平面 large margin(决策边界)
  • SVM最大间隔中的数学原理(mathematics behind large margin classification)
  • 核函数 kernels
  • 实践中使用SVM

一、SVM的代价函数(cost function)

先来看下SVM的代价函数,即SVM的优化目标。SVM的代价函数和logistic regression有几分相似。SVM的代价函数为:

其中为参数,即正则化系数。其中函数和函数的图像如下图所示:

从上图中可以看出,要想最小化代价函数,则:

当一个正样本y=1时,我们希望

当一个负样本y=0时,我们希望

二、SVM最大间隔超平面 large margin(决策边界)

在给定的样本空间中,SVM主要通过划分超平面(决策边界)来实现样本分类,但是存在多个能划分训练样本的超平面(决策边界)如下图所示:

那么SVM会选择哪一个超平面呢?SVM会选择具有最大间隔(margin)的超平面即上图中红色的超平面,因为它和样本之间具有最大的margin,因此意味着这个超平面具有最强的泛化能力(鲁棒性)。

SVM的目的就是为了最大的margin,那么该如何找到这个margin呢?超平面(决策边界)可以用方程来表示:.其中是超平面的法向量,是位移项。在上一节SVM代价函数部分讲到了为了使超平面能够正确分类,需要有如下的约束条件:

所谓支持向量就是距离超平面最近的样本点并且使上式等号成立(在下图中用红色标出)。而两个异类的支持向量到超平面的距离之和即为间隔(margin):

因此,从上图中能够得到间隔(margin)为:

而SVM的任务则是找到间隔最大的超平面,并且要满足的约束条件,即:

为了计算的方便,可以把上式改写为:

我们来看看代价函数中参数C对超平面的影响,如下图所示(图片来源:NG machine learning课):

当我们把C设置成不太大的时候会产生上图中黑色的超平面,而当我们把C设置的过大时,则是上图中粉色的超平面,显然粉色的超平面有点倾向过拟合了,其泛化能力显然很差。因此参数C的选择要折中考虑margin和过拟合。

三、SVM最大间隔中的数学原理(mathematics behind large margin classification)

在上一节其实已经介绍了如何通过数学求解最大间隔,在这一节中更加形象的用图解的方式介绍下具体数学原理。首先先来介绍一下向量内积,这个大家都知道,这里就简单的说下。假设有两个二维向量,其内积,当然其内积也可以通过几何这样计算:,其中P是有符号的,如下图中左图p是正的,右图则为负的。

因此,对于SVM代价函数中的优化目标:,则,表示范数。如下图所示:

因为上的投影,因此的约束条件可以表示为:

下面我们通过图来看看为何SVM会选择具有最大间隔的超平面(决策边界),先来看下图中的决策边界(是超平面的法向量,因此与超平面是垂直的):

如上图中绿色的决策边界,可以看到样本点上的投影非常的小,这就意味着约束条件中会非常的大,这显然与我们的优化目标不符。

我们再来看一个比较好的决策边界:

这个图中绿色的决策边界,可以看到样本点上的投影是最大的,因此对于约束条件中的会相对较小,这正是我们希望看到的。

以上就从数学角度解释了SVM为什么会选择具有最大间隔的超平面。

四、核函数(kernels)

关于核函数最常用的核函数一般有线性核函数(linear kernels)和高斯核函数(Gaussian kernels),高斯核函数又叫径向基函数(Radical Basis Function,RBF) 。

假如给出一个如下图所示的非线性决策边界:

我们可以构造一个如上图中所写的多项式特征变量,来区分正负样本。这种多项式还可以写成上图中的:,其中除了这种表达,还能不能有更好的其他选择去表示特征。这就要引入核函数(kernels),核函数是一种更好的表达。我们可以通过计算原始向量与landmark之间的相似度来表示特征,如下图所示:

当然还可以用其他的函数来计算相似度,只不过这个例子中使用的高斯核函数。我们来看上图中计算的公式,其中:

因此,我们能够发现:

  • 时,
  • 距离很远时,

因此给定一个样本上图中landmark(标记点)会定义出新的特征变量 

下面我们来看看根据计算出的特征怎样去分类样本。如下图所示:

假设当时,我们预测样本类别为“1”,假设我们已经求得,那么对于图中给定的样本x,我们可以计算出,那么代入上式可得:,因此预测样本x的类别“1”。因此如果计算大量的样本,就能得出一个非线性的决策边界,如图所示:

那么现在有一个问题就是,我们是怎样选择得到的,下面来介绍是如何得到的。

在刚开始,我们只需把训练集中的样本一一对应成即可,即给定,令如下图所示:

因此,若给定一个训练样本,能够得到如下特征:

其中

因此,带核函数的SVM(SVM with kernels)的代价函数变为:

关于SVM的核函数(kernels)就介绍到这,下面来看看SVM中参数的选择问题(主要是参数该如何选择):

五、实践中使用SVM

在实际使用SVM的时候,不建议大家自己实现SVM,因为SVM是一个特定的优化问题。目前已经有非常成熟并且高度优化的软件包,如国立台湾大学林智仁教授开发的liblinear(http://www.csie.ntu.edu.tw/~cjlin/liblinear/)和LibSVM(http://www.csie.ntu.edu.tw/~cjlin/libsvm/),非常出名。但是我们依然需要做的是以下两点:

一般来说,当特征维度很高,而样本较少时选择线性核函数。当特征数量较少,样本数量较多时,选择高斯核函数。note:在使用高斯核函数之前要进行特征缩放(如果特征值之间差距过大)。

还有一些其他的核函数如下表所示:(实际上,只要一个对称函数所对应的核矩阵满足半正定的,就能作为核函数使用)

最后,我们来比较下逻辑回归和SVM,看看何种情况下该使用逻辑回归,何种情况下使用SVM。详见下图(直接盗用NG的图)

以上就是关于SVM的全部知识,大家共同学习。

时间: 2024-10-27 06:32:23

支持向量机(support vector machine)的相关文章

支持向量机(Support Vector Machine,SVM)

SVM: 1. 线性与非线性 核函数: 2. 与神经网络关系 置信区间结构: 3. 训练方法: 4.SVM light,LS-SVM: 5. VC维 u-SVC 与 c-SVC 区别? 除参数不同外,两者基本一样. c-SVC  c∈(0,∞) u-SVC  c∈[0,1] c是一个很好的特征,它与支持向量的比率和训练误差的比率 相关. SVM求解QR问题中,变量维数=训练样本个数.从而使其中矩阵元素的个数 是 训练样本个数的平方. SVM标准算法中,需要求解复杂的QP问题,理论上获全局最优解,

支持向量机SVM(Support Vector Machine)

支持向量机(Support Vector Machine)是一种监督式的机器学习方法(supervised machine learning),一般用于二类问题(binary classification)的模式识别应用中. 支持向量机的最大特点是既能够最小化经验损失(也叫做经验风险.或者经验误差),同时又能够最大化几何间距(分类器的置信度),因此SVM又被称为最大边缘区(间距)的分类器. 根据具体应用场景的不同,支持向量机可以分为线性可分SVM.线性SVM和带有核函数的SVM.最终的结果都是得

斯坦福第十二课:支持向量机(Support Vector Machines)

12.1  优化目标 12.2  大边界的直观理解 12.3  数学背后的大边界分类(可选) 12.4  核函数 1 12.5  核函数 2 12.6  使用支持向量机 12.1  优化目标 到目前为止,你已经见过一系列不同的学习算法.在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法 A 还是学习算法 B,而更重要的是, 应用这些算法时,所创建的大量数据在应用这些算法时,表现情况通常依赖于你的水平.比 如:你为学习算法所设计的特征量的选择,以及如何选择正则化参数,

机器学习课程-第7周-支持向量机(Support Vector Machines)

1. 优化目标 在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法A还是学习算法B,而更重要的是,应用这些算法时,所创建的大量数据在应用这些算法时,表现情况通常依赖于你的水平.比如:你为学习算法所设计的特征量的选择,以及如何选择正则化参数,诸如此类的事.还有一个更加强大的算法广泛的应用于工业界和学术界,它被称为支持向量机(Support Vector Machine).与逻辑回归和神经网络相比,支持向量机,或者简称SVM,在学习复杂的非线性方程时提供了一种更为清晰,

机器学习之支持向量机(Support Vector Machine)(更新中...)

支持向量机 支持向量机(support vector machines,SVMs)是一种二类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机:支持向量机还包括核技巧,这使它成为实质上的非线性分类器.支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming)的问题. 支持向量机学习方法包含构建由简至繁的模型:线性可分支持向量机(linear support vector machine in

支持向量机(SVM:support vector machine)

传统机器学习分类任务中,我认为支持向量机是最难.最复杂.最有效的一种模型.可能是由于其是一种特殊的神经网络的缘故吧! 1.支持向量机简介 支持向量机(support vector machines,SVM)是一种二类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机:支持向量机还包括核技巧,这使它成为实质上的非线性分类器.支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming,不怕,附录有解

支持向量机(Support Vector Machine / SVM)

支持向量机(Support Vector Machines, SVM):是一种机器学习算法. 支持向量(Support Vector)就是离分隔超平面最近的那些点.机(Machine)就是表示一种算法,而不是表示机器. 基于训练集样本在空间中找到一个划分超平面,将不同类别的样本分开. SVM 工作原理 在样本空间中,划分超平面可通过如下线性方程来描述: 原文地址:https://www.cnblogs.com/wanglinjie/p/11729786.html

Machine Learning Techniques -1-Linear Support Vector Machine

1-Linear Support Vector Machine 我们将这种定义为margin,则之前判断最优划分的问题转化为寻找最大margain的问题. 对于待选的几个w所表示的线,问题转化成利用对应w比较相对距离的问题. 此时定义w为方向向量,b为之前的w0,即bia. 由于w就是所求点到直线的法线方向,问题转化为求投影的问题. 因为每个点对应符号yn只有在和距离表示的绝对值内部符号为+的时候才说明划分正确,所以可以乘上yn来去除abs() 这里的距离是一种容忍度,所以我们选其中最近的那个.

机器学习技法——第1-2讲.Linear Support Vector Machine

本栏目(机器学习)下机器学习技法专题是个人对Coursera公开课机器学习技法(2015)的学习心得与笔记.所有内容均来自Coursera公开课Machine Learning Techniques中Hsuan-Tien Lin林轩田老师的讲解.(https://class.coursera.org/ntumltwo-001/lecture) 第1讲-------Linear Support Vector Machine 在机器学习基石介绍的基本工具(主要围绕特征转换Feature Transf