支持向量机(SVM)

在机器学习领域,SVM是一个与学习算法关联的监督式学习模型,这些学习算法可以分析用来做分类和回归的数据。给定一个训练样本集,每个都被标记为两类中的一类,一个SVM训练算法构建一个模型,该模型能够将新的数据分到一个类中,使它成为一个非概率的二类线性分类器。一个SVM模型是样本点在空间的一种表示,(被映射)以至于在不同类别中的样本能够被一个最大的间隔分开。新的样本被映射到相同的空间中,被预测属于一个类别,基于样本点落在间隔的哪一边。除了线性分类的功能以外,SVM可以有效的表现出非线性分类的功能,通过使用核技巧,隐含的将输入映射到高维特征空间。如果数据没有被打标签,一个监督式学习是不可能的,此时则需要无监督学习,无监督学习将探索数据的自然的聚类来分组,并将新的数据映射到这些形成后的组别中。这个为SVM提供了改进的聚类算法称为SVC(support vector clustering),并且广泛使用在工业应用中作为分类途径的预处理,即在数据没有被打标签时,又在只有一些数据是打过标签时。

定义

更正式的,一个支持向量机构造一个超平面,或者一组超平面,在一个高维或者无穷维度的空间,这个空间可以用来做分类,回归,或其他任务。直观上,一个好的分离(分类)可以用一个超平面来获得,该超平面到每一类中最近的训练点的距离是最大的,这个距离称为函数间隔,因为一般情况下,该间隔越大,分类器的广义误差越低。

然而原始问题可能是在有限维空间描述的,通常在该空间中数据集不是线性可分的。鉴于此,原始的有限维空间可以被映射到一个更高维度的空间中,在高维空间中有可能使得分割更加容易。为了计算加载更加合理化,SVM机制所使用的映射要被设计可以确保一件事:依据原始空间中变量的点积可以很容易被计算,通过用选定的核函数$k(x,y)$来定义点积去适应该问题。在高维空间中的超平面被定义成点的集合,在该空间中,由向量表示的点的内积(点积)是一个常数。定义超平面的向量可以选择成数据库中出现的特征向量$x_i$的图像的参数$\alpha_i$的线性组合。超平面这样选择以后,在特征空间中的点x要被映射到超平面中是用该关系定义的:$$\sum_i \alpha_i k(x_i,x) = \mathrm{constant}$$

注意,如果$k(x,y)$随着$y$远离$x$而变小,在和($sum$)中的每一项都可以衡量测试点$x$与数据基准点$x_i$(训练点)的接近程度,这样以来,上面核函数的和可以被用来衡量相对接近程度,每个测试点到最初在一个或者其他集合中将要被分割的数据点的接近程度。

注意到这样的事实,要被映射到(任意超平面)点$x$的集合,允许集合间更加复杂的分割,该集合在所有的原始空间中不一定是凸集。

动机

H1不能将类分开,H2可以。但是只有一个很小的间隔,H3用一个最大的间隔将它们分开。数据分类是机器学习的一般任务。假设有一些给定的数据点,其中每一个都属于两类中的一类,并且目标是决定一个新的数据点该进入哪一个类。在SVM情形中,数据点被当做p-维向量(p个数字组成的列表),我们想知道是否能够用(p-1)-维超平面将其分开,这就是线性分类器。有很多超平面可能将数据分类,一个合理的选择是最好的超平面能够代表两类中的最大分割或者间隔,所以我们选择这个超平面,这样可以使得两边距离超平面的最近的数据点到平面的距离是最大的,如果这样的一个超平面存在,则被认为是最大间隔超平面,由其定义的线性分类器则被认为是最大间隔分类器,或者等价的认为是稳定性最优的感知机。

我们被给定一组训练数据集,包含n个数据点,其形式为:

其中yi是1或者-1,每一个指出数据点Xi属于哪一类。每一个Xi是一个p-维的实向量。我们希望找到“最大间隔超平面”,该平面可以将yi=1的点与yi=-1的点划分开来。这样可以使得两边最近的点到超平面的距离是最大的。

任何超平面都可以被写成满足如下方程的点的集合: w*x-b=0

其中w是超平面的法向量(不一定被归一化),参数b/w确定了超平面沿着法向量w方向上的距离原点的偏移(也就是超平面到原点的距离)。

硬间隔

如果训练数据是线性可分的。我们可以选择两个平行的超平面,其中每一个都可以将数据分成两类,使得两个超平面之间的距离尽可能的大。两个超平面之间的区域称为“间隔”,最大间隔的超平面正好位于这两个超平面的中间。这两个超平面可以用下面两个方程来描述:

