支持向量机(SVM)之线性分类

本文深入探讨了支持向量机(SVM)的基本原理及其数学推导过程,包括最大间隔分类和对偶问题的求解方法。

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

  支持向量机(Support Vector Machine, SVM)是曾经打败神经网络的分类方法,从90年代后期开始在很多领域均有举足轻重的应用,近年来,由于深度学习的兴起,SVM的风光开始衰退,但是其仍然不失为一种经典的分类方法。SVM最初由 Vladimir N. Vapnik 和 Alexey Ya. Chervonenkis于1963年提出,之后经过一系列改进,现今普遍使用的版本由Corinna Cortes 和 Vapnik于1993年提出,并在1995年发表[1]。深度学习兴起之前,SVM被认为是机器学习近几十年来最成功、表现最好的方法。

1. 间隔最大化

  本文讨论线性可分的支持向量机,详细推导其最大间隔和对偶问题的原理。简单起见,以二分类为例,如下图,设训练集为D={(x1,y1),...,(xn,yn)}D=\{(\boldsymbol{x}_1,y_1),...,(\boldsymbol{x}_n,y_n)\}D={(x1,y1),...,(xn,yn)},蓝色圆点为一类,红色方块为另一类,分类的目标是寻找一个超平面,将两类数据分开。在二维平面中,分类超平面就是一条直线,从图中可以看出,能将训练样本分开的超平面有很多可能(图中绿色虚线),超平面除了要将训练集中的数据分开,还要有较好的泛化性能,需要把测试集中的数据也划分开。从直观上看,绿色实线是比较好的一个划分,因为该直线距离两类数据点均较远,对于数据局部扰动的容忍性较好,能够以较大的置信度将数据进行分类。
