什么是支持向量机(SVM)以及它的用途?

2024-05-19 01:17

1. 什么是支持向量机(SVM)以及它的用途?

SVM - support vector machine, 俗称支持向量机,为一种supervised learning算法,属于classification的范畴。在数据挖掘的应用中,与unsupervised的Clustering相对应和区别。
广泛应用于机器学习(Machine Learning), 计算机视觉(Computer Vision) 和数据挖掘(Data Mining)当中。
假设要通过三八线把实心圈和空心圈分成两类,那么有无数多条线可以完成这个任务。在SVM中,寻找一条最优的分界线使得它到两边的margin都最大。

扩展资料:
SVM 的优点
1、高维度:SVM 可以高效的处理高维度特征空间的分类问题。这在实际应用中意义深远。比如,在文章分类问题中,单词或是词组组成了特征空间,特征空间的维度高达 10 的 6 次方以上。
2、节省内存:尽管训练样本点可能有很多,但 SVM 做决策时,仅仅依赖有限个样本(即支持向量),因此计算机内存仅仅需要储存这些支持向量。这大大降低了内存占用率。
3、应用广泛:实际应用中的分类问题往往需要非线性的决策边界。通过灵活运用核函数,SVM 可以容易的生成不同的非线性决策边界,这保证它在不同问题上都可以有出色的表现(当然,对于不同的问题,如何选择最适合的核函数是一个需要使用者解决的问题)。
参考资料来源:百度百科-支持向量机

什么是支持向量机(SVM)以及它的用途?

2. 什么是支持向量机(SVM)以及它的用途?

SVM - support vector machine, 俗称支持向量机,为一种supervised learning算法,属于classification的范畴。在数据挖掘的应用中,与unsupervised的Clustering相对应和区别。
广泛应用于机器学习(Machine Learning), 计算机视觉(Computer Vision) 和数据挖掘(Data Mining)当中。
假设要通过三八线把实心圈和空心圈分成两类,那么有无数多条线可以完成这个任务。在SVM中,寻找一条最优的分界线使得它到两边的margin都最大。

扩展资料:
SVM 的优点
1、高维度:SVM 可以高效的处理高维度特征空间的分类问题。这在实际应用中意义深远。比如,在文章分类问题中,单词或是词组组成了特征空间,特征空间的维度高达 10 的 6 次方以上。
2、节省内存:尽管训练样本点可能有很多,但 SVM 做决策时,仅仅依赖有限个样本(即支持向量),因此计算机内存仅仅需要储存这些支持向量。这大大降低了内存占用率。
3、应用广泛:实际应用中的分类问题往往需要非线性的决策边界。通过灵活运用核函数,SVM 可以容易的生成不同的非线性决策边界,这保证它在不同问题上都可以有出色的表现(当然,对于不同的问题,如何选择最适合的核函数是一个需要使用者解决的问题)。
参考资料来源:百度百科-支持向量机

