支持向量机(SVM)

简介: SVM是有监督学习、属于判别模型(决策函数),非线性,有预测函数,有优化目标,有求解算法(SMO

SVM有监督学习、属于判别模型(决策函数),非线性,有预测函数,有优化目标,有求解算法(SMO)

支持向量机(Support Vector Machine, SVM)的基本模型是在特征空间上找到最佳的分离超平面使得训练集正负样本间隔最大。SVM是用来解决二分类问题的有监督学习算法,在引入了核方法之后SVM也可以用来解决非线性问题。

一般SVM有下面三种:

硬间隔支持向量机(线性可分支持向量机):当训练数据线性可分时,可通过硬间隔最大化学得一个线性可分支持向量机。

软间隔支持向量机:当训练数据近似线性可分时,可通过软间隔最大化学得一个线性支持向量机。

非线性支持向量机:当训练数据线性不可分时,可通过核方法以及软间隔最大化学得一个非线性支持向量机。

三个要素:模型(从数据和目的构建出的决策函数或概率分布)、策略(构造优化目标)、算法(求解优化目标的方法)

针对线性可分的情况:

1、模型:也就是需要学习的决策函数由以下可知:

523a0aa447408330f7ad92a9f71adedf_20190305105858657.png

92db525709d1565b564cc39ad31daaec_2019030510513873.png

2、核心是在已有数据的基础上如何找到最佳的决策函数?

也可表述为:分类学习最基本的想法就是基于训练集D在特征空间中找到一个最佳划分超平面将正负样本分开,而SVM算法解决的就是如何找到最佳超平面的问题

其中的超平面为:

47cde6addbdc7dfd7460849652cf5786_20190305105523781.png

如何得出最佳的超平面?也就是求解出w和b

为了找到优化的目标,也即是最小的损失函数:

引用下图说明:

5f3c6b25be0694986bdc5d02239a528d_70.jpg

问题表述:

对于一部分的样本点到超平面的的距离分类,大于1的为正类,小于-1的为负类(为1的原因是通过等比缩放可以得到,为了问题的简化)

2741260a8c4561ad6951468bce85edce_20190305110925819.png

那么样本点到超平面距离为1的样本点称为支持向量,正负距离为1的样本点距离超平面所构成的间隔结合点到平面的距离公式参考https://www.cnblogs.com/graphics/archive/2010/07/10/1774809.html

0b0f5fdf57aea8f4064569a60810902e_20190305111531541.png

因此可得出正负样本点距离超平面的和(定义为间隔)如下式因此求解最佳超平面的抽象问题进一步转化为求解间隔最大化

c6dbba9533db7d2d3d461e55e065f21e_20190305111705432.png

将如下的公式代入上式:

704e03eb408c6090a01c64f5f3f2c5b6_20190305112045115.png

那么间隔表示为 :

a9032113553157f488b94a6bf7b22a14_20190305112157442.png

求解间隔最大化问题(优化目标)进一步表示为:

e2456d181de2aa62e33b81d13d3142fb_20190305112314111.png

或者(1):

d5048524af48b5db94f261a61287414e_20190305112452334.png

下面进入优化目标的进一步转化:

将引入拉格朗日乘子法和KTT条件(具体可参考:深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件https://blog.csdn.net/lijil168/article/details/69395023

基本的拉格朗日乘子法(又称为拉格朗日乘数法),就是求函数f(x1,x2,...)在g(x1,x2,...)=0的约束条件下的极值的方法。其主要思想是引入一个新的参数λ(即拉格朗日乘子),将约束条件函数与原函数联系到一起,使能配成与变量数量相等的等式方程,从而求出得到原函数极值的各个变量的解。

拉格朗日构造如下:

5ebb79e10c17d6fe82ea28cab25819a9_20190305114857900.png

求偏导:

88b3dab03dec2bfd7ecd613bf88483a8_20190305114944835.png

并将结果代入上式得:

对比(1)式多了一个不等式的约束项,是由于构造拉格朗日乘子时引入的

7e556cb4930b1b5943d886492a7fd663_20190305115104388.png

最终求解的决策模型为:

0b795672045592e3330cc300a62ad069_20190305115308775.png

注意要考虑原有优化问题的不等式约束,为此还需引入KTT约束条件:

585d14517e3b1f5f22728d01809dd8c2_20190305120310585.png

有了优化目标,

7e556cb4930b1b5943d886492a7fd663_20190305115104388.png

cb835c33264815e9167e24d768620c81_20190305120611286.png

3、下面将展示的是求解优化目标的优化算法:

SMO算法:

1a90bc5882cb86501e90b45a2c8ee00d_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlZGEz,size_16,color_FFFFFF,t_70.png

注意的是:KTT条件违背的程度越大,那么变量更新后可能导致目标函数的减幅越大。

因此两个变量的选择条件是1)选择违背KTT条件最大的变量 2)选择使得目标函数减幅最大的变量

针对训练数据非线性可分时:

也即是通过一个超平面无法将样本正确分类;为此需要将数据样本空间映射到更高维度的特征空间,使得样本在这个特征空间中线性可分。

推导求解优化目标时需要求解特征函数的内积,为此引入核函数来替代,避免了高维特征空间内积计算复杂的问题。

是实际的情况是特征函数无法确定,因此核函数也无法确定(通过特征函数可以直接计算出核函数)

由定理可知:任何一个核函数隐式定义了一个再生希尔伯特空间

