支持向量机

2024-05-18 15:05

1. 支持向量机

 支持向量机(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)问题。   凸优问题是指约束最优化问题        其中,目标函数  和约束函数  都是  上的可连续可微的凸函数,约束函数  是  的仿射函数。当木匾函数是  是二次函数且约束函数  是仿射函数时,上述的凸优化问题成为凸二次规划问题。   如果求出约束最优化问题的解  ,那么就可以得出最大间隔分离超平面  及决策函数  ,即线性可分支持向量机模型。
   为了求解线性可分支持向量机的最优化问题,将它作为原始最优化问题,应用到拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解,这就是线性可支持向量机的对偶算法(dual 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)沿着约束方向未经剪辑时的解是        其中       是输入空间到特征空间的映射
   经剪辑后的  的解是        由  是     

支持向量机

2. 支持向量机

 
                                                                                   
    定义拉格朗日函数      ,    KKT条件 为:        求极值,则令             得到:             代入  消去  和  ,得到原问题的 对偶问题 为              由KKT条件得到:对于任意训练样本  总有  或  ,这就意味着当  时,该样本并不会对  产生而任何影响,当  时,此时意味着训练样本在最大间隔的边界上,该样本点称之为支持向量。 
   **
   假设样本线性可分,即存在一个超平面对样本进行分类。而实际任务中,样本往往是非线性可分。此时,我们将  映射到高维特征空间,在特征空间中找到超平面使得样本线性可分,记  为  映射到高维特征空间所对应的特征向量。   因此,对应的模型可以表示为        实际只需要求解如下函数:             对偶问题为:             当特征空间维度很高时,计算  困难,故定义核函数  使得  ,   则对偶问题重写为:             求解该对偶问题得到          
                                           由于  非凸、非连续,常用其他损失函数替代,如下图所示:   
                                                     
                   采用拉格朗日乘子法      ,求极值,令                  带入L得到原问题的对偶问题为:                   KKT条件要求 :        由此可得:
   (1)考虑  与  最多允许有  的误差   (2)构建宽度为  的间隔带,如图:   
                                                                                                                                                                                                                                                   
   **

3. 支持向量机

支持向量机可以用于分类、回归与异常点检测,它有以下优势:
  
 1、对高维数据集十分有效。
  
 2、当p>n时,依然有效。
  
 3、高效利用内存。
  
 4、不同的核函数与决策函数一一对应。
  
 缺点如下:
  
 1、当p>>n时,需要合理选用核函数以避免过拟合。
  
 2、由于支持向量机不直接提供概率估计,需要经过五折交叉验证计算得到,所以它较慢。
  
 SVC、NuSVC和LinearSVC能够实现多元分类。SVC与NuSVC十分相似,不同之处在于NuSVC引入了一个新的超参数v,它可以控制支持向量的数量和训练误差。LinearSVC是另一个实现线性核函数的支持向量分类,所以它不接受关键词kernel,也没有所谓的支持向量。
  
 支持向量的解释:支持向量本质上就是一个向量,而且是离间隔边界最近的向量,也就是这些向量支撑了整个间隔边界,支持向量的名字由来就是这样。
  
 多元分类在分类中主要有两种方法:one-vs-one和one-vs-rest。
  
 one-vs-one:假设有n个类别,则会针对两两类别建立二项分类器,得到k=n*(n-1)/2个分类器。对新数据进行分类时,依次使用这k个分类器进行分类,每次分类相当于一次投票,分类结果是哪个就相当于对哪个类投了一票。在使用全部k个分类器进行分类后,相当于进行了k次投票,选择得票最多的那个类作为最终分类结果​。
  
 one-vs-rest:假设有n个类别,那么就会建立n个二项分类器,每个分类器针对其中一个类别和剩余类别进行分类。进行预测时,利用这n个二项分类器进行分类,得到数据属于当前类的概率,选择其中概率最大的一个类别作为最终的预测结果。
  
 其中,one-vs-rest更加受到青睐,因为它更快并且结果也很不错。
  
 在内核岭回归中我们有谈到过支持向量回归,支持向量分类与支持向量回归都是只依赖于训练集的子集,因为构建模型的代价函数忽略任何接近于模型预测的训练数据。支持向量回归也有三种不同的形式:SVR、NuSVR和LinearSVR。
  
 OneClassSVM实现了一个用于无监督的孤立点检测。
  
 支持向量机是个强大的工具,不过它的计算和存储空间要求也会随着要训练向量的数目增加而快速增加。 SVM的核心是一个二次规划问题,是将支持向量和训练数据的其余部分分离开来。一般情况下复杂度为  ~  。
  
 惩罚系数C的设置:C定义了你对噪声的重视程度,如果数据中有很多噪声,我们应该减小C,防止模型过拟合。
  
 gamma的设置:gamma 定义了单一 训练样本能起到多大的影响,这样就会导致只有某些训练样本就能占领主导地位,对于训练集可能效果会很好,但是对于测试集效果很差,即会导致过拟合,降低gamma能有效降低过拟合的风险,与C一样。
  
 推荐一个网站,作者将SVM讲述的很好:   SVM入门(一)至(三)Refresh - Jasper's Java Jacal - BlogJava 
  
 参考:《Scikit-Learn官方API》
  
 如有错误,请指正;如有疑问,请留言。

