支持向量机的基本原理

2024-05-12 21:36

1. 支持向量机的基本原理

支持向量机的主要思想是:建立一个最优决策超平面,使得该平面两侧距离该平面最近的两类样本之间的距离最大化,从而对分类问题提供良好的泛化能力。
对于一个多维的样本集,系统随机产生一个超平面并不断移动,对样本进行分类,直到训练样本中属于不同类别的样本点正好位于该超平面的两侧,满足该条件的超平面可能有很多个,SVM正式在保证分类精度的同时,寻找到这样一个超平面,使得超平面两侧的空白区域最大化。
支持向量机中的支持向量是指训练样本集中的某些训练点,这些点最靠近分类决策面,是最难分类的数据点。SVM中最优分类标准就是这些点距离分类超平面的距离达到最大值;“机”是机器学习领域对一些算法的统称,常把算法看做一个机器,或者学习函数。
SVM是一种有监督的学习方法,主要针对小样本数据进行学习、分类和预测,类似的根据样本进行学习的方法还有决策树归纳算法等。

支持向量机的应用实例
支持向量机是一种监督模式识别和机器学习方法,采用最大分类间隔准则实现有限训练样本情况下推广能力的优化。
通过核函数间接实现非线性分类或函数回归,支持向量机通常简写作SVM。
支持向量机使用铰链损失函数计算经验风险并在求解系统中加入了正则化项以优化结构风险,是一个具有稀疏性和稳健性的分类器。
支持向量机可以通过核方法进行非线性分类,是常见的核学习方法之一。
支持向量机在人像识别、文本分类等模式识别问题中有得到应用。

支持向量机的基本原理

