详解支持向量机SVM

详解支持向量机SVM

支持向量机预备知识

深入理解超平面

先来看下一维的实例
下面是一个只有x轴的一维坐标轴,该轴同样存在原点,x轴正方向和x轴反方向,且该轴上分布了很多点:
在这里插入图片描述
绿色的菱形坐标从左至右依次为:-5,-3,-1;红色的圈圈坐标从左到右依次为:2,3,5,6,7;此时,假如要求在坐标轴上找一个分割点,来分割红色的圆圈和绿色的菱形,而且要求只允许找一个点来分割这两部分样本,并且要求此点分割效果最好,如何去找呢?

答案: 在闭区间 (-1,2) 直接任取一点都可以将这两部分样本分开,且只能取这里面的点,而找到一个最有分割点,我只需要取最近的两个点的中间点即可,使最有分割点至两边的距离都最远。

再来看下二维的实例
如果是二维直角坐标系情况,现在要在正类(A、B、C、D、E)与负类(F、G、H)之间找一条直线来将两类样本点分开,如下如所示这样的线存在多条,要求寻找到一条划分效果最好,如何做呢?
在这里插入图片描述
答案: 先根据两点距离公式求两点之间的距离,经过计算得到了三对距离CF、CG、EG,那么此问题就转化为了在四个点C、E、F、G中找一条直线将两类样本效果最好的分开,只需在三对距离之间找到一个中点就好了,所以可以连线CF、CG、EG,找到它们的中点,然后连线,此问题解决。

简单来说,我们只需考虑两类距离最近的点分别到最优分割线的距离都最远即可。

以上问题转化为支持向量机的核心问题:

通俗理解就是要在两类样本点之间找一条直线(超平面)来将两类样本点分开,存在多条划分直线(超平面),那么如何求得这些直线(超平面),并且选出使划分效果最好的,如何做呢?

主要分为两步
(1)找到两类样本之间最近的那一部分点(用距离公式,高维空间也适用)
(2)找到一条直线(高维空间称之为超平面)使得(1)中最近的那些样本点到此直线(或超平面)的距离相等且尽量最大,此处可以用“点到直线(超平面)的距离”来解决,并且由于要把两类样本分开,所以必然一部分样本点在直线上方,一部分在直线下方,根据直线的规律可知(斜率大于0),若(x0,y0)在直线上方,则满足Ax0+By0+C>0,若(x0,y0)在直线下方,则满足Ax0+By0+C<0。

对于更高维的问题:引入超平面

二维空间里面,一条直线的方程可以表示为:Ax+By+C=0
三维空间里面,平面的方程可以表示为:Ax+By+Cz+D=0

依次推广,n维空间的超平面方程可以表示为
w1x1+w2x2+w3x3+w4x4+…+wnxn+b=0
此处用x1、x2、x3、…、xn来表示n维坐标系,各个维度的系数此处也可以用w1、w2、w3、…、wn来表示。

间隔最大化

找到两类样本点之间离得最近的那一部分点(称之为支持向量),并将问题同样转化为找到中间一个超平面将这部分样本点划分开,此时又涉及到这些样本点到超平面的距离(即支持向量到超平面的距离),关于样本点到超平面的距离,可以如下去通俗的理解:
(1)点到平面距离的推导
在这里插入图片描述
(2)点到超平面的距离
在这里插入图片描述
(3)函数间隔
在这里插入图片描述
(4)几何间隔
在这里插入图片描述
(5)支持向量
在这里插入图片描述
(6)间隔边界
在这里插入图片描述
(7)间隔最大化
在这里插入图片描述
在这里插入图片描述

间隔最大化最优值求解方法

经过之前的分析,我们得到了线性可分支持向量机学习的最优化问题,即原始问题:
在这里插入图片描述
凸优化
在这里插入图片描述

拉格朗日乘数法