fig1
  所以,距离两类数据点间隔最大的超平面为最好的分类面,两类数据点距离超平面的间隔(margin)如下图,假设图中两条虚线的表达式为wTx+b=−1\boldsymbol{w}^T\boldsymbol{x}+b=-1wTx+b=1wTx+b=1\boldsymbol{w}^T\boldsymbol{x}+b=1wTx+b=1 (为什么等号右边为1?因为若wTx+b=c\boldsymbol{w}^T\boldsymbol{x}+b=cwTx+b=c,令w=w/c\boldsymbol{w}=\boldsymbol{w}/cw=w/cb=b/cb=b/cb=b/c即可,w\boldsymbol{w}wbbb是要学习的参数,其大小是随等式右边的常数变化的),那么,中间分类面的表达式为wTx+b=0\boldsymbol{w}^T\boldsymbol{x}+b=0wTx+b=0。为方便计算,将两类数据的标签设为±1\pm1±1,蓝色圆点为y=−1y=-1y=1,红色方块为y=1y=1y=1,如果分类超平面能将两类数据正确分类,那么就有
  {wTxi+b≥1yi=1wTxi+b≤−1yi=−1\begin{cases}\boldsymbol{w}^T \boldsymbol{x}_i + b \geq 1 & y_i = 1 \\ \boldsymbol{w}^T \boldsymbol{x}_i + b \leq -1 & y_i = -1 \end{cases}{wTxi+b1wTxi+b1yi=1yi=1

并且两类数据到超平面的距离之和,也就是间隔为:
  2∣∣w∣∣\dfrac{2}{||\boldsymbol{w}||}w2
fig2
  要找到间隔最大的超平面,就是使2∣∣w∣∣\dfrac{2}{||\boldsymbol{w}||}w2最大,也即12∣∣w∣∣2\dfrac{1}{2}{||\boldsymbol{w}||}^221w2最小,同时满足
  {wTxi+b≥1yi=1wTxi+b≤−1yi=−1\begin{cases}\boldsymbol{w}^T \boldsymbol{x}_i + b \geq 1 & y_i = 1 \\ \boldsymbol{w}^T \boldsymbol{x}_i + b \leq -1 & y_i = -1 \end{cases}{wTxi+b1wTxi+b1yi=1yi=1

这个需要满足的条件可简化为yi(wTxi+b)≥1y_i (\boldsymbol{w}^T\boldsymbol{x}_i+b) \geq 1yi(wTxi+b)1,最终,寻找具有最大间隔的划分超平面转化为一个有约束的最优化问题
  min12∣∣w∣∣2min \dfrac{1}{2} ||\boldsymbol{w}||^2min21w2
  s.t.yi(wTxi+b)≥1,i=1,⋯ ,ns.t. \quad y_i (\boldsymbol{w}^T \boldsymbol{x}_i + b) \geq 1 , \quad i = 1, \cdots, ns.t.yi(wTxi+b)1,i=1,,n
其中,约束里的等号在上图中绿色虚线穿过的点处成立,这些点距离超平面最近,被称为“支持向量”(Support Vector),后面我们会看到,分类超平面仅由支持向量决定,这就是线性可分支持向量机的基本模型。

2. 对偶问题

  为了求解上述有约束的最优化问题,应用拉格朗日对偶性,通过求解对偶问题(dual problem)得到原始问题(primal problem)的最优解,这样求解的优点是:1. 对偶问题通常更容易求解,2. 自然引入核函数,进而推广到非线性分类的情况[2]。

2.1 拉格朗日对偶性

  首先给出原始问题,设f(x)f(x)f(x)ci(x)c_i(x)ci(x)hj(x)h_j(x)hj(x)是定义在Rn\boldsymbol{R}^nRn上的连续可微函数,给定如下原始问题
   min⁡xf(x)\min \limits_{x}f(x)xminf(x)
   s.t. ci(x)≤0,i=1,2,...,k\text{s.t. } c_i(x) \leq 0, \quad i = 1,2,...,ks.t. ci(x)0,i=1,2,...,k
    hj(x)=0,j=1,2,...,l\text{ } \quad h_j(x) = 0, \quad j = 1,2,...,l hj(x)=0,j=1,2,...,l
其拉格朗日函数(Lagrange function)为
   L(x,α,β)=f(x)+∑i=1kαici(x)+∑j=1lβjhj(x)L(x,\alpha, \beta ) = f(x) + \sum\limits_{i=1}^k \alpha_i c_i(x) + \sum\limits_{j=1}^l \beta_j h_j(x)L(x,α,β)=f(x)+i=1kαici(x)+j=1lβjhj(x)
其中,αi\alpha_iαiβj\beta_jβj为拉格朗日乘子,并且αi≥0\alpha_i \geq 0αi0,考虑xxx的函数
  θP(x)=max⁡α,β;αi≥0L(x,α,β)\theta_P(x) = \max \limits_{\alpha,\beta; \alpha_i \geq 0}L(x,\alpha, \beta)θP(x)=α,β;αi0maxL(x,α,β)
如果xxx违反原问题的约束条件,即存在i∈{1,...,k}i \in \{1,...,k\}i{1,...,k}使得ci(x)>0c_i(x)>0ci(x)>0或者存在j∈{1,...,l}j \in \{1,...,l\}j{1,...,l}使得hj(x)≠0h_j(x) \neq 0hj(x)̸=0,那么就可以令αi→+∞\alpha_i \rightarrow +\inftyαi+,或者令βjhj(x)→+∞\beta_j h_j(x) \rightarrow + \inftyβjhj(x)+,从而
  θP(x)=max⁡α,β;αi≥0[f(x)+∑i=1kαici(x)+∑j=1lβjhj(x)]=+∞\theta_P(x) = \max \limits_{\alpha,\beta; \alpha_i \geq 0}{[f(x) + \sum\limits_{i=1}^k \alpha_i c_i(x) + \sum\limits_{j=1}^l \beta_j h_j(x)]} = +\inftyθP(x)=α,β;αi0max[f(x)+i=1kαici(x)+j=1lβjhj(x)]=+
相反,如果xxx满足原问题的约束条件,则可令αi=0\alpha_i = 0αi=0βj=0\beta_j = 0βj=0,使得θP(x)=f(x)\theta_P(x) = f(x)θP(x)=f(x)
因此有
   θP(x)={f(x)x满足原始问题约束+∞x违反原问题约束\theta_P(x) = \begin{cases} f(x) & x\text{满足原始问题约束} \\ +\infty & x\text{违反原问题约束} \end{cases}θP(x)={f(x)+x满足原始问题约束x违反原问题约束
所以,原问题就可以转化为最小化θP(x)\theta_P(x)θP(x),即
  min⁡xθP(x)=min⁡xmax⁡α,β;αi≥0L(x,α,β)\min\limits_{x} \theta_P(x) = \min\limits_{x}\max\limits_{\alpha,\beta;\alpha_i \geq 0} L(x,\alpha,\beta)xminθP(x)=xminα,β;αi0maxL(x,α,β)
该问题取最小值时,xxx是满足原始问题的约束的。接下来构造其对偶问题,首先定义α\alphaαβ\betaβ的函数
  θD(α,β)=min⁡xL(x,α,β)\theta_D(\alpha, \beta) = \min\limits_{x} {L(x,\alpha,\beta)}θD(α,β)=xminL(x,α,β)
再对上式最大化
  max⁡α,β;αi≥0θD(α,β)=max⁡α,β;αi≥0min⁡xL(x,α,β)\max\limits_{\alpha,\beta;\alpha_i \geq 0} \theta_D(\alpha, \beta) = \max\limits_{\alpha,\beta;\alpha_i \geq 0} \min\limits_{x} {L(x,\alpha,\beta)}α,β;αi0maxθD(α,β)=α,β;αi0maxxminL(x,α,β)
将该式表示有约束的最优化问题就得到了原始问题的对偶问题:
  max⁡α,βθD(α,β)=max⁡α,βmin⁡xL(x,α,β)\max\limits_{\alpha,\beta}{\theta_D(\alpha,\beta)} = \max\limits_{\alpha,\beta}{\min\limits_{x}{L(x,\alpha,\beta)}}α,βmaxθD(α,β)=α,βmaxxminL(x,α,β)
  s.t. αi≥0,i=1,...,k\text{s.t. } \alpha_i \geq 0, i = 1,...,ks.t. αi0,i=1,...,k
  那么原始问题和对偶问题的解存在什么关系呢?记原始问题的最优值为p∗=min⁡xθP(x)p^* = \min\limits_{x}{\theta_P(x)}p=xminθP(x),对偶问题的最优值为d∗=max⁡α,β;αi≥0θD(α,β)d^* = \max\limits_{\alpha,\beta; \alpha_i \geq 0}{\theta_D(\alpha,\beta)}d=α,β;αi0maxθD(α,β),那么有d∗≤p∗d^* \leq p^*dp,此处不再证明,可简单理解为(最大值中的最小值)大于等于(最小值中的最大值)。在什么条件下等号成立呢?这个条件就是强对偶(strong duality),并且在强对偶前提下,如果x∗x^\astxα∗\alpha^\astα, β∗\beta^\astβ分别是原始问题和对偶问题的可行解,则x∗x^\astxα∗\alpha^\astα, β∗\beta^\astβ 分别是原始问题和对偶问题的最优解,此时可以用解对偶问题替代解原始问题。但是强对偶条件是一个比较严格的约束,一般情况下无法满足,如果原问题满足一定的条件,就比较容易达到强对偶,这些条件就叫做约束规范 (constraint qualifications)。适用于SVM的约束规范是Slater条件,即原问题是一个凸优化问题(f(x)f(x)f(x)ci(x)c_i(x)ci(x)均是凸函数),并且存在xxx,使所有的等式约束成立,不等式约束严格成立(ci(x)&lt;0c_i(x)&lt;0ci(x)<0)。在满足这些条件的前提下,有学者提出了x∗x^\astxα∗\alpha^\astα, β∗\beta^\astβ分别是原始问题和对偶问题的最优解的充分必要条件:KKT条件(Karush–Kuhn–Tucker conditions)
  1. ci(x∗)≤0,hj(x∗)=0,i=1,...,k,j=1,...,lc_i(x^\ast) \leq 0, h_j(x^\ast) = 0, i=1,...,k, j = 1,...,lci(x)0,hj(x)=0,i=1,...,k,j=1,...,l
  2. ∇f(x∗)+∑i=1kαi∇ci(x∗)+∑j=1lβj∇hj(x∗)=0\nabla f(x^\ast)+\sum\limits_{i=1}^k \alpha_i \nabla c_i(x^\ast) + \sum\limits_{j=1}^l \beta_j \nabla h_j(x^\ast) = 0f(x)+i=1kαici(x)+j=1lβjhj(x)=0
  3. αi≥0,αici(x∗)=0,βj≠0\alpha_i \geq 0, \alpha_i c_i(x^\ast) = 0, \beta_j \ne 0αi0,αici(x)=0,βj̸=0
其中,αici(x∗)=0\alpha_i c_i(x^\ast)=0αici(x)=0称为KKT的互补松弛条件(Complementary slackness),由此可知,若αi&gt;0\alpha_i &gt; 0αi>0,则必有ci(x∗)=0c_i(x^\ast) = 0ci(x)=0

2.2 SVM的对偶问题

  回顾一下SVM的原问题,
  min12∣∣w∣∣2min \dfrac{1}{2} ||\boldsymbol{w}||^2min21w2
  s.t.yi(wTxi+b)≥1,i=1,⋯&ThinSpace;,ns.t. \quad y_i (\boldsymbol{w}^T \boldsymbol{x}_i + b) \geq 1 , \quad i = 1, \cdots, ns.t.yi(wTxi+b)1,i=1,,n
构造拉格朗日函数:
  L(w,b,λ)=12wTw+∑i=1nλi(1−yi(wTxi+b)),λi≥0L(\boldsymbol{w}, b, \boldsymbol{\lambda}) = \dfrac{1}{2} \boldsymbol{w}^T \boldsymbol{w} + \sum\limits_{i = 1}^n {\lambda_i (1- y_i(\boldsymbol{w}^T \boldsymbol{x}_i + b))}, \quad \lambda_i \geq 0L(w,b,λ)=21wTw+i=1nλi(1yi(wTxi+b)),λi0
可以将原问题等价为:
  min⁡w,bθP(w,b)=min⁡w,bmax⁡λ;λi≥0L(w,b,λ)\min\limits_{\boldsymbol{w},b} \theta_P(\boldsymbol{w},b) = \min\limits_{\boldsymbol{w},b}\max\limits_{\boldsymbol{\lambda};\lambda_i \geq 0} L(\boldsymbol{w}, b, \boldsymbol{\lambda})w,bminθP(w,b)=w,bminλ;λi0maxL(w,b,λ)
易知,原问题满足Slater条件,所以也满足KKT条件,可以将原问题转化为对偶问题进行求解,即求
  max⁡λθD(λ)=max⁡λmin⁡w,bL(w,b,λ)\max\limits_{\boldsymbol{\lambda}} \theta_D(\boldsymbol{\lambda}) = \max\limits_{\boldsymbol{\lambda}} \min\limits_{\boldsymbol{w}, b} L(\boldsymbol{w}, b, \boldsymbol{\lambda})λmaxθD(λ)=λmaxw,bminL(w,b,λ)
  s.t. λi≥0,i=1,...,n\text{s.t. } \lambda_i \geq 0, i = 1,...,ns.t. λi0,i=1,...,n
首先求内部的项min⁡w,bL(w,b,λ)\min\limits_{\boldsymbol{w}, b} L(\boldsymbol{w}, b, \boldsymbol{\lambda})w,bminL(w,b,λ),令L(w,b,λ)L(\boldsymbol{w}, b, \boldsymbol{\lambda})L(w,b,λ)w\boldsymbol{w}wbbb的导数为0

∂L∂w=w−∑i=1nλiyixi=0\dfrac{\partial{L}}{\partial{\boldsymbol{w}}} = \boldsymbol{w} - \sum\limits_{i = 1}^n {\lambda_i y_i \boldsymbol{x}_i = 0}wL=wi=1nλiyixi=0

∂L∂b=−∑i=1nλiyi=0\dfrac{\partial{L}}{\partial{b}} = - \sum\limits_{i = 1}^n {\lambda_i y_i} = 0bL=i=1nλiyi=0

因此有w=∑i=1nλiyixi\boldsymbol{w} = \sum\limits_{i = 1}^n {\lambda_i y_i \boldsymbol{x}_i}w=i=1nλiyixi,并且∑i=1nλiyi=0\sum\limits_{i = 1}^n {\lambda_i y_i} = 0i=1nλiyi=0。把w\boldsymbol{w}w代入L(w,b,λ)L(\boldsymbol{w}, b, \boldsymbol{\lambda})L(w,b,λ)

L(λ)=12∑i=1nλiyixiT∑j=1nλjyjxj+∑i=1nλi(1−yi(∑j=1nλjyjxjTxi+b))=12∑i=1n∑j=1nλiλjyiyjxiTxj+∑i=1nλi−∑i=1n∑j=1nλiλjyiyjxiTxj−∑i=1nλiyib=−12∑i=1n∑j=1nλiλjyiyjxiTxj+∑i=1nλi\begin{aligned} L(\boldsymbol\lambda) &amp;= \dfrac{1}{2} \sum\limits_{i = 1}^n {\lambda_i y_i \boldsymbol{x}_i^T} \sum\limits_{j = 1}^n {\lambda_j y_j \boldsymbol{x}_j} + \sum\limits_{i = 1}^n {\lambda_i (1 - y_i (\sum\limits_{j = 1}^n \lambda_j y_j \boldsymbol{x_j}^T \boldsymbol{x}_i + b))} \\ &amp;= \dfrac{1}{2}\sum\limits_{i = 1}^n {\sum\limits_{j = 1}^n {\lambda_i \lambda_j y_i y_j \boldsymbol{x}_i^T \boldsymbol{x}_j}} + \sum\limits_{i = 1}^n {\lambda_i} - \sum\limits_{i = 1}^n {\sum\limits_{j = 1}^n {\lambda_i \lambda_j y_i y_j \boldsymbol{x}_i^T \boldsymbol{x}_j}} - \sum\limits_{i = 1}^n {\lambda_i y_i b} \\ &amp;= -\dfrac{1}{2} \sum\limits_{i = 1}^n {\sum\limits_{j = 1}^n {\lambda_i \lambda_j y_i y_j \boldsymbol{x}_i^T \boldsymbol{x}_j}} + \sum\limits_{i = 1}^n {\lambda_i} \end{aligned}L(λ)=21i=1nλiyixiTj=1nλjyjxj+i=1nλi(1yi(j=1nλjyjxjTxi+b))=21i=1nj=1nλiλjyiyjxiTxj+i=1nλii=1nj=1nλiλjyiyjxiTxji=1nλiyib=21i=1nj=1nλiλjyiyjxiTxj+i=1nλi

该问题转化成只包含λ\boldsymbol{\lambda}λ的最优化问题,求出λ\boldsymbol{\lambda}λ就可以求出w\boldsymbol{w}wbbb。将L(λ)L(\boldsymbol{\lambda})L(λ)取负数,把最大化转化为最小化
  min⁡λL(λ)=12∑i=1n∑j=1nλiλjyiyjxiTxjT−∑i=1nλi\min\limits_{\boldsymbol\lambda} \quad L(\boldsymbol{\lambda}) = \dfrac{1}{2} \sum\limits_{i = 1}^n {\sum\limits_{j = 1}^n {\lambda_i \lambda_j y_i y_j \boldsymbol{x}_i^T \boldsymbol{x}_j^T}} - \sum\limits_{i = 1}^n {\lambda_i}λminL(λ)=21i=1nj=1nλiλjyiyjxiTxjTi=1nλi
  s.t.λi≥0,∑i=1nλiyi=0,i=1,...,ns.t. \quad \lambda_i \geq 0, \quad \sum\limits_{i = 1}^n {\lambda_i y_i} = 0, \quad i = 1,...,ns.t.λi0,i=1nλiyi=0,i=1,...,n
该问题为二次规划问题,存在全局最优解,设最优解为λ=(λ1∗,...,λn∗)\boldsymbol\lambda = (\lambda_1^*,...,\lambda_n^*)λ=(λ1,...,λn),那么就可以计算原始问题的最优解w∗=∑i=1nλi∗yixi\boldsymbol{w}^* = \sum\limits_{i=1}^n {\lambda_i^* y_i \boldsymbol{x}_i}w=i=1nλiyixi
由KKT的对偶松弛条件可知,如果λi∗≠0\lambda_i^* \ne 0λi̸=0,则有1−yi(w∗Txi+b)=01-y_i({\boldsymbol{w}^*}^T \boldsymbol{x}_i+b) = 01yi(wTxi+b)=0,由于y∈{+1,−1}y \in \{+1, -1\}y{+1,1},因此
  b∗=yi−w∗Txi=yi−∑j=1nλj∗yjxjTxib^* = y_i - {\boldsymbol{w}^*}^T \boldsymbol{x}_i = y_i - \sum\limits_{j=1}^n {\lambda_j^* y_j \boldsymbol{x}_j^T \boldsymbol{x_i}}b=yiwTxi=yij=1nλjyjxjTxi
  在预测阶段,对于新数据点z\boldsymbol{z}z,计算
  y^=w∗Tz+b∗=∑i=1nλi∗yixiTz+b∗\hat{y} = {\boldsymbol{w}^*}^T \boldsymbol{z} + b^* = \sum\limits_{i=1}^n {\lambda_i^* y_i \boldsymbol{x}_i^T \boldsymbol{z}} + b^*y^=wTz+b=i=1nλiyixiTz+b
如果y^&gt;0\hat{y} &gt; 0y^>0,则将z\boldsymbol{z}z分为正类,否则分为负类。

3. SVM进一步分析

  等式1−yi(w∗Txi+b)=01-y_i({\boldsymbol{w}^*}^T \boldsymbol{x}_i +b) = 01yi(wTxi+b)=0对应的是下图中分类超平面两侧的虚线,再向两侧延伸,就会有1−yi(w∗Txi+b)≤01-y_i({\boldsymbol{w}^*}^T \boldsymbol{x}_i +b) \leq 01yi(wTxi+b)0,由于λi∗(1−yi(w∗Txi+b))=0\lambda_i^*(1-y_i({\boldsymbol{w}^*}^T \boldsymbol{x}_i +b)) = 0λi(1yi(wTxi+b))=0,所以,对于两条虚线外侧的点,其对应的λi=0\lambda_i = 0λi=0。事实上,只有少数的点会落在分类超平面两侧的虚线上,这些点是距离分类超平面最近的点,被称为支持向量。由w∗=∑i=1nλi∗yixi\boldsymbol{w}^* = \sum\limits_{i=1}^n {\lambda_i^* y_i \boldsymbol{x}_i}w=i=1nλiyixib∗=yi−∑j=1nλj∗yjxjTxib^* =y_i - \sum\limits_{j=1}^n {\lambda_j^* y_j \boldsymbol{x}_j^T \boldsymbol{x_i}}b=yij=1nλjyjxjTxi可知,分类超平面仅由支持向量来决定,所以支持向量机具有较高的稀疏性。
fig3
  支持向量机建立问题的思路是找到距离分类超平面最近的点,通过最大化这些点之间的间隔来求解,间隔最大化的平面具有较高的鲁棒性。

[1] Cortes C, Vapnik V. Support-vector networks. Machine learning. 1995 Sep 1;20(3):273-97.
[2] 李航. 统计学习方法,清华大学出版社,2012.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值