支持向量机

4. 支持向量机

 本文主要参考了李航的《统计学习方法》。是本人学习支持向量机的学习笔记。   首先对支持向量机做简单介绍,然后分别介绍以下三个模型:    (1)线性可分支持向量机: 又称为硬间隔支持向量机,通过硬间隔最大化来学习一个线性分类器。适合 数据线性可分 情况;    (2)线性支持向量机: 又称为软间隔支持向量机,通过软间隔最大化来学习一个线性分类器。适合 数据近似线性可分 情况;    (3)非线性支持向量机: 通过核技巧和软间隔最大化来学一个非线性分类器。适合 数据非线性可分 情况   本文将对三个模型的介绍,从原始问题导出对偶问题。得到对偶问题以后,通过SMO算法对模型参数进行求解。最后,如果有机会再介绍以下支持向量机模型参数是如何利用SMO算法学习和训练的。
   两堆数据怎么样才是线性可分就不再赘述,否则请出门左拐百度“线性可分”。支持向量机学习的目的是找到一个将两类数据分离的超平面,这个超平面可以描述为:        但实际上,我们通过给定的线性可分数据集能够拟合出来的模型为:        其中带了星号的  和  是超平面模型的参数,表示是从数据集中学习得到的经验值或者说是估计值。与理论上的模型差别就在于这两个参数。如果数据足够多,那么经验值与理论值就近似相等了。
   为什么要引入间隔呢?为什么还有除了函数间隔之外还有个几何间隔?
   什么是间隔,间隔就是样本点与分离超平面之间的距离。支持向量机学习的目标就是将间隔最大化。   支持向量机在学习过程中最终目的是找到一个能将数据分离的超平面。但将数据分离完成后还不够完美,还需要使得这个分离超平面具有足够的正确性和确信度。   假设我们得到了一个超平面  ,如果有一个点  ,则我们可以采用  来表示分类的正确性和确信度。   的正负取值描述正确性;  的取值描述确信度。 
   我们用变量  来表示第i个样本与超平面之间的函数间隔描述式:        在定义和寻找超平面的时候就是在训练集  中寻找最小的函数间隔,即:     
   先不废话,直接给出几何间隔的描述式,然后再解释要引入几何间隔。免得看一堆字看的懵逼。        可以看到函数间隔和集合间隔相比,参数  和  的分母上多了个  ,为什么要这样做呢?因为我们需要对参数  和  进行约束。如果不进行约束,求出来的超平面  与不加约束是相同的(毕竟  和  前面的系数可以约掉),但  和  的实际可能会大个好几倍,会导致超平面的确信度  变得十分不可靠。因此,我们对函数间隔加以约束,引入几何间隔的概念。   在定义和寻找超平面的时候就是在训练集  中寻找最小的几何间隔,即:         函数间隔和几何间隔的关系:      
   支持向量机学习的目的是找到一个几何间隔最大的、能正确划分数据集  的分离超平面。有目标,有约束,那么就可以表示为一个有约束的最优化问题,用几何间隔描述:        用函数间隔描述:        为了方便转换为最优化问题,我们将约束项  保留的同时,对  积分得到  ,使得最大化  问题等价转换为最小化  ;令  ; 利用两个数学技巧得到最终的最优化问题:    线性可分支持向量机最优化问题         我们求出最优解  后,可以得到分离超平面:        对新样本进行决策分类函数为:        决策分类函数的意思就是将新样本的特征值  带入式子  中,根据得出正负取值来进行分类。   其中,  函数:     
    原始问题:线性可分支持向量机最优化问题         为了导出它的对偶问题,我们构造一个拉格朗日函数:        根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题        先求极小化问题,再求极大化问题。    (1)求极小化问题  :    将  对  和  求偏导并令其等于0        将上面两个式子得出的结果代回到  :        于是就求得:         (2)求极大化问题  :    我们把上一步的结果带入第二步中,再加上约束条件可以得到:        再把负号去掉,使得最大化问题等价转化为最小化问题        这样就得到了对偶问题的最优化问题,然后采用如SMO这种参数估计方法来对参数进行求解。    原始问题的解    假设我们求出了对偶最优化问题的解  ,则存在一个下标j使得  ,我们就可以根据关系推导出原始最优化问题的解  ( 这是一个定理,证明请参考李航的《统计学习方法》 ):     
   正如本文开篇所说的,线性支持向量机用来解决近似线性可分的数据分类问题。我们在线性可分支持向量机的基础对数据集  中的每一个样本都引入一个松弛变量  ,并对目标函数引入一个惩罚项,改变原来的目标函数和约束条件,使得线性支持向量机的 原始问题 为:     
   根据原始问题构造拉格朗日函数:        根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题         (1)求极小化问题      将  对  求偏导并令其等于0:        将上面的结果代回拉格朗日函数得到:         (2)求极大化问题      通过上一步我们求解得到了极小化问题的表达式,接下来我们求解极大化问题:        实际上,通过约束条件中的非零关系,可以进一步将约束条件简化为  .我们可以得到最终的 线性支持向量机的对偶最优化问题:          原始问题的解    原始问题的解与前面的线性可分支持向量机一样,假设我们求出了对偶最优化问题的解  ,则存在一个下标j使得  ,我们就可以根据关系推导出原始最优化问题的解  ( 这也是一个定理,证明请参考李航的《统计学习方法》 ):         对新样本进行决策分类函数的对偶形式为:         决策分类函数的意思就是将新样本的特征值  带入式子  中,根据得出正负取值来进行分类。   其中,  函数:     
   非线性支持向量机中用一个核函数来替代输入实例向量之间的内积,从而实现了把线性不可分的低维数据映射成线性可分的高维数据,然后再用超平面对高维空间内的数据进行分类。   
                                                               
   其实,可以看到上面的最优化问题和分类决策函数中只涉及到了输入实例#  的内积,因此我们可以通过核函数代替输入实例之间的内积。从而达到用核函数把数据映射到高维空间的目的。   我们用核函数  来代替实例之间的内积  后可以写出 非线性支持向量机的对偶最优化问题 和 分类决策函数:    最优化问题:        分类决策函数:        当核函数  是正定核函数时,最优化问题是凸二次规划问题,解存在。
   为了搞清楚这个问题,首先要想想提出核函数的动机什么?提出核函数的目的是为了把低维数据映射成高维数据啊,然后好用一个分类超平面对这些数据分类。但是映射完成后的高维空间是什么样的我们并不清楚,好像目前只能保证哪些函数可以作为核函数使用,而不能为每种输入数据分布巧妙地设计出一个个核函数。而实际应用中也是在尝试使用各种各样的核函数,如高斯核函数、多项式核函数、线性核函数、sigmoid核函数、拉普拉斯核函数、字符串核函数等。   既然不能对每次的输入数据设计出合适的核函数,我们总能讨论一下什么样的函数才有资格成为核函数,因此我们退而求其次,有空去了解一下为什么核函数  必须要是正定核函数?虽然在实际应用中我们直接就采用几种常见的核函数进行尝试。
   参考: https://blog.csdn.net/jiangjieqazwsx/article/details/51418681 

