支持向量机理论算法与拓展
‘壹’ 支持向量机(SVM)基本原理
看了很多关于SVM的博客,但是常常只能保存书签之后看,有时候有的博客就突然没了,这里就作为搬运工总结一下之后自己看吧。主要内容来自于:
支持向量机通俗导论(理解SVM的三层境界)
线性回归
给定数据集 , 其中, ,线性回归试图学习到一个线性模型,尽可能地输出正确标记.
如果我们要用线性回归算法来解决一个分类问题,(对于分类,y 取值为 0 或者 1),但如果你使用的是线性回归,那么假设函数的输出值可能远大于 1,或者远小于 0,就算所有训练样本的标签 y 都是 0 或 1但是如果算法得到的值远大于 1 或者远小于 0 的话,就会感觉很奇怪。所以我们在接下来的要研究的算法就叫做逻辑回归算法,这个算法的性质是:它的输出值永远在 0 到 1 之间。
所以逻辑回归就是一个分类算法,这个算法的输出值永远在 0 到 1 之间.
我们先看二分类的LR,具体做法是:利用sigmoid 函数,将每一个点的回归值映射到0,1之间.sigmoid函数特性如下:
如图所示,令 , 当 z > 0 , z 越大, sigmoid 返回值越接近1(但永远不会超过1). 反之,当z < 0时,z 越小, sigmoid 返回值越接近0(但永远不会小于0).
支持向量机 ,因其英文名为support vector machine,故一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为 特征空间 上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
线性分类器
给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类。如果用x表示数据点,用y表示类别(y可以取1或者-1,分别代表两个不同的类),一个线性分类器的学习目标便是要在n维的数据空间中找到一个超平面(hyper plane),这个超平面的方程可以表示为( wT中的T代表转置):
logistic回归目的是从特征学习出一个0/1分类模型,而这个模型是将特性的线性组合作为自变量,由于自变量的取值范围是负无穷到正无穷。因此,使用logistic函数(或称作sigmoid函数)将自变量映射到(0,1)上,映射后的值被认为是属于y=1的概率。
假设函数:
其中x是n维特征向量,函数g就是logistic函数。
图像为:
在超平面w x+b=0确定的情况下,|w x+b|能够表示点x到距离超平面的远近,而通过观察w x+b的符号与类标记y的符号是否一致可判断分类是否正确,所以,可以用(y (w*x+b))的正负性来判定或表示分类的正确性。于此,我们便引出了函数间隔(functional margin)的概念。
定义函数间隔 (用表示)为
而超平面(w,b)关于T中所有样本点(xi,yi)的函数间隔最小值(其中,x是特征,y是结果标签,i表示第i个样本),便为超平面(w, b)关于训练数据集T的函数间隔:
但这样定义的函数间隔有问题,即如果成比例的改变w和b(如将它们改成2w和2b),则函数间隔的值f(x)却变成了原来的2倍(虽然此时超平面没有改变),所以只有函数间隔还远远不够。
事实上,我们可以对法向量w加些约束条件,从而引出真正定义点到超平面的距离--几何间隔(geometrical margin)的概念。
假定对于一个点 x ,令其垂直投影到超平面上的对应点为 x0 ,w 是垂直于超平面的一个向量, 为样本x到超平面的距离,如下图所示:
根据平面几何知识,有
其中||w||为w的二阶范数(范数是一个类似于模的表示长度的概念), 是单位向量(一个向量除以它的模称之为单位向量)。
又由于x0 是超平面上的点,满足 f(x0)=0,代入超平面的方程 ,可得 ,即
随即让此式 的两边同时乘以 ,再根据 和 ,即可算出 :
为了得到 的绝对值,令 乘上对应的类别 y,即可得出几何间隔(用 表示)的定义:
从上述函数间隔和几何间隔的定义可以看出:几何间隔就是函数间隔除以||w||,而且函数间隔y (wx+b) = y f(x)实际上就是|f(x)|,只是人为定义的一个间隔度量,而几何间隔|f(x)|/||w||才是直观上的点到超平面的距离。
对一个数据点进行分类,当超平面离数据点的“间隔”越大,分类的确信度(confidence)也越大。所以,为了使得分类的确信度尽量高,需要让所选择的超平面能够最大化这个“间隔”值。这个间隔就是下图中的Gap的一半。
通过由前面的分析可知:函数间隔不适合用来最大化间隔值,因为在超平面固定以后,可以等比例地缩放w的长度和b的值,这样可以使得 的值任意大,亦即函数间隔 可以在超平面保持不变的情况下被取得任意大。但几何间隔因为除上了 ,使得在缩放w和b的时候几何间隔的值 是不会改变的,它只随着超平面的变动而变动,因此,这是更加合适的一个间隔。换言之,这里要找的最大间隔分类超平面中的“间隔”指的是几何间隔。
于是最大间隔分类器(maximum margin classifier)的目标函数可以定义为
同时需满足一些条件,根据间隔的定义,有
回顾下几何间隔的定义 ,可知:如果令函数间隔 等于1(之所以令等于1,是为了方便推导和优化,且这样做对目标函数的优化没有影响),则有 = 1 / ||w||且 ,从而上述目标函数转化成了:
相当于在相应的约束条件 下,最大化这个1/||w||值,而1/||w||便是几何间隔。
据了解,
由于这个问题的特殊结构,还可以通过拉格朗日对偶性(Lagrange Duality)变换到对偶变量 (al variable) 的优化问题,即通过求解与原问题等价的对偶问题(al problem)得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题。
那什么是拉格朗日对偶性呢?简单来讲,通过给每一个约束条件加上一个拉格朗日乘子 ,(Lagrange multiplier),定义拉格朗日函数(通过拉格朗日函数将约束条件融合到目标函数里去,从而只用一个函数表达式便能清楚的表达出我们的问题)
然后令:
容易验证,当某个约束条件不满足时,例如 ,那么显然有 (只要令 即可)。而当所有约束条件都满足时,则最优值为 ,亦即最初要最小化的量。
因此,在要求约束条件得到满足的情况下最小化 ,实际上等价于直接最小化 (当然,这里也有约束条件,就是 ≥0,i=1,…,n) ,因为如果约束条件没有得到满足, 会等于无穷大,自然不会是我们所要求的最小值。
具体写出来,目标函数变成了:
这里用 表示这个问题的最优值,且和最初的问题是等价的。如果直接求解,那么一上来便得面对w和b两个参数,而 又是不等式约束,这个求解过程不好做。不妨把最小和最大的位置交换一下,变成:
交换以后的新问题是原始问题的对偶问题,这个新问题的最优值用 来表示。而且有 ≤ ,在满足某些条件的情况下,这两者相等,这个时候就可以通过求解对偶问题来间接地求解原始问题。
换言之,之所以从minmax 的原始问题,转化为maxmin 的对偶问题,一者因为 是 的近似解,二者,转化为对偶问题后,更容易求解。
下面可以先求L 对w、b的极小,再求L对 的极大。
KKT条件
≤ 在满足某些条件的情况下,两者等价,这所谓的“满足某些条件”就是要满足KKT条件。
要让两者等价需满足strong ality (强对偶),而后有学者在强对偶下提出了KKT条件,且KKT条件的成立要满足constraint qualifications,而constraint qualifications之一就是Slater条件。所谓Slater 条件,即指:凸优化问题,如果存在一个点x,使得所有等式约束都成立,并且所有不等式约束都严格成立(即取严格不等号,而非等号),则满足Slater 条件。对于此处,Slater 条件成立,所以 ≤ 可以取等号。
一般地,一个最优化数学模型能够表示成下列标准形式:
其中,f(x)是需要最小化的函数,h(x)是等式约束,g(x)是不等式约束,p和q分别为等式约束和不等式约束的数量。
KKT条件的意义:它是一个非线性规划(Nonlinear Programming)问题能有最优化解法的必要和充分条件。
而KKT条件就是指上面最优化数学模型的标准形式中的最小点 x* 必须满足下面的条件:
我们这里的问题是满足 KKT 条件的(首先已经满足Slater条件,再者f和gi也都是可微的,即L对w和b都可导),因此现在我们便转化为求解第二个问题。
也就是说,原始问题通过满足KKT条件,已经转化成了对偶问题。而求解这个对偶学习问题,分为3个步骤:首先要让L(w,b,a) 关于 w 和 b 最小化,然后求对 的极大,最后利用SMO算法求解对偶问题中的拉格朗日乘子。
对偶问题求解的3个步骤
将以上结果代入之前的L:
得到:
具体推导过程是比较复杂的,如下所示:
最后,得到:
“倒数第4步”推导到“倒数第3步”使用了线性代数的转置运算,由于ai和yi都是实数,因此转置后与自身一样。“倒数第3步”推导到“倒数第2步”使用了(a+b+c+…)(a+b+c+…)=aa+ab+ac+ba+bb+bc+…的乘法运算法则。最后一步是上一步的顺序调整。
从上面的最后一个式子,我们可以看出,此时的拉格朗日函数只包含了一个变量,那就是 (求出了 便能求出w,和b,由此可见,则核心问题:分类函数 也就可以轻而易举的求出来了)。
上述式子要解决的是在参数上 求最大值W的问题,至于 和 都是已知数。要了解这个SMO算法是如何推导的,请跳到下文第3.5节、SMO算法。
总结
让我们再来看看上述推导过程中得到的一些有趣的形式。首先就是关于我们的 hyper plane ,对于一个数据点 x 进行分类,实际上是通过把 x 带入到 算出结果然后根据其正负号来进行类别划分的。而前面的推导中我们得到:
因此分类函数为:
这里的形式的有趣之处在于,对于新点 x的预测,只需要计算它与训练数据点的内积即可(表示向量内积),这一点至关重要,是之后使用 Kernel 进行非线性推广的基本前提。此外,所谓 Supporting Vector 也在这里显示出来——事实上,所有非Supporting Vector 所对应的系数 都是等于零的,因此对于新点的内积计算实际上只要针对少量的“支持向量”而不是所有的训练数据即可。
为什么非支持向量对应的 等于零呢?直观上来理解的话,就是这些“后方”的点——正如我们之前分析过的一样,对超平面是没有影响的,由于分类完全有超平面决定,所以这些无关的点并不会参与分类问题的计算,因而也就不会产生任何影响了。
回忆一下我们通过 Lagrange multiplier得到的目标函数:
注意到如果 xi 是支持向量的话,上式中红颜色的部分是等于 0 的(因为支持向量的 functional margin 等于 1 ),而对于非支持向量来说,functional margin 会大于 1 ,因此红颜色部分是大于零的,而 又是非负的,为了满足最大化, 必须等于 0 。这也就是这些非Supporting Vector 的点的局限性。
至此,我们便得到了一个maximum margin hyper plane classifier,这就是所谓的支持向量机(Support Vector Machine)。当然,到目前为止,我们的 SVM 还比较弱,只能处理线性的情况,不过,在得到了对偶al 形式之后,通过 Kernel 推广到非线性的情况就变成了一件非常容易的事情了(通过求解对偶问题得到最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题”)。
事实上,大部分时候数据并不是线性可分的,这个时候满足这样条件的超平面就根本不存在。在上文中,我们已经了解到了SVM处理线性可分的情况,那对于非线性的数据SVM咋处理呢?对于非线性的情况,SVM 的处理方法是选择一个核函数 κ(⋅,⋅) ,通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题。
具体来说,在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身不好分的非线性数据分开。如图所示,一堆数据在二维空间无法划分,从而映射到三维空间里划分:
而在我们遇到核函数之前,如果用原始的方法,那么在用线性学习器学习一个非线性关系,需要选择一个非线性特征集,并且将数据写成新的表达形式,这等价于应用一个固定的非线性映射,将数据映射到特征空间,在特征空间中使用线性学习器,因此,考虑的假设集是这种类型的函数:
这里ϕ:X->F是从输入空间到某个特征空间的映射,这意味着建立非线性学习器分为两步:
首先使用一个非线性映射将数据变换到一个特征空间F,
然后在特征空间使用线性学习器分类。
而由于对偶形式就是线性学习器的一个重要性质,这意味着假设可以表达为训练点的线性组合,因此决策规则可以用测试点和训练点的内积来表示:
如果有一种方式可以在特征空间中直接计算内积〈φ(xi · φ(x)〉,就像在原始输入点的函数中一样,就有可能将两个步骤融合到一起建立一个非线性的学习器,这样直接计算法的方法称为核函数方法:
核是一个函数K,对所有x,z,满足 ,这里φ是从X到内积特征空间F的映射。
来看个核函数的例子。如下图所示的两类数据,分别分布为两个圆圈的形状,这样的数据本身就是线性不可分的,此时咱们该如何把这两类数据分开呢(下文将会有一个相应的三维空间图)?
事实上,上图所述的这个数据集,是用两个半径不同的圆圈加上了少量的噪音生成得到的,所以,一个理想的分界应该是一个“圆圈”而不是一条线(超平面)。如果用 和 来表示这个二维平面的两个坐标的话,我们知道一条二次曲线(圆圈是二次曲线的一种特殊情况)的方程可以写作这样的形式:
注意上面的形式,如果我们构造另外一个五维的空间,其中五个坐标的值分别为 ,那么显然,上面的方程在新的坐标系下可以写作:
关于新的坐标 ,这正是一个 hyper plane 的方程!也就是说,如果我们做一个映射 ,将 按照上面的规则映射为 ,那么在新的空间中原来的数据将变成线性可分的,从而使用之前我们推导的线性分类算法就可以进行处理了。这正是 Kernel 方法处理非线性问题的基本思想。
再进一步描述 Kernel 的细节之前,不妨再来看看上述例子在映射过后的直观形态。当然,你我可能无法把 5 维空间画出来,不过由于我这里生成数据的时候用了特殊的情形,所以这里的超平面实际的方程是这个样子的(圆心在 轴上的一个正圆)
因此我只需要把它映射到 ,这样一个三维空间中即可,下图即是映射之后的结果,将坐标轴经过适当的旋转,就可以很明显地看出,数据是可以通过一个平面来分开的
核函数相当于把原来的分类函数:
映射成:
而其中的 可以通过求解如下 al 问题而得到的:
这样一来问题就解决了吗?似乎是的:拿到非线性数据,就找一个映射
‘贰’ 支持向量机(SVM)
支持向量机(support vector machine),故一般简称SVM,通俗来讲,它是一种二分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,这族分类器的特点是他们能够同时最小化经验误差与最大化几何边缘区,因此支持向量机也被称为最大边缘区分类器。其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。SVM在很多诸如文本分类,图像分类,生物序列分析和生物数据挖掘,手写字符识别等领域有很多的应用。
支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。
假设给定一些分属于两类的2维点,这些点可以通过直线分割, 我们要找到一条最优的分割线,如何来界定一个超平面是不是最优的呢?
如图:
在上面的图中,a和b都可以作为分类超平面,但最优超平面只有一个,最优分类平面使间隔最大化。 那是不是某条直线比其他的更加合适呢? 我们可以凭直觉来定义一条评价直线好坏的标准:
距离样本太近的直线不是最优的,因为这样的直线对噪声敏感度高,泛化性较差。 因此我们的目标是找到一条直线(图中的最优超平面),离所有点的距离最远。 由此, SVM算法的实质是找出一个能够将某个值最大化的超平面,这个值就是超平面离所有训练样本的最小距离。这个最小距离用SVM术语来说叫做间隔(margin) 。
描述:给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类。如果用x表示数据点,用y表示类别(y可以取1或者-1,分别代表两个不同的类),一个线性分类器的学习目标便是要在n维的数据空间中找到一个超平面(hyper plane),这个超平面的方程可以表示为( wT中的T代表转置):
例如:现在有一个二维平面,平面上有两种不同的数据,分别用圈和叉表示。由于这些数据是线性可分的,所以可以用一条直线将这两类数据分开,这条直线就相当于一个超平面,超平面一边的数据点所对应的y全是-1 ,另一边所对应的y全是1。
我们令分类函数为:
当f(x) 等于0的时候,x便是位于超平面上的点,而f(x)大于0的点对应 y=1 的数据点,f(x)小于0的点对应y=-1的点,如下图所示:
一个点距离超平面的远近可以表示分类预测的确信或准确程度,如何确定这个超平面呢?从直观上而言,这个超平面应该是最适合分开两类数据的直线。而判定“最适合”的标准就是这条直线离直线两边的数据的间隔最大。所以,得寻找有着最大间隔的超平面。
补充知识点: 点到平面的距离
支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面.。对线性可分的训练数据集而言,线性可分分离超平面有无穷多个(等价于感知机),但是几何间隔最大的分离超平面是唯一的。这里的间隔最大化又称为硬间隔最大化。
间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开。这样的超平面应该对未知的新实例有很好的分类预测能力。
按照我们前面的分析,对一个数据点进行分类, 当它的margin越大的时候,分类的confidence越大。 对于一个包含n个点的数据集,我们可以很自然地定义它的margin为所有这n个点的margin值中最小的那个。于是,为了使得分类的confidence高,我们希望所选择的超平面hyper plane能够最大化这个margin值。让所选择的超平面能够最大化这个“间隔”值,这个间隔就是下图中的Gap的一半:
为什么用几何间隔求最大的分离超平面而不用函数间隔?
例题:
我们构造了约束最优化问题,就是下面这个:
此外,由于这个问题的特殊结构,还可以通过拉格朗日对偶性(Lagrange Duality)变换到对偶变量 (al variable) 的优化问题,即通过求解与原问题等价的对偶问题(al problem)得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题。
补充知识点: 拉格朗日乘子法学习
拉格朗日KKT条件
KKT条件介绍
拉格朗日对偶
通过给每一个约束条件加上一个拉格朗日乘子(Lagrange multiplier)α,定义拉格朗日函数(通过拉格朗日函数将约束条件融合到目标函数里去,从而只用一个函数表达式便能清楚的表达出我们的问题):
求解这个式子的过程需要拉格朗日对偶性的相关知识。
例题:
接下来谈谈线性不可分的情况,因为 线性可分这种假设实在是太有局限性 了。下图就是一个典型的线性不可分的分类图,我们没有办法用一条直线去将其分成两个区域,每个区域只包含一种颜色的点。
要想在这种情况下的分类器,有两种方式, 一种是用曲线 去将其完全分开,曲线就是一种 非线性 的情况,跟之后将谈到的 核函数 有一定的关系:
另外一种还是用直线,不过不用去保证可分性 ,就是包容那些分错的情况,不过我们得加入惩罚函数,使得点分错的情况越合理越好。其实在很多时候,不是在训练的时候分类函数越完美越好,因为训练函数中有些数据本来就是噪声,可能就是在人工加上分类标签的时候加错了,如果我们在训练(学习)的时候把这些错误的点学习到了,那么模型在下次碰到这些错误情况的时候就难免出错了。这种学习的时候学到了“噪声”的过程就是一个过拟合(over-fitting),这在机器学习中是一个大忌。
我们可以为分错的点加上一点惩罚,对一个分错的点的 惩罚函数 就是 这个点到其正确位置的距离:
对于线性不可分的情况,我们可以用核函数让空间从原本的线性空间变成一个更高维的空间 , 在这个高维的线性空间下,再用一个超平面进行划分 。 这儿举个例子,来理解一下如何利用空间的维度变得更高来帮助我们分类的:
上图是一个线性不可分的图,当我们把这两个类似于椭圆形的点映射到一个高维空间后,映射函数为:
用这个函数可以将上图的平面中的点映射到一个三维空间(z1,z2,z3),并且对映射后的坐标加以旋转之后就可以得到一个线性可分的点集了。
形象说明:例如世界上本来没有两个完全一样的物体,对于所有的两个物体,我们可以通过增加维度来让他们最终有所区别,比如说两本书,从(颜色,内容)两个维度来说,可能是一样的,我们可以加上作者这个维度,是在不行我们还可以加入页码,可以加入拥有者,可以加入购买地点,可以加入笔记内容等等。当维度增加到无限维的时候,一定可以让任意的两个物体可分了。
核函数定义:
核技巧在支持向量机中的应用:
常用核函数:
非线性支持向量机学习算法:
支持向量机的学习问题可以形式化为求解凸二次规划问题。这样的凸二次规划问题具有全局最优解,并且有许多最优化算法可以用于这一一问题的求解。但是当训练样本容量很大时,这些算法往往变得非常低效,以致无法使用。所以,如何高效地实现支持向量机学习就成为一一个重要的问题。目前人们已提出许多快速实现算法.本节讲述其中的序列最小最优化(sequential minimal optimization, SMO)算法。
上述问题是要求解N个参数(α1,α2,α3,...,αN),其他参数均为已知,序列最小最优化算法(SMO)可以高效的求解上述SVM问题,它把原始求解N个参数二次规划问题分解成很多个子二次规划问题分别求解,每个子问题只需要求解2个参数,方法类似于坐标上升,节省时间成本和降低了内存需求。每次启发式选择两个变量进行优化,不断循环,直到达到函数最优值。
整个SMO算法包括两部分,求解两个变量的 二次规划 问题和选择这两个变量的 启发式 方法。
上面求得的(α1)new和(α2)new是在η>0的情况下求得的:
当时为了推导公式我们直接默认它是大于0了,现在我们需要重新审视这一项(η)。这一项是原来关于的二次项的系数。我们可以分下面三种情况讨论:
(1)当η>0时 :这个二次函数开口向上,所以要求这个二次函数的最小值,如果说极值点不在计算出的可行域的范围内,就要根据这个极值点和可行域边界值的关系来得到取最小值的地方:
①如果这个极值点在可行域左边,那么我们可以得到这个可行域内二次函数一定在单增,所以此时L应该是那个取最小值的地方。就如大括号的第三种情况。
②如果这个极值点在可行域右边,那么此时可行域内一定单减,所以此时H就是那个取最小值的地方,就是大括号里的第一种情况。
(2)当η=0时: 这个二次函数就变成了一个一次函数,那么不管这个一次函数的单调性怎样,最小值一定是在边界处取到。所以到时候计算可行域的两个边界的值,看哪个小就用哪个。
(3)当η<0时: 这个二次函数开口向下,那么此时怎么得到取最小值的点呢?很容易就能想到:最小值也是在可行域的边界处取到。很容易理解,此时开口向下,当极值点在区间内时,最小值只能在端点处取,因为极值点处是最大的。而当极值点在区间外时,区间内一定是单调的,此时最小值也只能在端点处取。通过计算比较边界处的目标函数值,哪个小取哪个。
通过以上判断求出(α2)new以后,再根据公式求出(α1)new,然后带入目标函数(1)中。即如下过程:
上述分析是在从N个变量中已经选出两个变量进行优化的方法,下面分析如何高效地选择两个变量进行优化,使得目标函数下降的最快。
‘叁’ 支持向量机原理
支持向量机方法的基本思想是:定义最优线性超平面,并把寻找最优线性超平面的算法归结为求解一个凸规划问题。进而基于Mercer核展开定理,通过非线性映射φ,把样本空间映射到一个高维乃至于无穷维的特征空间(Hilbert空间),使在特征空间中可以应用线性学习机的方法解决样本空间中的高度非线性分类和回归等问题(Nello Cristianini,2005)。简单地说就是升维和线性化。一般的升维都会带来计算的复杂化。这里自然发生的两个问题是如何求得非线性映射φ和解决算法的复杂性。SVM方法巧妙地解决了这两个难题:由于应用了核函数的展开定理,所以根本不需要知道非线性映射的显式表达式;由于是在高维特征空间中应用线性学习机的方法,所以与线性模型相比不但几乎不增加计算的复杂性,而且在某种程度上避免了“维数灾”。另外,SVM是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度的定义及大数定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的“转导推理”(transctive inference),大大简化了通常的分类和回归等问题。SVM的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾”。如果说神经网络方法是对样本的所有因子加权的话,SVM方法是对只占样本集少数的支持向量样本“加权”。当预报因子与预报对象间蕴涵的复杂非线性关系尚不清楚时,基于关键样本的方法可能优于基于因子的“加权”。少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。由于有较为严格的统计学习理论做保证,应用SVM方法建立的模型具有较好的推广能力。SVM方法可以给出所建模型的推广能力的确定的界,这是目前其它任何学习方法所不具备的。
随着支持向量机理论的深入研究,出现了许多变种的支持向量机,如Sheng-wei Fe(2009)提出的两类重要的预测技术:分类和回归。其中分类问题预测要求观察值是离散的,而回归问题主要针对决策属性值是连续的情况,它通过学习训练样本集建立一个回归器,然后在条件属性给定的情况下进行预测。
支持向量机回归分为线性回归和非线性回归,其原理如下:
(1)支持向量机线性回归
设样本集为:(x1,y1),…,(xi,yi),x∈Rn,y∈R,回归函数用下列线性方程来表示:
f(x)=w·x+b (4.14)
假设所有训练数据在ε精度下如图4.5所示无误差地用线性函数拟合,即
基坑降水工程的环境效应与评价方法
图4.5 支持向量机回归
考虑到允许误差的情况,引入松弛因子ξi,
基坑降水工程的环境效应与评价方法
其中常数C>0,表示对超出误差ε的样本的惩罚程度,ξi,
基坑降水工程的环境效应与评价方法
得到其对偶问题为:
基坑降水工程的环境效应与评价方法
基坑降水工程的环境效应与评价方法
基坑降水工程的环境效应与评价方法
可以得到回归函数为:
其中,αi,
(2)支持向量机非线性回归
以上讨论的是线性问题,对于非线性问题,把输入样本xi通过ψ:x→H映射到高维特征空间H(可能是无穷维)。当在特征空间中构造最优超平面时,实际上只需进行内积运算,而这种内积运算是可以用原空间中的函数来实现的,没有必要知道ψ的形式。因为只要核函数K(xi,xj)满足Mercer条件,它就对应某一变换空间的内积即K(xi,xj)=ψ(i)·ψ(xj)。这一点提供了可能导致的“维数灾难”问题解决方法。
由线性支持向量回归可知,二次规划的拉格朗日目标函数:
基坑降水工程的环境效应与评价方法
其对偶形式:
基坑降水工程的环境效应与评价方法
可以得到回归函数为:
基坑降水工程的环境效应与评价方法
传统的拟合方法通常是在线性方程后面加高阶项。由此增加的可调参数增加了过拟合的风险。支持向量回归用核函数即能作非线性回归,达到了“升维”的目的,增加的可调参数很少,过拟合仍能控制。
‘肆’ 数据挖掘-支持向量机
支持向量机(support vector machine,SVM)是一种出色的分类技术,也可以用于回归分析(SVR)。这种技术可以很好的应用于高维数据,避免维度灾难等问题。
SVM有一个特点就是使用训练集中的一个子集来表示决策边界,该子集称作 支持向量 。
SVM的核心目标是找到分类中的最大边缘超平面,让其作为决策边界,那么什么是最大边缘超平面呢?
但是可以发现,这种超平面有无数多个(图中就能看到有好多个),如果有一些未知的点需要预测分类,那么他们可能未必会被这些超平面完美的分隔:
以最下侧的超平面为例,如果我们有未知的点按照蓝色排布,那么可以看到,最下侧的这个超平面完全不能分类所有蓝色点的“-”号,那么如果它作为决策边界,泛化能力就不是很好。
我们肯定要从这些超平面中选一个最合理的作为决策边界,使得未知的点尽量的能被正确预测分类,那么肯定是上图中间的这个超平面最好了,我们目测就可以得到结果,因为 它离两边这些点的距离围成的面积应该是最大的,而且两边的面积基本是差不多的 。(个人理解)所以应该能装得下更多的未知点,也就能得到最好的泛化效果。
为了不用肉眼观测,能量化的得到这个结果,我们可以定义 最大边缘超平面 。
下图中有两个决策边界, 和 ,其中每个决策边界都对应着两个超平面(记作 )。其中 是由 进行两侧平移,直到接触到最近的一个训练集的点停止,生成的,同理 也是。
我们把两个超平面(同一个决策边界生成的)之间的距离叫做分类器的边缘,那么下图中,显然 生成的两个超平面距离应该是最大的, 就叫做 最大边缘超平面 ( 虽然是决策边界,但是决策边界都是超平面)。
通常来说,较大边缘的超平面具有更好的泛化误差,如果边缘比较小,那么决策边界的轻微扰动都可能对分类产生显着影响。
SVM算法的核心就是设计最大化决策边界边缘的分类器,以保证最坏情况下泛化误差最小 。
假设有一个包含 个训练样本的二元分类问题,每个样本表示为一个二元组 , 其中 ,对应于第i个样本的属性集(一个样本有多个属性/特征),设y有-1和1两个类别,则一个 线性分类器的决策边界 可以写成如下形式:
其中的 为参数, 是法向量(垂直于决策边界)的向量,代表着超平面的方向,而 代表超平面与原点之间的距离(可以用一次函数的公式来理解)。
为什么 一定会垂直于决策边界呢?我们设有两个点 是决策边界上的两点,那么有:
二者相减有:
因为 肯定是平行于决策边界的,那么为了保证内积为0, 肯定要垂直于决策边界。
根据以上的决策边界,则肯定有:
如果上方的点是1类,下方是-1类,则有:
如果我们能得到 ,那么就可以用这个公式对未知点进行预测分类。代入公式,如果 就是1类,反之则为-1类。
接下来我们的任务就是如何求这两个参数,首先,既然是求最大边缘超平面,我们要把决策边界的边缘算出来。
根据上图,考虑那些离决策边界最近的方形和圆形,我们可以得到两个平行的超平面表示如下:
决策边界的边缘就是这两个超平面的距离。
参考上图的 ,不难得出边缘 为:
其中 是w的2范数。
很显然,我们想要让这个 最大,那么就要让 最小。
于是,接下来我们的求参数目标就明确了。
由于 肯定是非负的,我们可以改写一下
这个式子,让它变成求 的最小值。
既然要求最小值,就需要有另外一个约束条件,否则是没办法求的,我们来看之前总结的线性SVM分类器的公式:
由于 和 是决策边界的两个超平面,我们从上图中可以看出,所有的点(除了这两个超平面经过的点以外,经过的点是离决策边界最近的点),都肯定有 和 。
我们把y引入进来,那么这两个式子就能合到一起写为:
注意不要和之前总结的公式中的 弄混,那个条件是最终预测分类的公式,也就是表明只要在决策边界的上方就可以进行分类,而现在的>=1是在已知训练集的情况下求模型的参数。
综合以上的式子,我们可以得到求参数的基本式:
目标函数是二次的,而约束在参数 和 上是线性的,因此这是一个凸优化问题, 不存在局部优化的问题 。
求这一套公式的最小值,需要用到 拉格朗日乘数法 ,这个我也不是很明白,就按照网络的定义往里套:
虽然我们这里的附加条件是大于等于1的,不过不妨改写一下试试,则有:
其中的 就是 拉格朗日乘子 ,理论上来说,拉格朗日乘子可以为任何值。
如果约束条件是=0的话,我们就可以直接对 和 求偏导数,让他们等于0,就能求得参数。
但是目前条件并不是等于0的,而是大于等于0的。
处理不等式约束一种方法就是变换成一组等式约束,根据KKT条件,可以限制拉格朗日乘子飞赴,把之前的约束变换为:
该约束表明,除非训练样本满足方程 ,否则拉格朗日乘子必须为0。
结合上面展示决策边界和超平面的图,我们可以想到,满足这个方程的样本,肯定都在决策边界生成的两个超平面上。这些样本处的拉格朗日乘子肯定够大于0,而其他样本的拉格朗日乘子,肯定等于0,因此问题得到简化。 因为参数的确定仅依赖于这些在超平面上的样本。
这些在超平面上的样本,被称作 支持向量 ,这也就是支持向量机的命名缘由。
有了以上的修改后的约束,我们可以在 对 和 求偏导,并让他们等于0.
我们已知,这个时候的 和 是有满足条件的最优解的,把这两个式子代入原公式,就能得到 的最小值(当然此时因为不知道拉格朗日乘子,我们是求不出来的),代入公式可得:
该函数叫做对偶拉格朗日函数。
用这个函数,就是把之前求w和b的公式变换成了求拉格朗日乘子的公式,同时需要注意,这个式子中是求拉格朗日对偶函数的最大化问题。
我们可以用二次规划法或者SMO方法来求拉格朗日乘子。
二次规划算法比较通用,但是计算量比较大,SMO算法的核心就是把复杂的式子变换成比较简易的之后,用二次规划来计算。
SMO的基本思路是:先固定 之外的所有参数,然后求 上的极值,由于存在约束 ,如果固定了 之外的其他变量,则能求出 。
那么对偶函数里有两个λ,我们就可以固定这两个λ之外的参数,之后求解 。
其中有一个λ不满足KKT条件,则目标函数就会在迭代后减小,违背程度越大,变量更新后导致的目标函数值就越大。 所以SMO先选取违背KKT条件最大的变量,第二个变量选择使目标函数值见效最快的变量,使选取的两个变量对应样本之间的间隔最大。
然后可以变换为简单的二次规划问题:
找到一组λ后,就可以用原公式求得 的解,决策边界可以表示为:
之后b可以通过 求解。
因为λ通过数值计算得到,因此可能存在误差,则b可能不唯一。通常我们可以用b的 平均值 作为决策边界的参数。
如图所示,这组数据集有两个特征 和一个 标签,我们要对其进行建模分类,可以得到有两个拉格朗日乘子(支持向量上的),其他的均为0.
我们可以得到 有:
第一个 是针对 的参数,以此类推。
有了 ,可以求得 有:
可以根据两个b求平均值,得到b=7.93,因此就能得到分类的模型。
如果需要做预测,把对应点的x向量代入到模型中,求得结果为1的话,就是方形类,其他为圆形类。
上面讨论的模型最终都会生成一条直线,也就是线性的模型,那么往往需要判断非线性的如何处理呢,这里需要引入核函数的技术。
要把SVM应用到非线性决策边界的数据集上,就要把数据集从原来的坐标空间x变换到新的坐标空间中。
我们假定存在一个合适的函数 来变化给定的数据集,那么变换之后,我们就可以根据 来构建线性决策边界(类似于换元法,回忆一下)。变换之后,线性决策边界具有以下的形式:
根据线性SVM的参数计算公式,我们把公式里面的 换成 ,即可求解。
不过这种方式往往会涉及到向量对的点积,计算比较麻烦,当特征数较多时,可能会造成维度灾难的问题,因此我们要引入核函数。
核函数是一种使用原属性集计算变换后的空间中的相似度的方法,简而言之就是,我们如果按照上一段说的算法,则我们需要先计算 ,然后再计算参数,而我们运用核函数,可以直接计算oldsymbol{x}就可以达到变换属性集的目的。
我们令 ,这样就可以把映射的函数变成了原属性集的计算。 就是核函数。
但是这个 一般我们是不知道的,因此我们要找寻几种通用的函数,让他们可以实现 的功能,以便模拟非线性的决策边界。
这里我们引入一个 Mercer定理 , 所有的核函数都必须满足Mercer定理。
通常有如下几种核函数:
我们也可以通过核函数的组合来形成新的核函数:
我们直到一般算法都要防止过拟合,防止噪声带来的模型泛化能力下降,那么SVM的防止过拟合方法就是软边缘。
此外,根据KKT条件,可以变换约束如下:
注意,上述三个式子中的 是非零的,当且仅当训练样本位于直线 上或者 。另外对于误分类的训练样本, 都为0.
我们按照正常优化的算法,对 , , 求偏导数,可以得到参数:
代入原公式,可以得到只包括拉格朗日乘子的对偶拉格朗日函数。
这个式子看上去跟不加软边缘的对偶函数是一样的,但是约束是不同的。
软边缘的对偶函数约束为
之后就可以用二次规划或者SOM求参数值了,从而得到模型。
这就是带软边缘的SVM。
以上提到的都是二元分类的办法,那么多分类可以参考常用的多分类处理,用一对一方法,如果有多分类问题,我们可以分解为K(K-1)/2个二类分类器,每一个分类器用来区分一对类 。(注意这里的y都是单独的类,不是一堆类别的集合)
当为 构建分类器时,其他不属于这两类的点都被忽略掉。
之后针对需要预测分类的样本,我们用不同的分类器进行分类,最后进行投票,得到结果。
以上就是SVM(用于分类的支持向量机)的内容,最后看看该算法的特点:
‘伍’ 支持向量机学习算法
支持向量机学习算法主要有以下五种:
(1)获取学习样本(xi,yi),i=1,2…,其中xi∈Rn,y∈任 {1,-1}l,对样本进行预处理;
(2)选择进行非线性变换的核函数及对错分(误差)进行惩罚的惩罚因子c;
(3)形成二次优化问题用优化方法(如:Chuknlng算法、内点算法、SMO算法);
(4)获得a,a*及b0的值,代入方程中,获得分类或函数拟合的支持向量机;
(5)将需预测或分类的数据代入支持向量机方程中获得结果。
基坑降水环境影响评价参数选取降水方式、岩土性质、水文地质边界、基坑侧壁状态、边载分布、后续使用年限、基础型式、差异沉降8级,目标输出模式对应4个级别:优等级(Ⅰ)、良好级(Ⅱ)、中等级(Ⅲ)、差级(Ⅳ)。
用一对多多类支持向量机水质分类法:有四类等级要划分,于是在抽取训练集的时候,分别抽取I所对应的向量作为正集,其余所对应的向量作为负集;Ⅱ所对应的向量作为正集,其余所对应的向量作为负集……,这四个训练集分别进行训练得到四个分类器。然后,利用这四个训练结果文件对测试集分别进行测试,最后每个测试都有一个结果,最终的结果便是这四个值中最大的一个。
利用支持向量机进行基坑降水环境影响评价就是寻找影响基坑降水环境系统和孕灾环境系统的指标和基坑降水环境影响等级之间的关系,可建立以下四个分类函数:
基坑降水工程的环境效应与评价方法
‘陆’ 支持向量机
支持向量机(Suport Vector Machine,常简称为SVM),是一个监督式学习的方式。支持向量机属于一般化线性分类器,这类分类器的特点是能够同时最小化经验误差与最大化几何边缘区,因此支持向量机机也被称为最大边缘区分类器。
蓝色和红色的线圈出来的点就是所谓的支持向量,离分界线最近的点,如果去掉这些点,直线多半要改变位置。Classifier Boundary就是决策函数f(x),在两个类的中间。红色和蓝色之间的间隙就是我们要的最大化分类的间隙。
有拉格朗日乘子法的地方,必然是一个组合优化问题。比如
这是一个带等式约束的优化问题,有目标值,有约束条件,不能直接求导。可以使用拉格朗日方法,把这个约束乘以一个系数加到目标函数中去,这样相当与既考虑了原目标函数,也考虑了约束条件。然后分别对x求导等于0,
把它带点菜约束条件中去,可以看到,2个变量两个等式,最终可再带回去求x就可以了。更高一层,带有不等式的约束问题怎么办?需要用更一般化的拉格朗日乘子法,即KKT条件,来求解这个问题。
任何原始问题约束条件无非最多三种,等式约束,大于号约束,小于号约束,而这三种最终通过将约束方程简化成两类:约束方程等于0和约束方程小于0。
假设原始问题约束条件为下例所示:
那么把约束条件变个样子
现在拿到目标函数中去变成
那么KKT条件的定理是什么呢?就是如果一个优化问题在转变成
其中g是不等式约束,h是等式约束。那么KKT条件就是函数的最优值,它必定满足下面条件:
这三个等式很好理解,重点是第三个句子不好理解,因为我们知道在约束条件变完或,所有的 ,且求和还要为0。那么为什么KKT的条件是这样的呢?
某次的g(x)在为最优解起作用,那么它的系数值(可以)不为0,如果某次g(x)没有为下一次的最优解起作用,那么它的系数就必须为0。
函数间隔
对于给定的训练数据集T合超平面(w,b),定义超平面(w,b)关于样本点 的函数间隔为
函数间隔可以表示分类预测的正确性及确信度。但是选择超平面时,只有函数间隔是不够的,因子只要成比较改变 和b,超平面并没有改变,但函数间隔却扩大了。
几何间隔
对于给定的训练数据集T和超平面 ,定义超平面 关于样本点 的几何间隔为 ,其中 为 的 范数。
如果 ,那么函数间隔和几何间隔相等。如果超平面参数 成比例地改变(超平面没有改变),函数间隔也成比例改变,而几何间隔不变。
支持向量机的基本想法是求解能够正确分训练数据集并且几何间隔最大的分离超平面。对线性可分的训练数据集而言,线性可分分离超平面有无穷多个(等价于感知机),但是几何间隔最大的分离超平面时唯一的。这里的间隔最大化被称为硬间隔最大化。
间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将他们分开。这样的超平面应该对未知的新实例有很好的分类预测能力。
下面考虑如何求一个几何间隔最大的分离超平面,即最大间隔分离超平面。具体地,这个问题可以表示为下面的约束最优化问题:
即我们希望最大化超平面 关于训练数据集的集合间隔 ,约束条件表示的是超平面 关于每个训练样本点的集合间隔至少是
考虑几何间隔和函数间隔的关系式,可将这个问题改成为
函数间隔 并不影响最优化问题的解。事实上,假设将 成比例改变为 ,这时函数间隔变成 。函数间隔的改变对最优化问题的不等式约束没有影响,对目标函数的优化也没有影响,也就事实说,它产生一个等价的最优化问题。这样,就可以取 。将 代入上面的最优化问题。注意最大化 和最小化 是一样的。
于是就得到下面的线性可分支持向量机学习的最优化问题
这是一个凸二次规划问题(contex quadratic programming)问题。
凸优问题是指约束最优化问题
其中,目标函数 和约束函数 都是 上的可连续可微的凸函数,约束函数 是 的仿射函数。当木匾函数是 是二次函数且约束函数 是仿射函数时,上述的凸优化问题成为凸二次规划问题。
如果求出约束最优化问题的解 ,那么就可以得出最大间隔分离超平面 及决策函数 ,即线性可分支持向量机模型。
为了求解线性可分支持向量机的最优化问题,将它作为原始最优化问题,应用到拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解,这就是线性可支持向量机的对偶算法(al algorithm)。这样做的优点,一是对偶问题往往根据容易求解;二是自然引入核函数,进而推广到非线性可分类问题。
首先构建拉格朗日函数(Lagrange function)。为此,对每一个不等式约束引入拉格朗日乘子(Lagrange multiplier) 定义拉格朗日函数:
其中 为拉格朗日乘子向量。
根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题
为了得到对偶函数问题的解,需要先求 对 的极小,再求 的极大
(1)求
将拉格朗日函数 分别对 求偏导数并令其等于0
将(1)代入拉格朗日函数,并利用(2),即可得
即
(2)求 对 的极,即对偶问题
将公式(3)的目标函数由极大值转换成求极小,就得到下面与之等价的对偶最优化问题
(3)解
假设 是对偶最优化问题的解,则存在下标使得 ,并求按下式求得原始最优化的解
根据KKT条件成立,即得
因此
,且至少存在一个 ,假设 ,那么 不是原始问题的解,所以
那么分离的超平面可以写成
决策函数可以写成
由此可以看出,分类决策函数只依赖于输入x和训练样本输入的内积,式(8)称为线性可分支持向量机的对偶形式。
案例
训练数据正例点是 ,负例点是 ,试用线性可分支持向量机
解:根据所给数据,对偶问题是
解这一优化问题,将 代入目标函数并记为
对 求偏导令其为0,易知 处取极值,该点不满足约束条件 ,所以最小值应在边界上达到。
当 ,当 ,于是
这样, 对应的实例点 是支持向量,计算可得 ,
分离超平面为
分离决策函数为
线性可分问题的支持向量机学习方法,对线性不可分训练数据是不适用的,因为这时上述方法中的不等式约束不能都成立。 线性不可分意味着不能满足函数间隔大于等于1的约束条件 。为了解决这个问题,对每个样本点 都引入一个松弛变量 ,使得函数间隔加上变量大于等于1,这样约束条件变为
同时对于每个松弛变量 ,支付一个代价 ,目标函数由原来的 变成
C>0为惩罚参数,一般由应用问题解决,C值大时对误分类的惩罚增大,C值小时对误分类的惩罚减小。最小化木匾函数有2层意思:使得 尽量小,即间隔尽量大,同时使误分类点的个数尽量小,C是调和两者的系数
非线性分类问题是指通过非线性模型才能很好地进行分类的问题。非线性问题往往不好求解,希望通过线性分类问题的方法解决这个问题,所采取的方法是进行一个非线性变换,将非线性问题变成线性问题,通过解变换后的线性问题的方法求解原来的非线性问题。
用线性分类方法求解非线性分类问题分两步:首先使用一个变换将原来空间的数据映射到新空间;然后在新空间里用线性分类学习方法从训练数据中学习分类模型。核技巧就属于这样的方法。
设X是输入空间(欧氏空间 的子集或离散集合),又设H为特征向量(希伯而空间H),如果存在一个从X到H的映射
使得对所有 ,函数 满足条件
则称K(x,z)为核函数, 为映射函数, 。通常计算K(x,z)比较容易,而通话 计算K(x,z)并不容易。
是输入空间到特征空间的迎神,特征空间一般是高维的,甚至是无穷维,可以看到,对于给定的核K(x,z),特征空间H和映射函数 的取法并不唯一,可以取不同的特征空间,即便是在同一特征空间也可以取不同的映射。
在对偶目标函数中的内积 可以用核函数 来代替,此时对偶问题的目标函数成为
这等价于经过映射函数 将原来的输入空间变换到一个新的特征空间,将输入空间中的内积 变换成特征空间中的内积 ,在新的特征空间里从训练样本中学习线性支持向量机。学习是隐式地在特征空间进行的,不需要显式地定义特征空间和营业日函数。在实际应用中,往往依赖领域知识直接选择核函数。
对应的支持向量机是一个p次多项式分类器,在此情形下,分类决策函数成为
对应的支持向量机是高斯径向基函数(radial basis function)分类器。在此情形下,分类决策函数成为
核函数不仅可以定义在欧式空间,还可以定义在离散数据的集合上。比如,字符串核函数是定义在字符串集合上的核函数。字符串核函数在文本分类、信息检索、生物信息学等方面都有应用。
两个字符串s和t上的字符串核函数是基于映射 的特征空间中的内积:
字符串核函数 给出了字符串s和t中长度等于n的所有子串组成的特征向量的余弦相似度。直观上看,两个字符串相同的字串越多,它们就越相似,字符串核函数的值就越大。字符串核函数可以由动态规划快速地计算。
支持向量机的学习问题可以形式化为求解凸二次规划问题,这样的凸二次规划问题具有全局最优解,并且有许多最优化算法可以用于这一问题的求解。但是当训练样本容量很大时,这些算法往往变得非常低效,以至无法使用。
序列最小最优化(sequential minimal optimization,SMO)算法,是一种启发式算法,其基本思路是:如果所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充分必要条件。否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。这个二次规划问题的目标是使函数值变得更小。重要的是,这时子问题可以通过解析方法求解,这样就可以大大提高整个算法的计算速度。子问题有两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。
假设两个变量是 ,其他变量 是固定的,于是SNO的最优化问题的子问题可以写成。
其中, 是常数,目标函数中省略不含 的常数项。
为了求解两个变量的二次规划问题,约束可以用二维空间中的图形表示
不等式约束(7.3)使得 在盒子[0,C] [0,C]内,等式约束(7.2)使 在平行于盒子[0,C] [0,C]的对角线的直线上。因此要求的是目标函数在一条平行于对角线的线段上最优值。这使得两个变量的最优化问题成为实质上的单变量最优化文图,不访考虑为变量 的最优化问题。
假设初始化可行解为 ,最优化解为 ,并且假设沿着约束方向未经剪辑时 的最优解为
由于 需满足不等式约束(7.3),所以最优值 的取值范围必须满足条件
其中,L与H是 所在对角线段端点的界,如果
如果 ,则
下面首先要求沿着约束方向未经剪辑即未考虑不等式约束(7.3)时 的最优解 ,然后在解决剪辑后 的解 ,我们用定理来描述这个结果
令
当i=1,2时, 为函数g(x)对输入 的预测值与真实输出 之差
定理 最优化问题(7.1)~(7.3)沿着约束方向未经剪辑时的解是
其中
是输入空间到特征空间的映射
经剪辑后的 的解是
由 是
‘柒’ svm算法是什么
SVM算法中文翻译为支持向量机,它的英文全称是Support Vector Machine。
之所以叫作支持向量机,是因为该算法最终训练出来的模型,由一些支持向量决定。所谓的支持向量,也就是能够决定最终模型的向量。SVM算法最初是用来解决二分类问题的,而在这个基础上进行扩展,也能够处理多分类问题以及回归问题。
SVM算法的历史
早在1963 年,着名的前苏联统计学家弗拉基米尔·瓦普尼克在读博士期间,就和他的同事阿列克谢·切尔沃宁基斯共同提出了支持向量机的概念。
但由于当时的国际环境影响,他们用俄文发表的论文,并没有受到国际学术界的关注。直到 20 世纪 90 年代,瓦普尼克随着移民潮来到美国,而后又发表了SVM 理论。此后,SVM 算法才受到应有的重视。如今,SVM 算法被称为最好的监督学习算法之一。