2. 支持向量机原理讲解(一)

 支持向量机(Support Vector Machine,以下简称SVM),作为传统机器学习的一个非常重要的分类算法,它是一种通用的前馈网络类型,最早是由Vladimir N.Vapnik 和 Alexey Ya.Chervonenkis在1963年提出,目前的版本(soft margin)是Corinna Cortes 和 Vapnik在1993年提出,1995年发表。深度学习(2012)出现之前,如果不考虑集成学习的算法,不考虑特定的训练数据集,在分类算法中的表现SVM说是排第一估计是没有什么异议的。
   SVM本来是一种线性分类和非线性分类都支持的二元分类算法,但经过演变,现在也支持多分类问题,也能应用到了回归问题。本篇文章重点讲解线性支持向量机的模型原理和目标函数优化原理。
                                           在讲解SVM模型之前,我们可以先简单了解感知机模型的原理,因为这两个模型有一些相同的地方。在二维平面中,感知机模型是去找到一条直线,尽可能地将两个不同类别的样本点分开。同理,在三维甚至更高维空间中,就是要去找到一个超平面。定义这个超平面为wTx+b=0(在二维平面中,就相当于直线w_1 x+w_1 y+b=0),而在超平面上方的点,定义为y=1,在超平面下方的点,定义为y=-1。而这样的超平面可能是不唯一的,那么感知机是怎么定期最优超平面呢?从感知机模型的目标函数中,我们了解到它是希望让所有误分类的点(定义为M)到超平面的距离和最小。其目标函数如下:
     
   (注:加入  是因为点若在超平面下,  为负数,需要乘上对应的  )
   当w和b成比例增加了之后,比如都扩大N倍,会发现,分子和分母都会同时扩大N倍,这对目标函数并不影响。因此,当我们将W扩大或缩小一定倍数使得,||w||=1,分子也会相应的扩大或缩小,这样,目标函数就能简化成以下形式:
     
   这个思想将会应用到支持向量机的目标函数优化上,后文将会详细讲解。
   正如上文所说,线性支持向量机的思想跟感知机的思想很相似。其思想也是对给定的训练样本,找到一个超平面去尽可能的分隔更多正反例。不同的是其选择最优的超平面是基于正反例离这个超平面尽可能远。
                                           从上图可以发现,其实只要我们能保证距离超平面最近的那些点离超平面尽可能远,就能保证所有的正反例离这个超平面尽可能的远。因此,我们定义这些距离超平面最近的点为支持向量(如上图中虚线所穿过的点)。并且定义正负支持向量的距离为Margin。
   对SVM思想有一定理解之后,设超平面为  。我们讲解一下函数间隔和几何间隔的区别。
   给定一个样本  ,  表示点x到超平面的距离。通过观察  和  是否同号,我们判断分类是否正确。所以函数间隔定义  为:
     
   而函数间隔不能正常反应点到超平面的距离,因为当我们等比例扩大  和  的时候,函数间隔也会扩大相应的倍数。因此,我们引入几何间隔。
   几何间隔就是在函数间隔的基础下,在分母上对  加上约束(这个约束有点像归一化),定义为  :
        其实参考点到直线的距离,我们可以发现几何间隔就是高维空间中点到超平面的距离,才能真正反映点到超平面的距离。
   根据SVM的思想,我们可以知道是要取最大化支持向量到超平面的几何间隔,所以目标函数可以表示为:
     
   在感知机模型最后,我们知道当同时扩大w和b,分子分母都会同样扩大,对目标函数不影响,所以在这里我们将分子(支持向量到超平面的函数间隔)扩大或压缩等于1,则目标函数可以转化为:
     
   但是上式并不是凸函数,不好求解,再进一步转化为:
     
   上式就是一个凸函数,并且不等式约束为仿射函数,因此可以使用拉格朗日对偶去求解该问题。
   根据拉格朗日乘子法,引入拉格朗日乘子α,且α≥0我们可以知道,先不考虑min,(2)问题等价于:
     
   然后再考虑min,则有:
     
   应用拉格朗日对偶性,通过求解对偶问题得到最优解,则对偶问题的目标函数为:
     
   这就是线性可分条件下支持向量机的对偶算法。这样做的优点在于:一是原问题的对偶问题往往更容易求解,二者可以自然的引入核函数,进而推广到非线性分类问题。
   从(4)中,我们可以先求目标函数对于  和  的极小值,再求拉格朗日乘子  的极大值。
   首先,分别对  和  分别求偏导数,并令为0:
        得:     
     
   将(5)和(6)代入(4)得到:
     
   对(7)取反得到:
     
   只要我们可以求出(8)中极小化的  向量,那么我们就可以对应的得到  和  ,而求解  需要使用SMO算法,由于该算法比较复杂,我们将在下一篇文章专门讲解。假设我们现在已经使用SMO算法得到了最优的  值,记为  
     
   再求  :
   对于任一样本  有:
     
   注意到任一样本都有  ,则将右式的1用  代:
     
   将(9)代入上式,可以得到:
     
   这样,我们就能够求解得到线性支持向量机的目标函数的各个参数,进而得到最优的超平面,将正负样本分隔开。但是在上文中我们没有讲解求  向量的SMO算法,在下篇文章,将会详细讲解SMO算法,欢迎继续关注。

3. 支持向量机的基本原理是什么?

  
  支持向量机回归分为线性回归和非线性回归,其原理如下:
  (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)。这一点提供了可能导致的“维数灾难”问题解决方法。
  由线性支持向量回归可知,二次规划的拉格朗日目标函数:
  基坑降水工程的环境效应与评价方法
  其对偶形式:
  基坑降水工程的环境效应与评价方法
  可以得到回归函数为:
  基坑降水工程的环境效应与评价方法
  传统的拟合方法通常是在线性方程后面加高阶项。由此增加的可调参数增加了过拟合的风险。支持向量回归用核函数即能作非线性回归,达到了“升维”的目的,增加的可调参数很少,过拟合仍能控制。

支持向量机的基本原理是什么?

4. 支持向量机

 支持向量机(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)沿着约束方向未经剪辑时的解是        其中       是输入空间到特征空间的映射
   经剪辑后的  的解是        由  是     