5. 支持向量机的介绍

支持向量机(Support Vector Machine,SVM)是Corinna Cortes和Vapnik等于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。在机器学习中,支持向量机(SVM,还支持矢量网络)是与相关的学习算法有关的监督学习模型,可以分析数据,识别模式,用于分类和回归分析。

支持向量机的介绍

6. 第6章 支持向量机

支持向量机 是一类按监督学习方式对数据进行 二元分类 的广义线性分类器,它的目的是寻找一个 超平面 来对样本进行分割,分割的原则是 间隔最大化 ,最终转化为一个 凸二次规划 问题来求解。
  
  优点: 
  
 1.有严格的数学理论支持,可解释性强
  
 2.能找出对任务至关重要的关键样本(即支持向量)
  
 3.采用核技巧后,可以处理非线性分类/回归任务
  
 4.最终决策函数只由少数的支持向量所确定,计算的复杂度取决于支持向量的数目,而不是样本空间的维数,在某种意义上避免了“维数灾难”
  
  缺点: 
  
 1.训练时间长
  
 2.当采用核技巧时,如果需要存储核矩阵,空间复杂度大
  
 3.模型预测时,支持向量数目较大,预测计算复杂度高
  
  本文重点对基于硬间隔的线性可分支持向量机、基于核函数的非线性支持向量机、基于软间隔的线性支持向量机这三类进行介绍。 
  
 
  
  
 
  
  
 给定训练样本集D={(  ,  ),(  ,  ),...,(  ,  )},    {-1,+1},分类学习基于训练集D在样本空间中找到一个划分超平面将不同类别的样本分开,但能将训练样本分开的划分超平面有很多,而我们要努力找到位于两类训练样本“ 正中间 ”的划分超平面(如图中的粗线),它对训练样本局部扰动的“容忍”性最好,即它产生的分类效果是 最鲁棒 的,对未见示例的 泛化能力最强 。
                                          
 在样本空间中,划分超平面可通过线性方程来描述:
                                          
 样本空间任意点x到超平面(w,b)的距离为
                                          
 假设超平面(w,b)能将训练样本正确分类,则 约束 条件为:
                                          
 使式子等号成立的训练样本点被称为“ 支持向量 ”(如图带圈圈的标记)。
  
 两个异类支持向量到超平面的距离之和( 间隔 )为:
                                                                                  
 “ 最大间隔 ”的划分超平面条件:满足式(6.3)中对参数w和b,使得  最大,即:
                                          
 可改写为(支持向量机 SVM的基本型 ):
                                          
 对 凸二次规划 问题使用 拉格朗日乘子法 可得到对偶问题,具体是对每条约束 添加拉格朗日乘子     0, 从而得出拉格朗日函数后,令对w和b的偏导为零,将得出的式子带入拉格朗日函数后可得到原式对应的 对偶问题 ,用 SMO算法 对对偶问题求解后,即可得到最大间隔划分超平面所对应的模型(上述过程需满足 KKT条件 )。
  
 在线性可分的假设下,希望得到的最大间隔划分超平面所对应的 模型 为:
                                                                                                                          
 由KKT条件,对任意训练样本(  ,  ),总有  = 0  或  = 0 。
  
 若  = 0,则该样本将不会在式(6.12)的求和中出现,也就不会对模型有任何影响;
  
 若  > 0 ,则必有  = 0,所对应的样本点位于最大间隔边界上,是一个支持向量。
  
 这显示出支持向量机的一个重要性质: 训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关。 
  
  
   
  
 
  
  
 在现实任务中,原始样本空间内也许并不存在一个能正确划分为两类样本的超平面。这时,可 将样本从原始空间映射到一个更高维的特征空间 ,使得样本 在这个特征空间内线性可分 。
                                          
 那么,在特征空间中划分超平面所对应的 模型 表示为:
                                          
 类似式(6.6),有原始 目标函数 :
                                          
 用拉格朗日乘子法得到其对偶问题为:
                                          
 为避开计算困难,可以通过设想一个 核函数 :
                                          
  核函数的作用 :核函数可以用 原始样本空间上的点内积 的方式,经过运算转化为高维空间点内积,而不必完全由高维空间上的点进行内积计算,这样达到了降低运算复杂度的作用。即从先升维度再算内积变成了 先算内积再升维度 。
  
 在低纬空间(原始样本空间)中对于内积的运算则被定义为“ 核函数 ”, 在原始样本空间经过核函数计算的内积会等于高维空间的内积。 
  
 由此,原始目标函数经过改写求解出特征空间中划分超平面所对应的模型:
                                          
 几种常用的核函数:
                                          
 核函数的引入一方面减少了计算量,另一方面减少了存储数据的内存使用量。
  
 
  
  
 
  
  
 在现实任务中往往难确定合适的核函数使得训练样本在特征空间中线性可分,即使恰好找到了也很难断定这个 貌似线性可分 的结果不是由于过拟合所造成的。为缓解这一问题是 允许支持向量机在一些样本上出错 。
                                          
  软间隔 :数据样本不是实际的线性可分,而是 近似线性可分 ,即 允许某些样本不满足约束 :
                                          
 由此,原始目标函数中增加了一个 损失函数 可写为:
                                          
 三种常用的替代损失函数:
                                                                                  
 若采用hinge损失,则目标函数变成:
                                          
 为度量这个间隔软到何种程度,引入“松弛变量”  (即用以表示该样本不满足约束的程度),将上式改写得到“ 软间隔支持向量机 ”:
                                                                                  
 通过拉格朗日乘子法得到目标函数的拉格朗日函数并得到其对偶问题过程如下:
                                                                                  
 上述过程需满足 KKT条件 要求:
                                          
 对于任意训练样本(  ,  ),总有  或  .
  
 若  ,则样本不会对模型有任何影响;
  
 若  ,   则必有  , 即该样本是支持向量:
  
 由式(6.39)可知, 
  
     若  ,则  ,进而有  ,即该样本恰在最大间隔边界上,
  
     若  ,则  ,此时若  ,则该样本落在最大间隔内部,
  
                                                         若  ,则该样本被错误分类。
  
 由此可看出: 软间隔支持向量机的最终模型仅与支持向量有关。 
  
 把目标函数中的0/1损失函数换成别的替代损失函数可得到其他学习模型,这些模型具有一个 共性 :优化目标中的第一项用来描述划分超平面的间隔大小( 结构风险 ),另一项用来表述训练集上的误差( 经验风险 ),所以加了损失函数的线性支持向量机优化目标的 一般形式 为:
                                          
  正则化 :对不希望得到的结果施以惩罚,从而使得优化过程趋向于希望目标。
  
 上式是“正则化”问题,  称为正则化项,C称为正则化常数,  范数是常用的正则化项。
  
 
  
  
 
  
  
  SVR与SVM的区别: 
  
  SVM是要使到超平面 最近 的样本点的“距离” 最大 ;
  
  SVR则是要使到超平面 最远 的样本点的“距离” 最小 。
                                          
  传统回归模型与支持向量回归计算损失的区别 :
  
 传统回归模型直接基于模型输出  与真实输出  之间的差别来计算损失,当且仅当  与  完全相同时,损失才为零。
  
 支持向量回归假设 能容忍  与  之间最多有  的偏差 ,仅当  与  之间的差别绝对值 大于  时 才计算损失,这相当于以  为中心,构建了一个 宽度为  的间隔带 ,若训练样本落入此间隔带,则以为是被预测正确的。
                                          
 于是, SVR问题的目标函数 为:
                                          
 加入 松弛变量   和  ,改写为:
                                                                                  
 再用拉格朗日乘子法得到 SVR的对偶问题 :
                                          
 求解后得到 SVR模型 :
                                          
 能使式(6.53)中的  的样本即为 SVR的支持向量 ,它们 必落在间隔带之外 。
  
 上述过程需满足 KKT条件 :
                                          
 若考虑 特征映射形 式, SVR模型 为:
                                          
 
  
  
  核函数定理 :令  为输入空间,  是定义在  上的 对称函数 ,则  是核函数当且仅当对于任意数据D={  },“ 核矩阵 ”总是 半正定 的:
                                          
  表示定理 :令H为核函数  对应的再生核希尔伯特空间,  表示H空间中关于h的范数,对于任意单调递增函数  和任意非负损失函数  ,优化问题
                                          
 表示定理对损失函数 没有限制 ,对正则化项  仅要求 单调递增 ,即对于一般的损失函数和正则化项,优化问题的最优解  都可以表示为核函数  的线性组合。
  
 引入核函数能将线性学习器扩展为非线性学习器。
  
 
  
  
 这里我们使用sklearn的 乳腺癌数据 对以下5种模型的准确度进行预测,重点放在SVC上。
                                                                                  
 SVC主要调节的参数有: C (正则化参数)、 kernel (核函数)、 degree (多项式维度)、 gamma (核函数参数)、 coef0 (核函数的常数项)。
  
 第一次我用SVC的默认参数,此时的核函数是 高斯核函数(kernel=‘rbf’) ,结果测试集的准确度为62.9%,太低了!说明存在严重的 过拟合 情况。
                                                                                  
 第二次我选择 改变核函数 
  
 用维度为2的 多项式核函数(kernel=‘poly’degree=2) 试试,测试集准确度变为95.1%,感觉比高斯核函数好多了!
                                                                                  
  线性核函数(kernel=‘linear’) 也来试试,多项式核函数当维度为1时 (kernel=‘poly’,degree=1) 退化为线性核。咦,测试集的准确度提升到了95.8%,但是测试集和训练集的准确度太过于接近,可能会有 欠拟合 的情况。
                                                                                  
  sigmoid核函数(kernel=‘sigmoid’) 也来试试,真的是太太太低了吧,算了果断抛弃。
                                                                                  
 第三次,对于常用的 高斯核函数 ,就这么被PK下去了感觉不太好,我决定试试 改变正则化参数 C 看看能不能挽救它,默认下的是C=1.0. 乳腺癌数据集的特征具有完全不同的数量级,这对SVC模型影响比较大,所以先进行 归一化处理 ,对每 个特征进行缩放 ,使其缩放到  0 和 1 之间 。归一化处理后,默认参数下的SVC模型测试集的准确率已经高达96.5%了。
                                                                                  
  改变C值 试试,当C值为1000时,测试集准确度又提高了,达到了97.4%,说明 增大C值可以优化模型。 
                                          
 第一次我先用了决策树里面默认的参数,其中 max_depth=None ,即树的深度是无穷的,此时出现了训练集的准确度为100%,说明出现了 过拟合 情况。
                                                                                  
 对于上述过拟合情况我采取的是 限制树的深度 。限制树的深度可以 减少过拟合 。这会 降低训练集的精度,但可以提高测试集的精度。 
  
 从 max_depth=3 开始,发现训练集的准确率下降了,但是测试集的准确度从93%提高到了94.4%,明显泛化性能提高了。
                                          
 再用 max_depth=4 试试,测试集准确度为95.1%,泛化性能又提高了。可!