上述优化函数是一个比较典型的有限制条件的求多元函数极值的问题,为了求解此最优化函数,需要应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解。那么下面,首先将简单证明下等式条件下拉格朗日乘数法的来历和KKT条件的数学推理。

拉格朗日乘数法基本思想

拉格朗日乘子法作为一种优化算法,主要用于解决约束优化问题,它的基本思想就是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题。拉格朗日乘子背后的数学意义是其为约束方程梯度线性组合中每个向量的系数(或者说,拉格朗日乘子是约束条件边界直线的法向量与目标函数等高线的法向量是共线向量)。

如何将一个含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题?

拉格朗日乘数法从数学意义入手,通过引入拉格朗日乘子建立极值条件,对n个变量分别求偏导对应了n个方程,然后加上k个约束条件(对应k个拉格朗日乘子)一起构成包含了(n+k)变量的(n+k)个方程的方程组问题,这样就能根据求方程组的方法对其进行求解。

通过一个简单的实例看一下:
在这里插入图片描述
在这里插入图片描述

通过实例理解了拉格朗日乘数法的思后,下面证明下拉格朗日乘子法:

在这里插入图片描述
在这里插入图片描述

拉格朗日乘数法的基本形式

为求函数
在这里插入图片描述
在满足
在这里插入图片描述
下的条件极值,将其可以转化为函数
在这里插入图片描述
的无条件极值问题。

在这里插入图片描述

拉格朗日乘数法与KKT条件(针对不等式约束)

KKT条件的意义:它是一个非线性规划(Nonlinear Programming)问题能有最优化解法的必要和充分条件。
上述讨论的问题均为等式约束优化问题,但是此时仍旧解决不了约束条件是不等式约束的情况,解决此问题不光需要引入拉格朗日乘子,还需要引入一个KKT条件,而拉格朗日乘数法增加了KKT条件之后便可以用拉格朗日乘数法来求解不等式约束的优化问题了。

所有的不等式约束问题可以如下的表示:
在这里插入图片描述在这里插入图片描述
不等式约束分两种情况来讨论:
第一种是极小值点落在可行域内(不包含边界)

在这里插入图片描述

第二种是极小值点落在可行域外(包含边界)
在这里插入图片描述

总结:
在这里插入图片描述
在这里插入图片描述
简单总结一下
对于无约束的优化问题,直接令梯度等于0求解。

对于含有等式约束的优化问题,拉格朗日乘子法,构造拉格朗日函数,令偏导为0求解。

对于含有不等式约束的优化问题,同样构造拉格朗日函数,利用KKT条件求解。

拉格朗日对偶性

上节介绍了拉格朗日乘子法和KKT条件,下面总结下拉格朗日对偶性的问题。在约束优化问题中,常常用拉格朗日对偶性来将原始问题转为对偶问题,通过解对偶问题的解来得到原始问题的解。

为什么要利用对偶?
(1)首先要明确,对偶问题的解不一定直接等于原问题的解(弱对偶),但是,对偶问题有两点性质。

(2)满足某些条件时,对偶问题直接等于原问题的解(强对偶)

(3)无论原始问题是否是凸的,对偶问题都是凸优化问题

显然,在某些情况下,直接对对偶问题求解可以得到原问题的解,而且对偶问题是凸优化,易于求解。所以利用对偶来求解是很有用的。

这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题。

原始问题如下:

在这里插入图片描述
对偶问题如下:
在这里插入图片描述

原始问题和对偶问题的关系:
在这里插入图片描述

间隔最大化最优值求解

求解间隔最大化最优值问题,就可应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解。这样做的优点,一是对偶问题往往更容易求解,二是自然引入核函数,进而推广到非线性分类问题。

原始问题
在这里插入图片描述

构建拉格朗日函数
在这里插入图片描述
对偶算法
在这里插入图片描述
实现步骤:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面阐述得到以上两式的计算过程,由KKT条件得:
在这里插入图片描述
在这里插入图片描述
补充:
1.KKT条件
在这里插入图片描述
2.序列最小最优化算法(sequential minimal optimization,SMO)
来求解对偶问题:
在这里插入图片描述