w*x-b=1 和 w*x-b=-1

在几何上,这两个超平面之间的距离是2/w,所以要想最大化该距离,我们最小化w即可。由于我们需要防止数据点落入间隔之中,我们添加下面的约束条件:

对于下面每一个i,

这些约束条件规定了每一个数据点都必须落在间隔的正确的一边。可以写为如下形式: yi(w*x-b)>=1,for all 1<i<n

将上面的放到一起就是: min w s.t. yi(w*x-b)>=1,对于每一个i=1...n

使得问题可解的w和b确定了我们的分类器:x->sgn(wx+b)

由几何描述得到的一个显而易见,却重要的结论是最大间隔超平面是完全由与超平面最近的数据点xi所决定,这些数据点xi称为支持向量。

软间隔

为了将SVM扩展到数据集并非线性可分的情形,我们引入中枢损失函数: max(0, 1-yi(wx+b))

这个函数是0,如果约束条件1满足的话。换句话说,如果xi落在间隔正确的一边。 对于落在间隔错误一边的数据点,该函数的值与到边界的距离成比例。所以我们希望最小化以下表达式:

其中参数lamda确定了权重,该权重权衡了增加间隔大小以及确保xi能够落在边界正确的一边。这样对于充分小的lamda值,软间隔SVM的表现等价于硬间隔SVM,如果输入数据是线性可分的,但是如果不是线性可分依然能够学习到一个可行的分类规则。

非线性分类

原始的最大间隔超平面算法是Vapnik在1963年提出的,该算法构建了一个线性分类器。然而,在1992年,Bernhard E. Boser, Isabelle M. Guyon 和 Vladimir N. Vapnik建议在最大间隔超平面上使用核技巧来创建一个非线性分类器。其算法在形式上是相似的(与线性分类器相比),除了每一个点积都用非线性核函数替代。这允许了算法可以在一个转换后的特征空间中符合最大间隔超平面。这种转换可以是非线性的,转换后的空间是高维的。尽管分类器在转换后的特征空间中是一个超平面,但是在原始的输入空间中可以是非线性的。

值得注意的是,尽管给定足够的样本数据后算法依然能够表现很好,但是在高维特征空间中增加了SVM的广义误差。

一些常用的核函数包括: 齐次多项式 非齐次多项式 高斯径向基核函数 双曲正切函数

核与通过方程k(x,y)=f(x)*f(y)转换f(x)相关,w值同样在被转换的空间当中,分类中与w的点积也可以用核技巧计算,例如:。。。

计算SVM分类器

计算SVM分类器(软间隔)意味着最小化下面的表达式:

我们关注软间隔分类器是因为,如上面所提到的,给lamda选取一个充分小的值将生成一个输入数据线性可分的硬间隔分类器。传统的解决途径,也即涉及简化表达式(2)为一个二次规划问题,在下面详细说明。之后,最近的解决方法诸如子梯度下降法和坐标下降法将会被讨论。

原始问题

最小化表达式(2)可以被重新写为一个约束优化问题,用下面的方式用一个不同的目标函数。

对偶问题

时间: 2024-10-30 05:24:15

支持向量机(SVM)的相关文章

支持向量机(SVM)(二)-- 拉格朗日对偶(Lagrange duality)

简介: 1.在之前我们把要寻找最优的分割超平面的问题转化为带有一系列不等式约束的优化问题.这个最优化问题被称作原问题.我们不会直接解它,而是把它转化为对偶问题进行解决. 2.为了使问题变得易于处理,我们的方法是把目标函数和约束全部融入一个新的函数,为了使问题变得易于处理,我们的方法是把目标函数和约束全部融入一个新的函数,即拉格朗日函数,再通过这个函数来寻找最优点.即拉格朗日函数,再通过这个函数来寻找最优点. 3.约束条件可以分成不等式约束条件和等式约束条件,只有等式约束条件的问题我们在高等数学课

支持向量机(SVM)(五)-- SMO算法详解

一.我们先回顾下SVM问题. A.线性可分问题 1.SVM基本原理: SVM使用一种非线性映射,把原训练            数据映射到较高的维.在新的维上,搜索最佳分离超平面,两个类的数据总可以被超平面分开. 2.问题的提出: 3.如何选取最优的划分直线f(x)呢? 4.求解:凸二次规划 建立拉格朗日函数: 求偏导数: B.线性不可分问题 1.核函数 如下图:横轴上端点a和b之间红色部分里的所有点定为正类,两边的黑色部分里的点定为负类. 设: g(x)转化为f(y)=<a,y> g(x)=

第八篇:支持向量机 (SVM)