7. 支持向量机的简介

支持向量机方法是建立在统计学习理论的VC维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折中,以求获得最好的推广能力 。

支持向量机的简介

8. 支持向量机原理

支持向量机方法的基本思想是:定义最优线性超平面,并把寻找最优线性超平面的算法归结为求解一个凸规划问题。进而基于Mercer核展开定理,通过非线性映射φ,把样本空间映射到一个高维乃至于无穷维的特征空间(Hilbert空间),使在特征空间中可以应用线性学习机的方法解决样本空间中的高度非线性分类和回归等问题(Nello Cristianini,2005)。简单地说就是升维和线性化。一般的升维都会带来计算的复杂化。这里自然发生的两个问题是如何求得非线性映射φ和解决算法的复杂性。SVM方法巧妙地解决了这两个难题:由于应用了核函数的展开定理,所以根本不需要知道非线性映射的显式表达式;由于是在高维特征空间中应用线性学习机的方法,所以与线性模型相比不但几乎不增加计算的复杂性,而且在某种程度上避免了“维数灾”。另外,SVM是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度的定义及大数定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的“转导推理”(transductive 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,  ,则式(4.13)变为

基坑降水工程的环境效应与评价方法

其中常数C>0,表示对超出误差ε的样本的惩罚程度,ξi,  为松弛变量的上限与下限。为此构造拉格朗日函数:

基坑降水工程的环境效应与评价方法

得到其对偶问题为:

基坑降水工程的环境效应与评价方法


基坑降水工程的环境效应与评价方法


基坑降水工程的环境效应与评价方法

可以得到回归函数为:
其中,αi,  将只有一小部分小为零,它们对应的样本就是支持向量。
(2)支持向量机非线性回归
以上讨论的是线性问题,对于非线性问题,把输入样本xi通过ψ:x→H映射到高维特征空间H(可能是无穷维)。当在特征空间中构造最优超平面时,实际上只需进行内积运算,而这种内积运算是可以用原空间中的函数来实现的,没有必要知道ψ的形式。因为只要核函数K(xi,xj)满足Mercer条件,它就对应某一变换空间的内积即K(xi,xj)=ψ(i)·ψ(xj)。这一点提供了可能导致的“维数灾难”问题解决方法。
由线性支持向量回归可知,二次规划的拉格朗日目标函数:

基坑降水工程的环境效应与评价方法

其对偶形式:

基坑降水工程的环境效应与评价方法

可以得到回归函数为:

基坑降水工程的环境效应与评价方法

传统的拟合方法通常是在线性方程后面加高阶项。由此增加的可调参数增加了过拟合的风险。支持向量回归用核函数即能作非线性回归,达到了“升维”的目的,增加的可调参数很少,过拟合仍能控制。
最新文章
热门文章
推荐阅读