支持向量机

线性可分支持向量机

定义
在这里插入图片描述
算法过程
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
线性可分SVM的学习方法对于非线性的数据集是没有办法使用的, 有时候不能线性可分的原因是线性数据集里面多了少量的异常点,由于这些异常点导致了数据集不能线性可分, 下一节的线性SVM的软间隔最大化解决此问题。

线性支持向量机

有时候本来数据的确是可分的,也就是说可以用 线性分类SVM的学习方法来求解,但是却因为混入了异常点,导致不能线性可分。通常情况是,训练数据中有一些特异点(outlier)。将这些特异点除去后,剩下大部分的样本点组成的集合是线性可分的。如下图:
在这里插入图片描述

软间隔最大化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

软间隔最大化目标函数的求解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面阐述得到以上两式的计算过程,由KKT条件得:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

软间隔最大化时的支持向量

在这里插入图片描述
在这里插入图片描述

非线性支持向量机

核技巧

在这里插入图片描述
左图分类问题无法用直线(线性模型)将正负实例正确分开,但可以用一条椭圆曲线(非线性模型)将它们正确分开。
在这里插入图片描述

如果能用一个超曲面将正负例正确分开,则称这个问题为非线性可分问题。非线性问题往往不好求解,所以希望能用解线性分类问题的方法解决这个问题。所采取的方法是进行一个非线性变换,将非线性问题变换为线性问题,通过求解线性问题来求解原问题。

在这里插入图片描述
核技巧应用到SVM,基本想法是通过一个非线性变换将输入空间对应于一个特征空间,使得输入空间中的超曲面对应于特征空间H的超平面。这样,分类问题的学习任务通过在特征空间中求解线性SVM就可以完成
在这里插入图片描述
核函数的价值在于它虽然也是将特征进行从低维到高维的转换,但核函数好在它在低维上进行计算,而将实质上的分类效果(利用了内积)表现在了高维上,这样避免了直接在高维空间中的复杂计算,真正解决了SVM线性不可分的问题。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

分类SVM总结

引入了核函数后,我们的SVM算法才算是比较完整了。现在我们对分类SVM的算法过程做一个总结,不再区别是否线性可分。
在这里插入图片描述
算法流程
在这里插入图片描述

线性支持回归

SVM回归模型的损失函数

在这里插入图片描述

SVM回归模型目标函数求解

在这里插入图片描述
求解步骤:

在这里插入图片描述
在这里插入图片描述

SVM算法的主要优点有:
解决高维特征的分类问题和回归问题很有效,在特征维度大于样本数时依然有很好的效果。

仅仅使用一部分支持向量来做超平面的决策,无需依赖全部数据。

有大量的核函数可以使用,从而可以很灵活的来解决各种非线性的分类回归问题。

样本量不是海量数据的时候,分类准确率高,泛化能力强。

SVM算法的主要缺点有:
如果特征维度远远大于样本数,则SVM表现一般。

SVM在样本量非常大,核函数映射维度非常高时,计算量过大,不太适合使用。

非线性问题的核函数的选择没有通用标准,难以选择一个合适的核函数。

