通俗理解支持向量机SVM及推导

本文深入解析支持向量机(SVM)的概念、建模过程及求解参数的方法,涵盖硬间隔、软间隔及核函数应用,揭示SVM在处理线性及非线性分类问题中的强大能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

     本章总结支持向量机。关于SVM的理解,我建议自己手推一遍,多看几遍相关视频,推不出来的地方着重看一下。手推公式不是目的,通过手推公式理解SVM才是真谛。

    

☆☆☆ 算法目录导航页,包含基础算法、高级算法、机器学习算法等☆☆☆

    

一、概念

   在讲SVM之前,先通俗理解下面几个概念:
  ① 凸二次规划:二次规划是指目标函数是二次函数,约束条件是线性函数。如果目标函数是凸函数,那么就是凸二次规划问题。
  ② 拉格朗日乘子法: 我认为简单理解就是去除等式约束的一种方法。
  ③ 对偶问题:举个例子,我一套房屋出租,租金最大化为2000块;你要租我的房子,想让租金最小化。那么你的租金最小化其实是我的租金最大化。不管咱俩怎么谈判,怎么优化,实际成交价格很可能就是2000块(因为我就是要最大化租金,你不租我租给别人啊,但是谈判的时候我可能会说最少就2000不能再低了,其实是套路 ,嘿嘿 ),所以租金最优化之后的本质通常是一致的。
  那么,在这个例子中,原问题是我的租金最大化,它的对偶问题就是你的租金最小化,到头来结果确是一致的。
  所以,对偶问题简单理解就是,对于同一个问题从不同的角度去观察、去优化,最后的结果是一样的。

二、什么是SVM

   支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类(binary classification)的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大间隔超平面(maximum-margin hyperplane) 。
   SVM被提出于1963年,在二十世纪90年代后得到快速发展并衍生出一系列改进和扩展算法,包括多分类SVM 、最小二乘SVM(Least-Square SVM, LS-SVM) 、支持向量回归(Support Vector Regression, SVR) 、支持向量聚类(support vector clustering)、半监督SVM(semi-supervised SVM, S3VM) 等,在人像识别(face recognition)、文本分类(text categorization)等模式识别(pattern recognition)问题中有广泛应用 。
  简单理解,svm就是用来解决分类问题的函数。

三、SVM分类

① Hard-Margin SVM
② Soft-Margin SVM
③ Kernel SVM

四、如何建模(就是分隔超平面 - 直线或平面)

   思考:如果是线性分类问题,考虑一下,哪一条直线最优呢?

在这里插入图片描述

   你可能会告诉我,C直线最优,为什么呢?它的鲁棒性最好。那么我们怎么去定义C?

在这里插入图片描述

  我们发现,好像间隔最大,鲁棒性就越好,OK我们得到了目标函数(不是损失):

max ⁡ margin ⁡ ( w , b , x ) \max \operatorname{margin}(w, b,x) maxmargin(w,b,x)

  那这个margin(w,b)怎么去定义?定睛一看,这不就是点到直线的距离么?为了保证样本能正确分开,求点到直线的最小距离即可,则margin可表示为

min ⁡ distance ⁡ ( w , b , x ) \min\operatorname{distance}(w,b,x) mindistance(w,b,x)

  目标函数变为: max ⁡ min ⁡ distance ⁡ ( w , b ) \max \min \operatorname{distance}(w, b) maxmindistance(w,b)
  二维平面中,点到直线距离公式:

distance ⁡ = ∣ a x + b y + c ∣ a 2 + b 2 \operatorname{distance}=\frac{|a x+by+c |}{\sqrt{a^{2}+b^{2}}} distance=a2+b2 ax+by+c

  映射到高维(w,x都是向量,不单独标记),其中二范数表示欧氏距离:

distance ⁡ = ∣ w x + b ∣ ∥ w ∥ \operatorname{distance}=\frac{\left|wx+b\right|}{\|w\|} distance=wwx+b

  损失函数变为:

max min ⁡ ∣ w x + b ∣ ∥ w ∥ \operatorname{max \ min}\frac{|w x+b|}{\|w\|} max minwwx+b

  继续化简损失函数:我们一开始有个前提条件,决策边界wx + b=0 能将正负样本分开,所以有