因此通过选择核函数,来确定特征函数

9e86639b93752373dce96ddb4e866423_20190305131615103.png

其中核函数的选择:

50b2e31d475fc05e4264c73b78dac78e_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlZGEz,size_16,color_FFFFFF,t_70.png

新的核函数可以通过组合来构造:

1)线性组合

2)核函数的乘积

3)乘以任意的函数构造

该模型的优缺点:

优点:

SVM在中小量样本规模的时候容易得到数据和特征之间的非线性关系,可以避免使用神经网络结构选择和局部极小值问题,可解释性强,可以解决高维问题。

缺点:

SVM对缺失数据敏感,对非线性问题没有通用的解决方案,核函数的正确选择不容易,计算复杂度高,主流的算法可以达到O(n2)的复杂度,这对大规模的数据是吃不消的。

参考:https://blog.csdn.net/liugan528/article/details/79448379 

不错的博客:

【1】SVM基础讲解有公式推导,不够详细https://blog.csdn.net/liugan528/article/details/79448379

【2】python中支持向量机的使用方法 http://sklearn.apachecn.org/#/docs/5?id=scores-probabilities

【3】kasci讲解视频https://www.bilibili.com/video/av35363386/?spm_id_from=333.788.videocard.0

【4】机器学习面试之有必要手推SVM吗 https://www.jianshu.com/p/f4c7bc6c4ce2  

【5】SVM https://blog.csdn.net/liugan528/article/details/79448379  






目录
相关文章
|
8月前
|
机器学习/深度学习 算法 Serverless
什么是支持向量机(SVM)
支持向量机(Support Vector Machine,SVM)是一种用于分类问题的监督算法。主要用于二分类和多分类问题。其基本思想是找到一个超平面,能够将不同类别的样本点尽可能地分开,并使得离超平面最近的样本点尽可能远离超平面,从而实现较好的分类效果。 SVM的关键是找到一个最优的超平面,这个超平面可以通过使得最靠近超平面的样本点之间的间隔最大化来定义。这些最靠近超平面的样本点被称为支持向量。SVM的优化目标可以表示为一个凸二次规划问题,可以通过求解对应的拉格朗日函数来得到最优解。
|
2月前
|
机器学习/深度学习 算法
介绍一下SVM中的支持向量机
介绍一下SVM中的支持向量机
75 16
|
8月前
|
机器学习/深度学习 算法 Serverless
支持向量机(SVM)
支持向量机(Support Vector Machine,SVM)是一种用于分类问题的监督算法。主要用于二分类和多分类问题。其基本思想是找到一个超平面,能够将不同类别的样本点尽可能地分开,并使得离超平面最近的样本点尽可能远离超平面,从而实现较好的分类效果。 SVM的关键是找到一个最优的超平面,这个超平面可以通过使得最靠近超平面的样本点之间的间隔最大化来定义。这些最靠近超平面的样本点被称为支持向量。SVM的优化目标可以表示为一个凸二次规划问题,可以通过求解对应的拉格朗日函数来得到最优解。 SVM除了能够处理线性可分离的问题外,还可以通过核函数的引入处理线性不可分的问题,将样本映射到高维空间,从而
|
7月前
|
机器学习/深度学习 算法 数据挖掘
支持向量机(一)
**支持向量机(SVM)** 是一种优雅的分类和回归算法,广泛应用于文本分类、图像识别、生物信息学和金融预测。它寻找最大化类别间边距的决策边界,适应小样本、高维和非线性问题。SVM通过核函数(如RBF)处理非线性数据,目标是找到具有最大边距的超平面,以提高泛化能力。C参数调节模型复杂度,允许数据点偏离边界的程度。
|
7月前
|
机器学习/深度学习 数据可视化 算法
支持向量机(二)
这是一个关于支持向量机(SVM)的实践教程概要。作者使用Python的sklearn库演示了SVM的步骤,包括导入库、构建数据集、训练线性SVM模型、查看模型参数、进行预测及可视化决策边界。讨论了SVM在处理线性不可分数据时使用核函数(如高斯核)的重要性,并总结了SVM的优缺点:它擅长处理高维和非线性问题,但对大规模数据和参数选择敏感,训练时间可能较长。
|
8月前
|
机器学习/深度学习 数据采集 算法
深入理解并应用机器学习算法:支持向量机(SVM)
【5月更文挑战第13天】支持向量机(SVM)是监督学习中的强分类算法,用于文本分类、图像识别等领域。它寻找超平面最大化间隔,支持向量是离超平面最近的样本点。SVM通过核函数处理非线性数据,软间隔和正则化避免过拟合。应用步骤包括数据预处理、选择核函数、训练模型、评估性能及应用预测。优点是高效、鲁棒和泛化能力强,但对参数敏感、不适合大规模数据集且对缺失数据敏感。理解SVM原理有助于优化实际问题的解决方案。
|
机器学习/深度学习 数据采集 算法
支持向量机SVM:从数学原理到实际应用
支持向量机SVM:从数学原理到实际应用
661 0
|
机器学习/深度学习 算法 Python
2022-11-10-支持向量机SVM
2022-11-10-支持向量机SVM
125 0
|
机器学习/深度学习 运维 算法
SVM(五):SVM小结
SVM(五):SVM小结
SVM(五):SVM小结
|
机器学习/深度学习
SVM(三):非线性支持向量机
SVM(三):非线性支持向量机
SVM(三):非线性支持向量机