3. 支持向量机(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)变换到对偶变量 (dual variable) 的优化问题,即通过求解与原问题等价的对偶问题(dual problem)得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题。
   那什么是拉格朗日对偶性呢?简单来讲,通过给每一个约束条件加上一个拉格朗日乘子  ,(Lagrange multiplier),定义拉格朗日函数(通过拉格朗日函数将约束条件融合到目标函数里去,从而只用一个函数表达式便能清楚的表达出我们的问题)     
   然后令:        容易验证,当某个约束条件不满足时,例如  ,那么显然有  (只要令  即可)。而当所有约束条件都满足时,则最优值为  ,亦即最初要最小化的量。
   因此,在要求约束条件得到满足的情况下最小化  ,实际上等价于直接最小化  (当然,这里也有约束条件,就是   ≥0,i=1,…,n)   ,因为如果约束条件没有得到满足,  会等于无穷大,自然不会是我们所要求的最小值。
   具体写出来,目标函数变成了:
     
   这里用  表示这个问题的最优值,且和最初的问题是等价的。如果直接求解,那么一上来便得面对w和b两个参数,而  又是不等式约束,这个求解过程不好做。不妨把最小和最大的位置交换一下,变成:     
   交换以后的新问题是原始问题的对偶问题,这个新问题的最优值用  来表示。而且有  ≤  ,在满足某些条件的情况下,这两者相等,这个时候就可以通过求解对偶问题来间接地求解原始问题。
   换言之,之所以从minmax  的原始问题,转化为maxmin  的对偶问题,一者因为  是  的近似解,二者,转化为对偶问题后,更容易求解。
   下面可以先求L 对w、b的极小,再求L对  的极大。
    KKT条件      ≤  在满足某些条件的情况下,两者等价,这所谓的“满足某些条件”就是要满足KKT条件。
   要让两者等价需满足strong duality (强对偶),而后有学者在强对偶下提出了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 还比较弱,只能处理线性的情况,不过,在得到了对偶dual 形式之后,通过 Kernel 推广到非线性的情况就变成了一件非常容易的事情了(通过求解对偶问题得到最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题”)。
   事实上,大部分时候数据并不是线性可分的,这个时候满足这样条件的超平面就根本不存在。在上文中,我们已经了解到了SVM处理线性可分的情况,那对于非线性的数据SVM咋处理呢?对于非线性的情况,SVM 的处理方法是选择一个核函数 κ(⋅,⋅) ,通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题。
   具体来说,在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身不好分的非线性数据分开。如图所示,一堆数据在二维空间无法划分,从而映射到三维空间里划分:
                                           而在我们遇到核函数之前,如果用原始的方法,那么在用线性学习器学习一个非线性关系,需要选择一个非线性特征集,并且将数据写成新的表达形式,这等价于应用一个固定的非线性映射,将数据映射到特征空间,在特征空间中使用线性学习器,因此,考虑的假设集是这种类型的函数:        这里ϕ:X->F是从输入空间到某个特征空间的映射,这意味着建立非线性学习器分为两步:
   首先使用一个非线性映射将数据变换到一个特征空间F,   然后在特征空间使用线性学习器分类。
   而由于对偶形式就是线性学习器的一个重要性质,这意味着假设可以表达为训练点的线性组合,因此决策规则可以用测试点和训练点的内积来表示:        如果有一种方式可以在特征空间中直接计算内积〈φ(xi · φ(x)〉,就像在原始输入点的函数中一样,就有可能将两个步骤融合到一起建立一个非线性的学习器,这样直接计算法的方法称为核函数方法:   核是一个函数K,对所有x,z,满足  ,这里φ是从X到内积特征空间F的映射。
   来看个核函数的例子。如下图所示的两类数据,分别分布为两个圆圈的形状,这样的数据本身就是线性不可分的,此时咱们该如何把这两类数据分开呢(下文将会有一个相应的三维空间图)?
                                           事实上,上图所述的这个数据集,是用两个半径不同的圆圈加上了少量的噪音生成得到的,所以,一个理想的分界应该是一个“圆圈”而不是一条线(超平面)。如果用  和  来表示这个二维平面的两个坐标的话,我们知道一条二次曲线(圆圈是二次曲线的一种特殊情况)的方程可以写作这样的形式:        注意上面的形式,如果我们构造另外一个五维的空间,其中五个坐标的值分别为  ,那么显然,上面的方程在新的坐标系下可以写作:        关于新的坐标  ,这正是一个 hyper plane 的方程!也就是说,如果我们做一个映射  ,将   按照上面的规则映射为  ,那么在新的空间中原来的数据将变成线性可分的,从而使用之前我们推导的线性分类算法就可以进行处理了。这正是 Kernel 方法处理非线性问题的基本思想。
   再进一步描述 Kernel 的细节之前,不妨再来看看上述例子在映射过后的直观形态。当然,你我可能无法把 5 维空间画出来,不过由于我这里生成数据的时候用了特殊的情形,所以这里的超平面实际的方程是这个样子的(圆心在  轴上的一个正圆)        因此我只需要把它映射到  ,这样一个三维空间中即可,下图即是映射之后的结果,将坐标轴经过适当的旋转,就可以很明显地看出,数据是可以通过一个平面来分开的
                                           核函数相当于把原来的分类函数:     
   映射成:     
   而其中的  可以通过求解如下 dual 问题而得到的:     
   这样一来问题就解决了吗?似乎是的:拿到非线性数据,就找一个映射

支持向量机(SVM)基本原理

4. 你知道支持向量机(SVM)是什么意思吗?

超级通俗的解释:支持向量机是用来解决分类问题的。先考虑最简单的情况,豌豆和米粒,用晒子很快可以分开,小颗粒漏下去,大颗粒保留。用一个函数来表示就是当直径d大于某个值D,就判定为豌豆,小于某个值就是米粒。d>D, 豌豆d<D,米粒在数轴上就是在d左边就是米粒,右边就是绿豆,这是一维的情况。但是实际问题没这么简单,考虑的问题不单单是尺寸,一个花的两个品种,怎么分类,假设决定他们分类的有两个属性,花瓣尺寸和颜色。单独用一个属性来分类,像刚才分米粒那样,就不行了。这个时候我们设置两个值尺寸x和颜色y.我们把所有的数据都丢到x-y平面上作为点,按道理如果只有这两个属性决定了两个品种,数据肯定会按两类聚集在这个二维平面上。

5. 你知道支持向量机(SVM)是什么意思吗

SVM - support vector machine, 俗称支持向量机,为一种supervised learning算法,属于classification的范畴。在数据挖掘的应用中,与unsupervised的Clustering相对应和区别。广泛应用于机器学习(Machine Learning), 计算机视觉(Computer Vision) 和数据挖掘(Data Mining)当中。假设我们要通过三八线把实心圈和空心圈分成两类。那么有无数多条线可以完成这个任务。在SVM中,我们寻找一条最优的分界线使得它到两边的margin都最大。在这种情况下边缘加粗的几个数据点就叫做support vector,这也是这个分类算法名字的来源。We got a bunch of data points in a n- dimensional to infinite-dimensional space, Then one can always find a optimal hyperplane which is always in the n-1 dimension. 我举个例子吧,当你给SVM一段文本,比如“这款手机屏幕很大,我很喜欢”,你想知道这个文本的情感倾向是积极的还是消极的,你把这个文本扔给SVM分类器,SVM会告诉你说它的情感是积极的。但是现在我们多了一个选项,“中立”。

你知道支持向量机(SVM)是什么意思吗

6. 支持向量机SVM(3)核函数、非线性支持向量机

 前面已经分别介绍了基于硬间隔最大化的线性可分支持向量机、基于软间隔最大化的线性支持向量机,这次来总结下使用核函数来解决非线性可分问题的非线性支持向量机。
   对于非线性可分问题,我们本着简化问题的思想,自然是希望将其转化为熟悉的线性可分问题进行处理,那么怎么做呢?对于一个在样本的原始空间中不是线性可分的数据,如下左图中的红色样本点和蓝色样本点,如果想要进行分类的话,可以将数据映射到更高维的特征空间中,如果映射的合适的话,就能找到一个超平面将数据分类,如下右图所示:
                                           这种做法是特例还是可以普遍使用的呢?《机器学习》书上说:
   不过书上并没有解释原因,我们先从低维直观的理解一下,如下图所示:在一维线性不可分的数据,可以映射成在二维线性可分的,在二维线性不可分的数据,可以映射成在三维线性可分的:
                                           在更高的维度也适用吗?实际上,这个论点在理论上是有证明的,即 Cover定理 ,Cover定理可以理解为:当空间的维数D越大时,在该空间的N个数据点间的线性可分的概率就越大。如果固定数据的数量N,维度D小于数据数量N时,特征空间维度越高,越有可能使数据线性可分;在维度超过数据数量时,数据一定线性可分(试想如果我们把每个数据点都映射到不同的坐标轴上,那么可不就是线性可分的了么)。
   因此,我们对非线性可分的数据,可以将数据映射至高维空间,然后再用我们熟悉的线性分类器来分类,至此,剩下的问题就是怎么映射呢?这就需要核函数登场了。
   核函数是一个广泛使用的技术,事实上它比支持向量机出现的更早,它可以将一个空间的向量映射到另一个空间,刚好符合我们解决非线性可分问题的需求, 核函数定义 :
   核函数的一大优势就是,它通过定义函数  来隐式的定义映射  ,一般来说,直接计算函数  是比较容易的,因为它是在原始低维度进行的,而通过  计算是很困难的,因为  是高维的,甚至是无穷维的。
   既然核函数这么棒,那怎么获得一个核函数呢?或者说怎么判断一个函数是不是核函数?通常我们所说的核函数都是正定核函数, 正定核函数的充要条件: 
   有了这个定义,理论上我们可以构造出核函数,不过对非常困难,因为要保证任意输入的Gram矩阵都要是半正定矩阵,所以在实际使用中,我们一般使用前辈们总结好的常用核函数。
    证明: 
   根据定义,核函数的映射涉及从欧氏空间到希尔伯特空间的转化,其过程是怎样的呢?如果我们在Gram矩阵是半正定的条件下,把这个映射过程推出来不就相当于证明了上述定理的充分性了吗~
   前提:  是对称函数、  是半正定矩阵
     
     
   除去对应的基底,将其表示为希尔伯特空间的向量(一个函数可以看成一个无穷维的向量,空间中的任何一个函数都可以表示为一组正交基的线性组合):
     
     
   计算二者内积:
     
   也就是核函数定义中的:
     
   至此就证明了上述定理的充分性,至于必要性,求出Gram矩阵就可以证明,比较简单就不说了。
     这个特性叫做 再生性(reproducing property) ,所以这个空间叫做 再生核希尔伯特空间(RKHS, reproducing kernel Hilbert space) 。
   对定义的低维度到高纬度的映射  来说,我们不需要知道这个映射是什么就可以计算得到高维的内积  ,这就是SVM中使用的 核技巧 。
   *上述核函数及证明中出现较多的各种数学空间,如果不熟悉的话可以看文末的附录,对各种空间的关系有一个大致的展示。
     
   使用线性核函数跟不使用核函数是一样的,还是无法处理非线性可分问题的,不过从这个角度出发,我们可以把 线性可分SVM看作非线性不可分SVM的使用线性核函数的特例 。
     
   SVM中也称为径向基核函数(Radial Basis Function,RBF),是非线性支持向量机中最常用的核函数:
     
   因为在映射后的高维空间中,支持向量机还是在解决线性可分的数据,所以原理、目标函数什么的都跟之前是一样的,只是最终的形式上有所不同,最终可得非线性支持向量机模型:
     
   非线性支持向量机的算法过程:
   核函数的引入大大提升了支持向量机的应用范围,使得其在非线性可分问题上也有了很好的分类表现,而且核技巧使得隐式的高维映射成为可能,使用起来也非常便捷。
   还记得我们在 逻辑回归 中针对非线性可分问题说过:
   所以相对于逻辑回归等线性分类器来说,SVM具有很大的优势,这也是SVM在过去几十年里流行的主要原因之一,其优美的数学推导也让很多学者非常喜欢,不过随着近几年集成学习、神经网络的兴起和数据量的爆炸性增长,SVM也慢慢的不再那么流行了,不过其在特定问题上仍然是一个很有魅力的算法,值得大家掌握。
   现在三种SVM都写完了,来总结一下SVM的优缺点吧:
     
   数学空间:数学中的空间的组成包括两个部分:研究的对象和内在的规则,或者叫做元素和结构。

7. 12、核支持向量机SVM

 核支持向量机kernelized support vector machine,支持就是重要的意思,向量就是点,机就是机器,即重要的点。   位于类别之间边界上的那些点,这些点叫作支持向量。想要对新样本点进行预测,需要测量它与每个支持向量之间的距离。   核支持向量机可用于回归SVR和分类SVC。
   下面利用乳腺癌数据集对模型进行训练:
   输出
                                           训练集的精度为1,但测试集精度只有63%,存在过拟合。SVM要求所有特征有相似的变化范围,乳腺癌数据集的特征具有不同的量级,对核SVM有很大的影响,我们对每个特征进行缩放,使其大致都位于同一范围,如将所有特征缩放到0和1之间(每一个数-最小值/范围,注意测试集也是采用训练集的最小值和范围的标准)。
   输出
                                           因为训练集和测试集的性能非常接近,但还没有接近100%的精度,所以模型还是处于欠拟合的状态。我们可以尝试增大C或gamma来拟合更为复杂的模型。   gamma是控制高斯核宽度的参数,它决定了点与点之间靠近是指多大的距离,gamma越小,更多的点被看作比较靠近。C是正则化参数,它限制每个特征的重要性(确切的说每个点的dual_coef_)。两个参数的设定通常是强烈相关的,应该同时调节。默认情况下,C=1,gamma=1。
   输出
                                           增大C显著改进了模型,得到了97%的精度。
   SVM允许决策边界很复杂,即使数据只有几个特征,它在低维数据和高维数据(即很少特征和很多特征)上的表现都很好。
    缺点:1 需要进行数据预处理,对数据的缩放和参数的设定非常敏感,所以数据预处理和调参都需要非常小心。这也是为什么如今很多应用中用的都是基于树的模型,比如随机森林或梯度提升(需要很少的预处理,甚至不需要预处理)。 2 SVM模型很难检查,也很难解释为什么会这么预测,难以将模型向非专家进行解释。

12、核支持向量机SVM

8. 05 SVM - 支持向量机 - 概念、线性可分

  04 SVM - 感知器模型 
   支持向量机(Support Vector Machine, SVM)本身是一个 二元分类算法 ,是对感知器算法模型的一种扩展,现在的SVM算法支持 线性分类 和 非线性分类 的分类应用,并且也能够直接将SVM应用于 回归应用 中,同时通过OvR或者OvO的方式我们也可以将SVM应用在 多元分类 领域中。在不考虑集成学习算法,不考虑特定的数据集的时候,在分类算法中SVM可以说是特别优秀的。
                                           在感知器模型中,算法是在数据中找出一个划分超平面,让尽可能多的数据分布在这个平面的两侧,从而达到分类的效果,但是在实际数据中这个符合我们要求的超平面是可能存在多个的。
                                           在感知器模型中,我们可以找到多个可以分类的超平面将数据分开,并且优化时希望所有的点都离超平面尽可能的远,但是实际上离超平面足够远的点基本上都是被正确分类的,所以这个是没有意义的;反而比较关心那些离超平面很近的点,这些点比较容易分错。所以说我们只要 让离超平面比较近的点尽可能的远离这个超平面 ,那么我们的模型分类效果应该就会比较不错。SVM其实就是这个思想。
                                            SVM核心思想: 找到离分割超平面较近的点(预测错误可能会高),然后想办法让它们离超平面的距离远。
    PS:   SVM在若干年前,当数据量还比较少的时候,SVM是最好的分类模型。但是现在随着数据量的不断增大,SVM模型运算速度较慢的缺点开始暴露。而且随着这些年集成学习的不算成熟,现在SVM普遍用于集成学习中基模型的构建。
    线性可分(Linearly Separable): 在数据集中,如果可以找出一个超平面,将两组数据分开,那么这个数据集叫做线性可分数据。
    线性不可分(Linear Inseparable): 在数据集中,没法找出一个超平面,能够将两组数据分开,那么这个数据集就叫做线性不可分数据。
    分割超平面(Separating Hyperplane): 将数据集分割开来的直线/平面叫做分割超平面。
    间隔(Margin): 数据点到分割超平面的距离称为间隔。
    支持向量(Support Vector): 离分割超平面最近的那些点叫做支持向量。
    回顾:  支持向量到超平面的距离为:
                                            PS:在SVM中支持向量到超平面的函数距离一般设置为1; 
                                            SVM模型  是让所有的分类点在各自类别的支持向量的两边,同时要求支持向量尽可能的远离这个超平面,用 数学公式 表示如下:
                                                                                                                                                                   1、将此时的目标函数和约束条件 使用KKT条件 转换为拉格朗日函数,从而转换为 无约束的优化函数 。
                                           2、引入拉格朗日乘子后,优化目标变成:
                                           3、根据拉格朗日对偶化特性,将该优化目标转换为等价的对偶问题来求解,从而优化目标变成:
                                           4、所以对于该优化函数而言,可以先求优化函数对于w和b的极小值,然后再求解对于拉格朗日乘子β的极大值。
                                           5、首先求让函数L极小化的时候w和b的取值,这个极值可以直接通过对函数L分别求w和b的偏导数得到:
                                                                                   6、将求解出来的w和b带入优化函数L中,定义优化之后的函数如下:
                                           7、通过对w、b极小化后,我们最终得到的优化函数只和β有关,所以此时我们可以直接极大化我们的优化函数,得到β的值,从而可以最终得到w和b的值;
                                           8、求解w T +b中b的值。
   假设存在最优解β*; 根据w、b和β的关系,可以分别计算出对应的w值和b值(使用支持向量对应的样本点来计算,作为实际的b值, 支持向量求解出的b值是唯一解 );
                                                                                   这里的(xs,ys)即 支持向量 ,根据KKT条件中的对偶互补条件(松弛条件约束),支持向量必须满足以下公式:
                                            06 SVM - 线性可分SVM算法和案例 
最新文章
热门文章
推荐阅读