{ w x + b > 0 ⇒ y = + 1 w x + b < 0 ⇒ y = − 1 \left\{\begin{array}{l}{w x+b>0 \Rightarrow y=+1} \\ {w x+b<0 \Rightarrow y=-1}\end{array}\right. {wx+b>0y=+1wx+b<0y=1

  去掉损失函数分子的绝对值,得:

max ⁡ min ⁡ y i ( w i x i + b ) ∥ w i ∥ \max \min \frac{y_{i}\left(w_{i} x_{i}+b\right)}{\left\|w_{i}\right\|} maxminwiyi(wixi+b)

  将此式: min ⁡   y i ( w i x i + b ) ∥ w i ∥ \frac{\min\ y_{i}\left(w_{i} x_{i}+b\right)}{\left\|w_{i}\right\|} wimin yi(wixi+b)
  中分子分母等比缩放,分子最小取1,得到: { max ⁡ 1 ∥ w i ∥ s . t       y i ( w i x i + b ) ≥ 1 , i = 1 , … , n \left\{\begin{array}{l}{\max \frac{1}{\|w_{i}\|}} \\ \\ {s . t \ \ \ \ \ y_{i}\left(w_{i} x_{i}+b\right) \geq 1, i=1, \dots, n}\end{array}\right. maxwi1s.t     yi(wixi+b)1,i=1,,n
  继续化简,最终得到了我们的损失函数: { min ⁡ 1 2   ∥ w i ∥ 2 s . t       y i ( w i x i + b ) ≥ 1 , i = 1 , … , n \left\{\begin{array}{l}{\min \frac{1}{2}\ \|w_{i}\|^2} \\ \\ {s . t \ \ \ \ \ y_{i}\left(w_{i} x_{i}+b\right) \geq 1, i=1, \dots, n}\end{array}\right. min21 wi2s.t     yi(wixi+b)1,i=1,,n
  它是一个凸二次规划问题。

以上也可以理解为SVM三宝:间隔、对偶、核技巧中,最大间隔的推导过程。


五、如何求loss的参数

  经过我们对建模过程的分析和推导,最终得到了一个凸二次规划问题,那么我们需要用凸优化的方法求解出w和b,使用拉格朗日乘子法,通俗理解就是去掉线性约束条件,整合到目标函数中,便于继续求解。

L ( w , b , λ ) = 1 2 ∥ w i ∥ 2 + ∑ i = 1 n λ i ( 1 − y i ( w i x i + b ) ) \mathcal{L}(w, b, \lambda)=\frac{1}{2}\|w_{i}\|^{2}+\sum_{i=1}^{n} \lambda_{i}\left(1-y_{i}\left(w_{i} x_{i}+b\right)\right) L(w,b,λ)=21wi2+i=1nλi(1yi(wixi+b))

  原目标函数变为:

{ min ⁡ max ⁡   L ( w i , b , λ i ) s . t       λ i ≥ 0 ,    i = 1 , … , n \left\{\begin{array}{l}{\min \max \ \mathcal{L}(w_{i}, b, \lambda_{i})} \\ \\ {s . t \ \ \ \ \ \lambda_{i} \geq 0, \ \ i=1, \dots, n}\end{array}\right. minmax L(wi,b,λi)s.t     λi0,  i=1,,n

  对偶问题引出 :由于原问题是极小极大问题求解不方便,换成求解它的对偶问题极大极小 ( 宁为鸡头不为凤尾,所以做了 鸡头 --> 即原问题的对偶函数 ): min ⁡ max ⁡   L ( w i , b , λ i ) ≥ max ⁡ min ⁡   L ( w i , b , λ i ) \min \max \ \mathcal{L}(w_{i}, b, \lambda_{i})\geq\max \min \ \mathcal{L}(w_{i}, b, \lambda_{i}) minmax L(wi,b,λi)maxmin L(wi,b,λi)
  当满足KKT条件时,上述等式恒等,所以原目标函数转化为它的强对偶函数来进行优化,目标函数变为: { max ⁡ min ⁡   L ( w i , b , λ i ) s . t       λ i ≥ 0 ,    i = 1 , … , n \left\{\begin{array}{l}{ \max \min \ \mathcal{L}(w_{i}, b, \lambda_{i})} \\ \\ {s . t \ \ \ \ \ \lambda_{i} \geq 0, \ \ i=1, \dots, n}\end{array}\right. maxmin L(wi,b,λi)s.t     λi0,  i=1,,n

KKT条件

  什么是KKT条件?库恩塔克条件(Kuhn-Tucker conditions)是非线性规划领域里最重要的理论成果之一,是确定某点为极值点的必要条件。如果所讨论的规划是凸规划,那么库恩-塔克条件也是充分条件。KKT条件有4个特性:
  ① 原可行性, 1 − y i ( w i x i + b ) ≤ 0 1-y_{i}\left(w_{i} x_{i}+b\right) \leq 0 1yi(wixi+b)0
   ② 对偶可行性, λ i ≥ 0 \lambda_{i} \geq 0 λi0
   ③ 互补松弛条件, λ ∗ [ 1 − y i ( w i x i + b ) ] = 0 \lambda *\left [1-y_{i}\left(w_{i} x_{i}+b\right) \right] = 0 λ[1yi(wixi+b)]=0
   ④ 拉格朗日平稳性,

{ ∇ w L ( w , b , λ ) = 0 ∇ b L ( w , b , λ ) = 0 ∇ λ L ( w , b , λ ) = 0 \left\{\begin{array}{l}{ \nabla_{\mathbf{w}} \mathcal{L}\left(\mathbf{w},b, \lambda\right)=\mathbf{0}} \\ \\ {\nabla_{\mathbf{b}} \mathcal{L}\left(\mathbf{w},b, \lambda\right)=\mathbf{0}} \\ \\ \nabla_{\mathbf{\lambda}} \mathcal{L}(\mathbf{w}, b, \lambda) = \mathbf{0} \end{array}\right. wL(w,b,λ)=0bL(w,b,λ)=0λL(w,b,λ)=0

  简单总结下这4个条件:
  约束条件 + 拉格朗日乘子 + 前两个条件同时满足 + 优化问题的套路参数求导等于0。

KKT参考文章1KKT参考文章2

求参数过程:将拉格朗日函数L(w,b,λ)分别对w和b求偏导并令其为0:

∂ L ∂ w = 0 ⇒ w = ∑ i = 1 n λ i y i x i ∂ L ∂ b = 0 ⇒ 0 = ∑ i = 1 n λ i y i \begin{array}{l}{\frac{\partial L}{\partial w}=0 \Rightarrow w=\sum_{i=1}^{n} \lambda_{i} y_{i} x_{i}} \\ \\ {\frac{\partial L}{\partial b}=0 \Rightarrow 0=\sum_{i=1}^{n} \lambda_{i} y_{i}}\end{array} wL=0w=i=1nλiyixibL=00=i=1nλiyi

   将上述式子代入目标函数,并化简得:

{ max ⁡ ∑ i = 1 n λ i − 1 2 ∑ i = 1 n ∑ j = 1 n λ i λ j y i y j x i x j s.t. ∑ i = 1 n λ i y i = 0 λ i ≥ 0 , i = 1 , 2 , … , n \left\{\begin{array}{l}{\max \sum_{i=1}^{n} \lambda_{i}-\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}x_{i}x_{j}} \\ \\ {\text {s.t.} \sum_{i=1}^{n} \lambda_{i} y_{i}=0} \\ \\ {\quad \lambda_{i} \geq 0, \quad i=1,2, \ldots, n}\end{array}\right. maxi=1nλi21i=1nj=1nλiλjyiyjxixjs.t.i=1nλiyi=0λi0,i=1,2,,n

   添加符号,换成求最小值:

{ min ⁡ 1 2 ∑ i = 1 n ∑ j = 1 n λ i λ j y i y j x i x j − ∑ i = 1 n λ i s.t. ∑ i = 1 n λ i y i = 0 λ i ≥ 0 , i = 1 , 2 , … , n \left\{\begin{array}{l}{\min \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}x_{i}x_{j}- \sum_{i=1}^{n}\lambda_{i}} \\ \\ {\text {s.t.} \sum_{i=1}^{n} \lambda_{i} y_{i}=0} \\ \\ {\quad \lambda_{i} \geq 0, \quad i=1,2, \ldots, n}\end{array}\right. min21i=1nj=1nλiλjyiyjxixji=1nλis.t.i=1nλiyi=0λi0,i=1,2,,n

  根据KKT条件③可求出b也是关于λ的,所以w 和 b都是关于λ的:

w ∗ = ∑ i = 1 n λ i y i x i b ∗ = y i − ∑ i = 1 n λ i y i x i ⋅ x j \begin{array}{l}{w^{*}=\sum_{i=1}^{n} \lambda_{i} y_{i} x_{i}} \\ \\ {b^{*}=y_{i}-\sum_{i=1}^{n} \lambda_{i}y_{i}x_{i} \cdot x_{j}}\end{array} w=i=1nλiyixib=yii=1nλiyixixj

  最后,只要使用SMO算法求出λ。SMO是求解对偶问题的算法,这里就不再叙述。请参考SMO或者小蓝书等资料。

以上就是整个求参过程。


至此,我们完成了Hard-Margin SVM的建模和求参过程!

六、Soft-Margin SVM

  上面我们讲了那么一堆了,好腻害,数据就这么完美,就没有一点噪声么?

在这里插入图片描述

   上图中,正负样本能够正确分开,没问题。但是,正样本中好像有一个点比较特殊,棒打出头鸟,忽略它吧。这个点就是我们所谓的噪声点,一下子把模型的泛化能力给拉低了。那我们能不能允许少量噪声点的存在而拉高模型的泛化能力呢?答案是肯定的,这就是soft-margin svm要干的事:允许一点噪声的存在。

在这里插入图片描述

  因此,引入了松弛变量 ξ ,可以理解为样本越界程度。 ξ i = 1 − y i ( w i x i + b ) , 且 ξ i ≥ 0 ξ_i = 1-y_{i}\left(w_{i} x_{i}+b\right) ,且ξ_i \geq 0 ξi=1yi(wixi+b),ξi0
  则建模后可写成:

{ min ⁡ 1 2   ∥ w i ∥ 2 + C ∑ i = 1 N ξ i s . t       y i ( w i x i + b ) ≥ 1 − ξ i , i = 1 , … , n , 且 ξ i ≥ 0 \left\{\begin{array}{l}{\min \frac{1}{2}\ \|w_{i}\|^2 +C \sum_{i=1}^{N} \xi_{i}} \\ \\ {s . t \ \ \ \ \ y_{i}\left(w_{i} x_{i}+b\right) \geq 1 - \xi_{i}, i=1, \dots, n,且ξ_i \geq 0}\end{array}\right. min21 wi2+Ci=1Nξis.t     yi(wixi+b)1ξi,i=1,,nξi0

ξ 的进一步理解

关于 ξ i ξ_i ξi的理解,想一下,在hard-margin的基础上,怎么去定义loss?可以使用样本点数,不满足那个s.t.条件的点都算loss,但是此时函数曲线是跳跃的,不利于求导。那么就使用距离

{ y i ( w i x i + b ) ≥ 1   ,   l o s s = 0 y i ( w i x i + b ) < 1   ,   l o s s = 1 − y i ( w i x i + b ) \left\{\begin{array}{l}{y_{i}\left(w_{i} x_{i}+b\right) \geq 1\ , \ loss=0} \\ \\ {y_{i}\left(w_{i} x_{i}+b\right) < 1\ ,\ loss = 1-y_{i}\left(w_{i} x_{i}+b\right) }\end{array}\right. yi(wixi+b)1 , loss=0yi(wixi+b)<1 , loss=1yi(wixi+b)

  令 z = 1 − y i ( w i x i + b ) z=1-y_{i}\left(w_{i} x_{i}+b\right) z=1yi(wixi+b),则loss可表示为 l o s s = m a x {   0   , 1 − z   } loss=max\{\ 0\ , 1-z\ \} loss=max{ 0 ,1z }
  推导过程跟硬间隔类似。损失函数 C ∑ i = 1 N ξ i C \sum_{i=1}^{N} \xi_{i} Ci=1Nξi ,而前一项是L2正则。也就是说硬间隔不存在损失函数,软间隔才有。 l o s s = m a x {   0   , 1 − z   } loss=max\{\ 0\ , 1-z\ \} loss=max{ 0 ,1z }Hinge Loss,合页损失函数。大于等于1时,loss是0,小于1时,loss就是1-z。y = 1-z的图像是这样的:

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

七、核函数

   考虑一下这种情况,数据在低维空间线性不可分,高维空间可分。

在这里插入图片描述

  事实上,大部分时候数据并不是线性可分的,这个时候满足这样条件的超平面就根本不存在。在上文中,我们已经了解到了SVM处理线性可分的情况,那对于非线性的数据SVM咋处理呢?对于非线性的情况,SVM 的处理方法是选择一个核函数 κ(⋅,⋅) ,通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题。
  具体来说,在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身不好分的非线性数据分开。(此处解释摘自July博客)
  总结下,核函数就为了解决线性不可分的情况,低维空间计算,计算完成后再映射到高维空间。核函数计算的是两个向量的内积,也就是相似度。
  常用的核函数有:
  ① 线性核,我们上面的目标函数中 x_i * x_ j就是线性核,通用表示 φ(x_i) * φ(x_ j);
  ② 多项式核;
  ③ 高斯核(RBF)。
  关于核函数参考

介绍完毕!

八、推导思路概括

1. 线性可分函数分类正负样本,即决策边界。
2. 点到直线的距离,并映射到高维表示。
3. 根据wx + b = +1 或 -1 去绝对值。
4. 对于一条直线,求距离最小,距离最小才能分开。
5. 线性可分的直线有多条,求最胖的那条,最胖意味着更精确。
6. 假设分子 >= 1,等比缩放去掉分子,多了约束条件。引出了凸二次规划问题。
7. 解决凸二次优化,不等式约束条件整合到原函数中,使用拉格朗日乘子法。
8. 原始问题就成为min max,进而引出弱对偶问题,min max >= max min(宁做鸡头不做凤尾)。
9. KKT条件满足,min max = max min,变为强对偶。
10. 根据KKT简化目标函数,最终得到Hard-Margin SVM。
11.为了增加泛化能力,引入松弛因子ξ。
12.为了处理线性不可分的情况,引入核函数。

九、总结

  我们是围绕着建模、求参的流程去分析的。过程可简单概括为:线性可分分类、最大间隔分类、凸二次规划、拉格朗日函数、对偶问题、SMO算法求λ。另外,SVM的核心有3个:间隔、对偶、核技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值