Svm基本知识与原理 -
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
支持向量机方法是建立在统计学习理论的VC 维理论和结 构风险最小原理基础上的,根据有限的样本信息在模型的复 杂性(即对特定训练样本的学习精度)和学习能力(即无错 误地识别任意样本的能力)之间寻求最佳折衷,以期获得最 好的推广能力 。
传统的定义是:对一个指标函数集,如果存在H个样本能够 被函数集中的函数按所有可能的2的H次方种形式分开,则称 函数集能够把H个样本打散;函数集的VC维就是它能打散的 最大样本数目H。若对任意数目的样本都有函数能将它们打散 ,则函数集的VC维是无穷大,有界实函数的VC维可以通过 用一定的阀值将它转化成指示函数来定义。
VC维反映了函数集的学习能力,VC维越大则学习机器越复 杂(容量越大),遗憾的是,目前尚没有通用的关于任意函 数集VC维计算的理论,只对一些特殊的函数集知道其VC维 。例如在N维空间中线形分类器和线形实函数的VC维是N+1 VC维是函数集自身的特性,如果给定L个数据点,函数集 f(x,a),分两类,可以有2L 种分类方法,将它们分开,并且每一 种分类都可以从函数集f(x,a)中找到一个函数来实现,我们就 说这个函数集可以将该数据集打散。一个函数集的VC维h就 是可以将该函数集打散的最大数据点数。下图为一个二维空 间的有向直线集,VC维为3维。
在这个问题中,自变量就是w,而目标函数是w的二次函数, 所有的约束条件都是w的线性函数这种规划问题有个很有名气 的称呼——二次规划,而且可以更进一步的说,由于它的可 行域是一个凸集,因此它是一个凸二次规划。凸二次规划让 人喜欢的地方就在于,它有解,而且可以找到。
通过给每个约束条件添加拉格朗日因子,
T
i i j i j
j
y y x x n
T
i i j i j
j
i, j
n
n
b i y j i
j
i
y y x x n
i
1 n 2 i
i, j
T
i i j i j
j
这样,我们就得到关于对的优化问题。
这个问题有更高效的优化方法。
y y x x n
这个公式是不是看上去有点眼熟?没错,这不就是解析几何 中点xi到直线g(x)=0的距离公式嘛!(推广一下,是到超平面 g(x)=0的距离) 。||w||叫做向量w的范数,范数是对向量长 度的一种度量。当用归一化的w和b代替原值之后的间隔有一 个专门的名称,叫做几何间隔,几何间隔所表示的正是点到 超平面的欧氏距离,同样可以定义一个点的集合(就是一组 样本)到某个超平面的距离为此集合中离超平面最近的点的 距离。下面这张图更加直观的展示出了几何间隔的现实含义:
线性分类器Part 1
C1和C2是要区分的两个类别,中间 的直线就是一个分类函数,它可以将 两类样本完全分开。一般的,如果一 个线性函数能够将样本完全正确的分 开,就称这些数据是线性可分的,否 则称为非线性可分的。
什么叫线性函数呢?在一维空间里就是一个点,在二维空间 里就是一条直线,三维空间里就是一个平面,可以如此想象 下去,如果不关注空间的维数,这种线性函数还有一个统一 的名称——超平面(Hyper Plane)! 实际上,一个线性函数是一个实值函数,而我们的分类问题 需要离散的输出值,这时候只需要简单的在实值函数的基础 上附加一个阈值即可,通过分类函数执行时得到的值大于还 是小于这个阈值来确定类别归属。
Svm基本知识与原理
SVM的基本知识介绍 线性分类器和非线性分类器 最优超平面 核函数的作用及构造 SVM的应用
SVM入门(一)
支持向量机(Support Vector Machine)是Vapnik等于 1995年首先提出的,它在解决小样本、非线性及高维模式识 别中表现出许多特有的优势,并能够推广应用到函数拟合等 其他机器学习问题中。
例如我们有一个线性函数 g(x)=wx+b 我们可以取阈值为0,这样当有一个样本xi需要判别的时候, 我们就看g(xi)的值。若g(xi)>0,就判别为类别C1,若 g(xi)<0,则判别为类别C2。此时也等价于给函数g(x)附加 一个符号函数sgn(),即f(x)=sgn [g(x)]是我们真正的判别 函数。
如果有这样的函数,那么当给了一个低维空间的输入x以后 g(x)=K(w,x)+b f(x’)=<w’,x’>+b 这两个函数的计算结果就完全一样,我们直接拿低维的输入 往g(x)里面代就可以了(这回的g(x)就不是线性函数啦,因为 你不能保证K(w,x)这个表达式里的x次数不高于1)。万幸的 是,这样的K(w,x)确实存在,它被称作核函数,而且还不止一 个,事实上,只要是满足了Mercer条件的函数,都可以作为 核函数。核函数的基本作用就是接受两个低维空间里的向量, 能够计算出经过某个变换后在高维空间里的向量内积值。
a y x n i1 i i i
因此有
部分可以从内积符号中拿出来, 得到g(x)的式子为:
这里的形式的有趣之处在于,对于新点 x 的预测,只需要计 算它与训练数据点的内积即可,这一点至关重要,是之后使 用 Kernel 进行非线性推广的基本前提。此外,所谓 Supporting Vector 也在这里显示出来——事实上,所有非 Supporting Vector 所对应的系数 α 都是等于零的,因此对 于新点的内积计算实际上只要针对少量的“支持向量”而不 是所有的训练数据即可
我们把间隔固定为1,这是指把所有样本点中间隔最小的那 一点的间隔定为1,也就意味着集合中的其他点间隔都不会 小于1,按照间隔的定义,满足这些条件就相当于让下面的 式子总是成立: yi[(w·xi)+b]≥1 (i=1,2,…,l) (l是总的样本数) 经常用变换过的形式: yi[(w·xi)+b]-1≥0 (i=1,2,…,l) (l是总的样本数) 我们分类问题也被转化成一个带约束的最小值的问题:
SVM入门 为何需要核函数
问题只是它不是一个线性函数, 但是,下面要注意看了,新建一 个向量y和a:
g(x)=f(y)=ay 在任意维度的空间中,这种形式的函数都是 一个线性函数,因为自变量y的次数不大于 1。 看出妙在哪了么?原来在二维空间中一个线性不可分的问题,映射到四维空间 后,变成了线性可分的!因此这也形成了我们最初想解决线性不可分问题的基 本思路——向高维空间转化,使其变得线性可分。
置信风险与两个量有关,一是样本数量,显然给定的样本 数量越大,我们的学习结果越有可能正确,此时置信风险越 小;二是分类函数的VC维,显然VC维越大,推广能力越差, 置信风险会变大。 R(w)≤Remp(w)+Ф(h/n)统计学习的目标从经验风险最小化变为
了寻求经验风险与置信风险的和最小,即结构风险最小。
寻求每个子集的最小经验风险,通常它随着子集 复杂度的增加而减小,即
Remp1 Remp2 Rempi R emp0
经验风险,置信范围及真实风险的界与VC 维的关系图如下:
SRM就是要找出最小化实际风险边界的函数 集的那个子集。在嵌套子集对应的学习机 序列中,应选择经验风险和置信范围之和 最小的一个。
们把它稍微旋转一下,只要不把两类数据分错,仍然可以 达到上面说的效果,稍微平移一下,也可以。
SVM入门 线性分类器Part 2
对于样本分类的不适定问题,需要有一个指标来衡量解决 方案的好坏,而分类间隔是一个比较好的指标。我们定义一个 样本点到超平面的间隔:δi=yi(wxi+b)。现在把w和b进行归一 化,即用w/||w||和b/||w||分别代替原来的w和b,那么 间隔就可以写成
H是分类面,而H1和 H2是平行于H,且过 离H最近的两类样本的 直线,H1与H,H2与 H之间的距离就是几何 间隔。误分次数一定程 度上代表分类器的误差。 几何间隔与样本的误 分次数间存在关系:
注意到间隔与||w||是成反比的,因此最大化间隔与最小化 ||w||完全是一回事。而我们常用的方法并不是固定||w||的大 小而寻求最大几何间隔,而是固定间隔,寻找最小的||w||。
max
i 1
1n
2 i
i
i1, y1
T
i j i j
j
n
Subject to
y 0,
i
0
ii
i 1
推导过程中可以得到一些有趣的形式,首先关于hyper plane,对
于一个数据点x进行分类,实际上是通过把x带到 g(x) Tx b
算出结果后根据其正负号来进行类别划分。而前面的推导中有
机器学习本质上就是一种对问题真实模型的逼近,但毫无 疑问,真实模型一定是不知道的。那么我们选择的假设与问 题真实解之间究竟有多大差距,我们就没法得知。这个与问 题真实解之间的误差,就叫做风险。我们选择了一个假设后, 真实误差无从得知, 但我们可以用某些可以掌握的量来逼近 它。最直观的想法就是使用分类器在样本数据上的分类的结 果与真实结果(因为样本是已经标注过的数据,是准确的数 据)之间的差值来表示。这个差值叫做经验风险Remp(w)。 以前的机器学习方法都把经验风险最小化作为努力的目标, 但后来发现很多分类函数能够在样本集上轻易达到100%的正 确率,在真实分类时却一塌糊涂(即所谓的推广能力差,或 泛化能力差)。
得到下式:
y x l ,
i =1
T b 1 i
y x l 0 n
i =1
i ii
y l 0 n
b
i =1
0
ii
将上式代入得:
y y x x l ,b, 1 n 2 i, j
2
下面最优超平面问题,就是将上述问题的优化:
Minimize(w,b): L 1 w w
Subject
to :
2
yi (w xi b) 1,i 1,l
(1)
SVM入门 线性分类器的求解——问题的描述与转化
由上节可知 我们的目标函数:
用另一个完全等价的目标函数来代替,那就是:
此时的情况便是选择了一个足够复杂的分类函数,能够精 确的记住每一个样本,但对样本之外的数据一律分类错误。
统计学习引入了泛化误差界的概念,就是指真实风险应该 由两部分内容刻画,一是经验风险,代表了分类器在给定样 本上的误差;二是置信风险,代表了我们在多大程度上可以 信任分类器在未知样本上分类的结果。很显然,第二部分是 没有办法精确计算的,因此只能给出一个估计的区间,也使 得整个误差只能计算上界,而无法计算准确的值。
式中,置信范围项取决于函数集的选择,而经验风险取决 于通过学习选择的一个特殊的函数。所以可以寻找函数集的子 集,使得风险边界在此子集上最小。
SRM原则引入一个“结构”,将函数集分成一个层 层嵌套的子集,如下图:
则每个子集的VC维为:hi,且随着子集的复 杂度的增加而增加,因此, h1<=h2<=h3………<=h; ,同一个子集中的置信 范围就是相同的,则有,
计算分类间隔:
沿着法向量方向作一条直线与H1和H2相交于X+和X-,这 两点之间距离就是所求得的分类间隔M。它们满足:
x wb 1
x w b 1
两式相减得:w(x x ) 2
则:M x x 2 2 / w
wT w
当 f (w) 1 w 2 最小时,即分类间隔最大的超平面。
关于g(x)=wx+b这个表达式要注意三点:一,式中的x不是 二维坐标系中的横轴,而是样本的向量表示。二,这个形 式并不局限于二维的情况,在n维空间中仍然可以使用这个 表达式,只是式中的w成为了n维向量;三,g(x)不是中间 那条直线的表达式,中间那条直线的表达式是g(x)=0,即 wx+b=0,我们也把这个函数叫做分类面。 实际上很容易看出来,中间那条分界线并不是唯一的,我
如果直接来解这个求最小值问题,很容易看出当||w||=0的时 候就得到了目标函数的最小值。反映在图中,就是H1与H2 两条直线间的距离无限大,这个时候,所有的样本点(无论 正样本还是负样本)都跑到了H1和H2中间,而我们原本的 意图是,H1右侧的 被分为正类,H2 左侧的被分为负类,位 于两类中间的样本则拒绝分类。这下可好,所有样本点都进 入了无法分类的灰色地带。造成这种结果的原因是在描述问 题的时候只考虑了目标,而没有加入约束条件, 体现在我们 的问题中就是样本点必须在H1或H2的某一侧(或者至少在 H1和H2上),而不能跑到两者中间。
传统的定义是:对一个指标函数集,如果存在H个样本能够 被函数集中的函数按所有可能的2的H次方种形式分开,则称 函数集能够把H个样本打散;函数集的VC维就是它能打散的 最大样本数目H。若对任意数目的样本都有函数能将它们打散 ,则函数集的VC维是无穷大,有界实函数的VC维可以通过 用一定的阀值将它转化成指示函数来定义。
VC维反映了函数集的学习能力,VC维越大则学习机器越复 杂(容量越大),遗憾的是,目前尚没有通用的关于任意函 数集VC维计算的理论,只对一些特殊的函数集知道其VC维 。例如在N维空间中线形分类器和线形实函数的VC维是N+1 VC维是函数集自身的特性,如果给定L个数据点,函数集 f(x,a),分两类,可以有2L 种分类方法,将它们分开,并且每一 种分类都可以从函数集f(x,a)中找到一个函数来实现,我们就 说这个函数集可以将该数据集打散。一个函数集的VC维h就 是可以将该函数集打散的最大数据点数。下图为一个二维空 间的有向直线集,VC维为3维。
在这个问题中,自变量就是w,而目标函数是w的二次函数, 所有的约束条件都是w的线性函数这种规划问题有个很有名气 的称呼——二次规划,而且可以更进一步的说,由于它的可 行域是一个凸集,因此它是一个凸二次规划。凸二次规划让 人喜欢的地方就在于,它有解,而且可以找到。
通过给每个约束条件添加拉格朗日因子,
T
i i j i j
j
y y x x n
T
i i j i j
j
i, j
n
n
b i y j i
j
i
y y x x n
i
1 n 2 i
i, j
T
i i j i j
j
这样,我们就得到关于对的优化问题。
这个问题有更高效的优化方法。
y y x x n
这个公式是不是看上去有点眼熟?没错,这不就是解析几何 中点xi到直线g(x)=0的距离公式嘛!(推广一下,是到超平面 g(x)=0的距离) 。||w||叫做向量w的范数,范数是对向量长 度的一种度量。当用归一化的w和b代替原值之后的间隔有一 个专门的名称,叫做几何间隔,几何间隔所表示的正是点到 超平面的欧氏距离,同样可以定义一个点的集合(就是一组 样本)到某个超平面的距离为此集合中离超平面最近的点的 距离。下面这张图更加直观的展示出了几何间隔的现实含义:
线性分类器Part 1
C1和C2是要区分的两个类别,中间 的直线就是一个分类函数,它可以将 两类样本完全分开。一般的,如果一 个线性函数能够将样本完全正确的分 开,就称这些数据是线性可分的,否 则称为非线性可分的。
什么叫线性函数呢?在一维空间里就是一个点,在二维空间 里就是一条直线,三维空间里就是一个平面,可以如此想象 下去,如果不关注空间的维数,这种线性函数还有一个统一 的名称——超平面(Hyper Plane)! 实际上,一个线性函数是一个实值函数,而我们的分类问题 需要离散的输出值,这时候只需要简单的在实值函数的基础 上附加一个阈值即可,通过分类函数执行时得到的值大于还 是小于这个阈值来确定类别归属。
Svm基本知识与原理
SVM的基本知识介绍 线性分类器和非线性分类器 最优超平面 核函数的作用及构造 SVM的应用
SVM入门(一)
支持向量机(Support Vector Machine)是Vapnik等于 1995年首先提出的,它在解决小样本、非线性及高维模式识 别中表现出许多特有的优势,并能够推广应用到函数拟合等 其他机器学习问题中。
例如我们有一个线性函数 g(x)=wx+b 我们可以取阈值为0,这样当有一个样本xi需要判别的时候, 我们就看g(xi)的值。若g(xi)>0,就判别为类别C1,若 g(xi)<0,则判别为类别C2。此时也等价于给函数g(x)附加 一个符号函数sgn(),即f(x)=sgn [g(x)]是我们真正的判别 函数。
如果有这样的函数,那么当给了一个低维空间的输入x以后 g(x)=K(w,x)+b f(x’)=<w’,x’>+b 这两个函数的计算结果就完全一样,我们直接拿低维的输入 往g(x)里面代就可以了(这回的g(x)就不是线性函数啦,因为 你不能保证K(w,x)这个表达式里的x次数不高于1)。万幸的 是,这样的K(w,x)确实存在,它被称作核函数,而且还不止一 个,事实上,只要是满足了Mercer条件的函数,都可以作为 核函数。核函数的基本作用就是接受两个低维空间里的向量, 能够计算出经过某个变换后在高维空间里的向量内积值。
a y x n i1 i i i
因此有
部分可以从内积符号中拿出来, 得到g(x)的式子为:
这里的形式的有趣之处在于,对于新点 x 的预测,只需要计 算它与训练数据点的内积即可,这一点至关重要,是之后使 用 Kernel 进行非线性推广的基本前提。此外,所谓 Supporting Vector 也在这里显示出来——事实上,所有非 Supporting Vector 所对应的系数 α 都是等于零的,因此对 于新点的内积计算实际上只要针对少量的“支持向量”而不 是所有的训练数据即可
我们把间隔固定为1,这是指把所有样本点中间隔最小的那 一点的间隔定为1,也就意味着集合中的其他点间隔都不会 小于1,按照间隔的定义,满足这些条件就相当于让下面的 式子总是成立: yi[(w·xi)+b]≥1 (i=1,2,…,l) (l是总的样本数) 经常用变换过的形式: yi[(w·xi)+b]-1≥0 (i=1,2,…,l) (l是总的样本数) 我们分类问题也被转化成一个带约束的最小值的问题:
SVM入门 为何需要核函数
问题只是它不是一个线性函数, 但是,下面要注意看了,新建一 个向量y和a:
g(x)=f(y)=ay 在任意维度的空间中,这种形式的函数都是 一个线性函数,因为自变量y的次数不大于 1。 看出妙在哪了么?原来在二维空间中一个线性不可分的问题,映射到四维空间 后,变成了线性可分的!因此这也形成了我们最初想解决线性不可分问题的基 本思路——向高维空间转化,使其变得线性可分。
置信风险与两个量有关,一是样本数量,显然给定的样本 数量越大,我们的学习结果越有可能正确,此时置信风险越 小;二是分类函数的VC维,显然VC维越大,推广能力越差, 置信风险会变大。 R(w)≤Remp(w)+Ф(h/n)统计学习的目标从经验风险最小化变为
了寻求经验风险与置信风险的和最小,即结构风险最小。
寻求每个子集的最小经验风险,通常它随着子集 复杂度的增加而减小,即
Remp1 Remp2 Rempi R emp0
经验风险,置信范围及真实风险的界与VC 维的关系图如下:
SRM就是要找出最小化实际风险边界的函数 集的那个子集。在嵌套子集对应的学习机 序列中,应选择经验风险和置信范围之和 最小的一个。
们把它稍微旋转一下,只要不把两类数据分错,仍然可以 达到上面说的效果,稍微平移一下,也可以。
SVM入门 线性分类器Part 2
对于样本分类的不适定问题,需要有一个指标来衡量解决 方案的好坏,而分类间隔是一个比较好的指标。我们定义一个 样本点到超平面的间隔:δi=yi(wxi+b)。现在把w和b进行归一 化,即用w/||w||和b/||w||分别代替原来的w和b,那么 间隔就可以写成
H是分类面,而H1和 H2是平行于H,且过 离H最近的两类样本的 直线,H1与H,H2与 H之间的距离就是几何 间隔。误分次数一定程 度上代表分类器的误差。 几何间隔与样本的误 分次数间存在关系:
注意到间隔与||w||是成反比的,因此最大化间隔与最小化 ||w||完全是一回事。而我们常用的方法并不是固定||w||的大 小而寻求最大几何间隔,而是固定间隔,寻找最小的||w||。
max
i 1
1n
2 i
i
i1, y1
T
i j i j
j
n
Subject to
y 0,
i
0
ii
i 1
推导过程中可以得到一些有趣的形式,首先关于hyper plane,对
于一个数据点x进行分类,实际上是通过把x带到 g(x) Tx b
算出结果后根据其正负号来进行类别划分。而前面的推导中有
机器学习本质上就是一种对问题真实模型的逼近,但毫无 疑问,真实模型一定是不知道的。那么我们选择的假设与问 题真实解之间究竟有多大差距,我们就没法得知。这个与问 题真实解之间的误差,就叫做风险。我们选择了一个假设后, 真实误差无从得知, 但我们可以用某些可以掌握的量来逼近 它。最直观的想法就是使用分类器在样本数据上的分类的结 果与真实结果(因为样本是已经标注过的数据,是准确的数 据)之间的差值来表示。这个差值叫做经验风险Remp(w)。 以前的机器学习方法都把经验风险最小化作为努力的目标, 但后来发现很多分类函数能够在样本集上轻易达到100%的正 确率,在真实分类时却一塌糊涂(即所谓的推广能力差,或 泛化能力差)。
得到下式:
y x l ,
i =1
T b 1 i
y x l 0 n
i =1
i ii
y l 0 n
b
i =1
0
ii
将上式代入得:
y y x x l ,b, 1 n 2 i, j
2
下面最优超平面问题,就是将上述问题的优化:
Minimize(w,b): L 1 w w
Subject
to :
2
yi (w xi b) 1,i 1,l
(1)
SVM入门 线性分类器的求解——问题的描述与转化
由上节可知 我们的目标函数:
用另一个完全等价的目标函数来代替,那就是:
此时的情况便是选择了一个足够复杂的分类函数,能够精 确的记住每一个样本,但对样本之外的数据一律分类错误。
统计学习引入了泛化误差界的概念,就是指真实风险应该 由两部分内容刻画,一是经验风险,代表了分类器在给定样 本上的误差;二是置信风险,代表了我们在多大程度上可以 信任分类器在未知样本上分类的结果。很显然,第二部分是 没有办法精确计算的,因此只能给出一个估计的区间,也使 得整个误差只能计算上界,而无法计算准确的值。
式中,置信范围项取决于函数集的选择,而经验风险取决 于通过学习选择的一个特殊的函数。所以可以寻找函数集的子 集,使得风险边界在此子集上最小。
SRM原则引入一个“结构”,将函数集分成一个层 层嵌套的子集,如下图:
则每个子集的VC维为:hi,且随着子集的复 杂度的增加而增加,因此, h1<=h2<=h3………<=h; ,同一个子集中的置信 范围就是相同的,则有,
计算分类间隔:
沿着法向量方向作一条直线与H1和H2相交于X+和X-,这 两点之间距离就是所求得的分类间隔M。它们满足:
x wb 1
x w b 1
两式相减得:w(x x ) 2
则:M x x 2 2 / w
wT w
当 f (w) 1 w 2 最小时,即分类间隔最大的超平面。
关于g(x)=wx+b这个表达式要注意三点:一,式中的x不是 二维坐标系中的横轴,而是样本的向量表示。二,这个形 式并不局限于二维的情况,在n维空间中仍然可以使用这个 表达式,只是式中的w成为了n维向量;三,g(x)不是中间 那条直线的表达式,中间那条直线的表达式是g(x)=0,即 wx+b=0,我们也把这个函数叫做分类面。 实际上很容易看出来,中间那条分界线并不是唯一的,我
如果直接来解这个求最小值问题,很容易看出当||w||=0的时 候就得到了目标函数的最小值。反映在图中,就是H1与H2 两条直线间的距离无限大,这个时候,所有的样本点(无论 正样本还是负样本)都跑到了H1和H2中间,而我们原本的 意图是,H1右侧的 被分为正类,H2 左侧的被分为负类,位 于两类中间的样本则拒绝分类。这下可好,所有样本点都进 入了无法分类的灰色地带。造成这种结果的原因是在描述问 题的时候只考虑了目标,而没有加入约束条件, 体现在我们 的问题中就是样本点必须在H1或H2的某一侧(或者至少在 H1和H2上),而不能跑到两者中间。