SVM对缺失数据敏感。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 支持向量机(Support Vector Machine, SVM)是一种监督学习算法,旨在寻找最佳的超平面,将不同类别的数据分开。从分类问题的角度来看,SVM要求找到一个超平面,使得不同类别的样本点在该超平面两侧,同时离该超平面的距离最大。该最大距离被称为margin,而最佳的超平面被称为最大间隔超平面。 SVM的核心思想是将数据映射到高维空间中,使得数据在高维空间中更容易线性可分。在高维空间中,由于数据点增多,出现维度灾难的问题,而此时SVM可以通过核函数来避免该问题。 在求解最大间隔超平面时,SVM依赖于一些向量,称为支持向量。这些支持向量是最接近最大间隔超平面的样本点,它们对求解最大间隔超平面起到了至关重要的作用。 SVM可以应用于二分类、多分类以及回归问题,并且在实际应用中表现出色。在实际使用中,需要根据具体问题选择适当的核函数,并且需要对超参数进行调整。此外,还需要注意数据的标准化处理,以避免不同维度的数据误导模型。 总之,SVM是一种强大的分类器,具有多种核函数可供选择,能够适用于不同类型数据的分类问题。 ### 回答2: 支持向量机SVM)是一种监督学习算法,可以用于分类和回归问题。它的优点是可以处理非线性分类问题,并且对于数据集中的噪声有较好的鲁棒性。SVM利用最大化分类边界来进行分类,最终得到的分类器是一个高维空间中的超平面。 SVM原理是基于寻找最优超平面,这个超平面能够把不同类别的样本点分开。在二维平面上,这个超平面可以是一条直线,但是在高维空间中,它是一个超平面。SVM通过最大化边缘来寻找最优的超平面。边缘是一个超平面到两边最近样本点的距离,它表明了模型的泛化能力,即分类器对于新的数据的表现能力。 支持向量机的核心思想是寻找一条最大间隔的线性分割超平面。在非线性分类任务中,使用核方法将特征向量转换为高维空间中的特征向量。在这个高维空间中,数据点可以被更好地分割,即可能会出现线性可分的情况。 关键的问题是如何解决分割垂直于某个维度的问题,此时支持向量机利用核函数的技巧将数据集映射到高维空间,并在这个高维空间中采用线性可分的方法来进行分类。通常情况下,核函数常用的有线性核、多项式核和径向基函数核。 其中,径向基函数核(RBF kernel)是最常用的核函数之一。这个核函数可以将数据点映射到一个无限维的特征空间上。径向基函数核使用一个参数gamma来决定核函数的变化速度。当gamma的值很小的时候,核函数的变化会很慢,分类的边界将会很宽。当gamma的值很大的时候,核函数的变化会很快,分类的边界将会很窄。 SVM的优化问题可以通过拉格朗日乘子法来解决。可以使用拉格朗日乘子来构造一个拉格朗日函数,并使用约束条件来推导对偶形式的SVM问题。这个对偶形式的问题可以使用高效的SMO算法来求解。 SVM是一种强大的分类方法,它适用于许多不同的应用场景,并在许多任务中实现了很好的结果。支持向量机具有较好的泛化性能、能够处理高维数据、适用于不同类型的输入数据,并且能够快速训练分类器。 ### 回答3: SVM是一种二分类模型,它的主要思想是通过线性或非线性的方式找到最优的超平面,将不同类别的数据点分开。SVM支持向量机通过选择支持向量,来定义最优的超平面。支持向量是离超平面最近的数据点,它们对最终分类结果起到决定性的作用。在选取支持向量的过程中,SVM支持向量机尝试选择最少的支持向量,以达到泛化能力强的效果。 SVM支持向量机的分类器可以采用不同的核函数进行拟合,从而实现非线性分类。其中,常用的核函数包括线性核、多项式核、高斯核等。利用核函数的基本原理,我们可以把数据从原本空间映射到更高维的空间中。在高维空间,数据点在非线性情况下更容易区分,从而提高了分类的准确率。 SVM支持向量机的训练过程可以利用现有的优化算法求解,例如序列最小优化算法(SMO)和改进的SMO算法等。这些算法通过不断迭代优化模型参数,直至达到最优的分类效果。在模型训练完成之后,我们可以利用模型进行分类预测,从而实现新数据的分类。 总之,SVM支持向量机是一种基于分类边界找寻的算法,在分类效果、泛化能力和计算效率等方面具有优势,因此在分类领域有着广泛的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值