5. 支持向量机

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

支持向量机

6. 支持向量机

支持向量机可以用于分类、回归与异常点检测,它有以下优势:
  
 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》
  
 如有错误,请指正;如有疑问,请留言。

7. 支持向量机

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

支持向量机

8. 什么是支持向量机?

什么是支持向量机?支持向量机基本概念 
SVM算法是一种学习机制,是由Vapnik提出的旨在改善传统神经网络学习方法的理论弱点,最先从最优分类面问题提出了支持向量机网络。SVM学习算法根据有限的样本信息在模型的复杂性和学习能力之间寻求最佳折中,以期获得最好的泛化能力。SVM在形式上类似于多层前向网络,而且已被应用于模式识别、回归分析、数据挖掘等方面。
支持向量机这些特点是其他学习算法(如人工神经网络)所不及的。对于分类问题,单层前向网络可解决线性分类问题,多层前向网络可解决非线性分类问题。但这些网络仅仅能够解决问题,并不能保证得到的分类器是最优的;而基于统计学习理论的支持向量机方法能够从理论上实现对不同类别间的最优分类,通过寻找最坏的向量,即支持向量,达到最好的泛化能力。
SVM总的来说可以分为线性SVM和非线性SVM两类。线性SVM是以样本间的欧氏距离大小为依据来决定划分的结构的。非线性的SVM中以卷积核函数代替内积后,相当于定义了一种广义的趾离,以这种广义距离作为划分依据。
模糊支持向量机有两种理解:一种是针对多定义样本或漏分样本进行模糊后处理;另一种是在训练过程中引入模糊因子作用。
SVM在量化投资中的应用主要是进行金融时序数列的预测。根据基于支持向量机的时间序列预测模型,先由训练样本对模型进行训练和完备,然后将时间序列数据进行预测并输出预测结果。
本章介绍的第一个案例是一种基于最小二乘法的支持向最机的复杂金融数据时间序列预测方法,大大提高了求解问题的速度和收敛精度。相比于神经网络预测方法,该方法在大批量金融数据时间序列预测的训练时间、训练次数和预测误差上都有了明显提高,对复杂金融时间序列具有较好的预测效果。
第二个案例是利用SVM进行大盘拐点判断,由于使用单一技术指标对股价反转点进行预测存在较大的误差,所以使用多个技术指标组合进行相互验证就显得特别必要。SVM由于采用了结构风险最小化原则,能够较好地解决小样本非线性和高维数问题,因此通过构造一个包含多个技术指标组合的反转点判断向最,并使用SVM对技术指标组合向量进行数据挖掘,可以得到更加准确的股价反转点预测模型。
 
支持向量机基本概念
SVM算法是一种学习机制,是由Vapnik提出的旨在改善传统神经网络学习方法的理论弱点,最先从最优分类面问题提出了支持向量机网络。
SVM学习算法根据有限的样本信息在模型的复杂性和学习能力之间寻求最佳折中,以期获得最好的泛化能力。SVM在形式上类似于多层前向网络,而且己被应用于模式识别、回归分析、数据挖掘等方面。支持向量机方法能够克服多层前向网络的固有缺陷,它有以下几个优点:
(1)它是针对有限样本情况的。根据结构风险最小化原则,尽量提高学习机的泛化能力,即由有限的训练样本得到小的误差,能够保证对独立的测试集仍保持小的误差,其目标是得到现有信息下的最优解,而不仅仅是样本数趋于无穷大时的最优值。
(2)算法最终将转化成一个二次型寻优问题,从理论上说,得到的将是全局最优点。
(3)算法将实际问题通过非线性变换转换到高维的特征空间,在高维空间中构造线性判别函数来实现原空间中的非线性判别函数,这一特殊的性质能保证机器有较好的泛化能力,同时它巧妙地解决了维数灾难问题,使得其算法复杂度与样本维数无关。