前言 本文讲解如何使用R语言中e1071包中的SVM函数进行分类操作,并以一个关于鸢尾花分类的实例演示具体分类步骤. 分析总体流程 1. 载入并了解数据集:2. 对数据集进行训练并生成模型:3. 在此模型之上调用测试数据集进行分类测试:4. 查看分类结果:5. 进行各种参数的调试并重复2-4直至分类的结果让人满意为止. 参数调整策略 综合来说,主要有以下四个方面需要调整: 1. 选择合适的核函数:2. 调整误分点容忍度参数cost:3. 调整各核函数的参数:4. 调整各样本的权重. 其中,对于特

机器学习第7周-炼数成金-支持向量机SVM

支持向量机SVM 原创性(非组合)的具有明显直观几何意义的分类算法,具有较高的准确率源于Vapnik和Chervonenkis关于统计学习的早期工作(1971年),第一篇有关论文由Boser.Guyon.Vapnik发表在1992年(参考文档见韩家炜书9.10节)思想直观,但细节异常复杂,内容涉及凸分析算法,核函数,神经网络等高深的领域,几乎可以写成单独的大部头与著.大部分非与业人士会觉得难以理解.某名人评论:SVM是让应用数学家真正得到应用的一种算法 思路 简单情况,线性可分,把问题转化为一个

机器学习与数据挖掘-支持向量机(SVM)(一)

最近在看斯坦福大学的机器学习的公开课,学习了支持向量机,再结合网上各位大神的学习经验总结了自己的一些关于支持向量机知识. 一.什么是支持向量机(SVM)? 1.支持向量机(Support Vector Machine,常简称为SVM)是一种监督式学习的方法,可广泛地应用于统计分类以及回归分析.支持向量机属于一般化线性分类器,这族分类器的特点是他们能够同时最小化经验误差与最大化几何边缘区,因此支持向量机也被称为最大边缘区分类器. 2.支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个

支持向量机SVM的SMO方法实现

hdu 1163 Eddy's digital Roots Problem Description The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two

opencv 支持向量机SVM分类器

支持向量机SVM是从线性可分情况下的最优分类面提出的.所谓最优分类,就是要求分类线不但能够将两类无错误的分开,而且两类之间的分类间隔最大,前者是保证经验风险最小(为0),而通过后面的讨论我们看到,使分类间隔最大实际上就是使得推广性中的置信范围最小.推广到高维空间,最优分类线就成为最优分类面. 支持向量机是利用分类间隔的思想进行训练的,它依赖于对数据的预处理,即,在更高维的空间表达原始模式.通过适当的到一个足够高维的非线性映射,分别属于两类的原始数据就能够被一个超平面来分隔.如下图所示: 空心点和

【转载】支持向量机SVM(一)

支持向量机SVM(一) [转载请注明出处]http://www.cnblogs.com/jerrylead 1 简介 支持向量机基本上是最好的有监督学习算法了.最开始接触SVM是去年暑假的时候,老师要求交<统计学习理论>的报告,那时去网上下了一份入门教程,里面讲的很通俗,当时只是大致了解了一些相关概念.这次斯坦福提供的学习材料,让我重新学习了一些SVM知识.我看很多正统的讲法都是从VC 维理论和结构风险最小原理出发,然后引出SVM什么的,还有些资料上来就讲分类超平面什么的.这份材料从前几节讲的

【转载】支持向量机SVM(二)

支持向量机SVM(二) [转载请注明出处]http://www.cnblogs.com/jerrylead 6 拉格朗日对偶(Lagrange duality) 先抛开上面的二次规划问题,先来看看存在等式约束的极值问题求法,比如下面的最优化问题: 目标函数是f(w),下面是等式约束.通常解法是引入拉格朗日算子,这里使用来表示算子,得到拉格朗日公式为 L是等式约束的个数. 然后分别对w和求偏导,使得偏导数等于0,然后解出w和.至于为什么引入拉格朗日算子可以求出极值,原因是f(w)的dw变化方向受其

OpenCV支持向量机(SVM)介绍

支持向量机(SVM)介绍 目标 本文档尝试解答如下问题: 如何使用OpenCV函数 CvSVM::train 训练一个SVM分类器, 以及用 CvSVM::predict 测试训练结果. 什么是支持向量机(SVM)? 支持向量机 (SVM) 是一个类分类器,正式的定义是一个能够将不同类样本在样本空间分隔的超平面. 换句话说,给定一些标记(label)好的训练样本 (监督式学习), SVM算法输出一个最优化的分隔超平面. 如何来界定一个超平面是不是最优的呢? 考虑如下问题: 假设给定一些分属于两类