机器学习 [白板推导](五)[支持向量机]

发布于:2025-06-13 ⋅ 阅读:(18) ⋅ 点赞:(0)

6. 支持向量机(Support Vector Machine,SVM)

6.1. 相关概念

6.1.1. 分类

  • 硬间隔(Hard-margin)SVM,又叫最大间隔分类SVM;
  • 软间隔(Soft-margin)SVM;
  • 核(Kernel)SVM;

6.2. 硬间隔SVM

6.2.1. 问题定义:

  之前的分类算法中,模型致力于寻找一个超平面,可以将训练集中的两类样本分开,但这个超平面理论上存在无数个,它们在训练集上的分类效果可能是相同的,但模型的鲁棒性是不同的,为了寻找最鲁棒的模型,SVM便想要寻找一个所有样本总间隔最大的超平面
  首先定义间隔:假设通过一个超平面 f ( x ⃗ ) = s i g n ( w ⃗ T x ⃗ + b ) f(\vec{x})=sign\left (\vec{w}^T\vec{x}+b \right ) f(x )=sign(w Tx +b),可以完美拟合训练集所有样本,即对任意样本 i i i,都有 y i ( w ⃗ T x ⃗ i + b ) > 0 y_i(\vec{w}^T\vec{x}_i+b)>0 yi(w Tx i+b)>0,则所有样本中最小的间隔为 margin ( w ⃗ ) = min ⁡ w ⃗ , x ⃗ i 1 ∥ w ⃗ ∥ ∣ w ⃗ x ⃗ i + b ∣ \text{margin}(\vec{w})=\underset{\vec{w},\vec{x}_i}{\min}\frac{1}{\left \| \vec{w} \right \|}\left | \vec{w}\vec{x}_i+b \right | margin(w )=w ,x iminw 1w x i+b
因此硬间隔SVM的优化目标即为最大化这个间隔,使得分类边界具有最高的鲁棒性,即
max ⁡ w ⃗  margin ( w ⃗ ) = max ⁡ w ⃗   min ⁡ x ⃗ i 1 ∥ w ⃗ ∥ ∣ w ⃗ T x ⃗ i + b ∣ = max ⁡ w ⃗ , b   1 ∥ w ⃗ ∥ min ⁡ x ⃗ i ∣ w ⃗ T x ⃗ i + b ∣ , (6.1) \begin{aligned} \underset{\vec{w}}{\max} \ \text{margin}(\vec{w})&=\underset{\vec{w}}{\max}\ \underset{\vec{x}_i}{\min}\frac{1}{\left \| \vec{w} \right \|}\left | \vec{w}^T\vec{x}_i+b \right |\\ &=\underset{\vec{w},b}{\max}\ \frac{1}{\left \| \vec{w} \right \|}\underset{\vec{x}_i}{\min}\left | \vec{w}^T\vec{x}_i +b\right | ,\tag{6.1} \end{aligned} w max margin(w )=w max x iminw 1 w Tx i+b =w ,bmax w 1x imin w Tx i+b ,(6.1)

6.2.2. 问题化简:

  因为 y i ∈ { − 1 , 1 } y_i\in \{-1,1\} yi{1,1},所以可以写作 ∣ w ⃗ T x ⃗ i + b ∣ = y i ( w ⃗ T x ⃗ i + b ) \left | \vec{w}^T\vec{x}_i+b \right |=y_i(\vec{w}^T\vec{x}_i+b) w Tx i+b =yi(w Tx i+b),因此优化目标可以写作 max ⁡ w ⃗ , b  margin ( w ⃗ ) = max ⁡ w ⃗ , b   1 ∥ w ⃗ ∥ min ⁡ x ⃗ i y i ( w ⃗ T x ⃗ i + b ) \underset{\vec{w},b}{\max} \ \text{margin}(\vec{w})=\underset{\vec{w},b}{\max}\ \frac{1}{\left \| \vec{w} \right \|}\underset{\vec{x}_i}{\min}y_i(\vec{w}^T\vec{x}_i+b ) w ,bmax margin(w )=w ,bmax w 1x iminyi(w Tx i+b)
  又因为对超平面 w ⃗ \vec{w} w ,我们只关心其方向,对 ∥ w ⃗ ∥ \left \| \vec{w} \right \| w 无要求,因此对 w ⃗ T x ⃗ i + b \vec{w}^T\vec{x}_i+b w Tx i+b 我们只关心正负,无所谓值的大小,因此对 y i ( w ⃗ T x ⃗ i + b ) y_i(\vec{w}^T\vec{x}_i+b) yi(w Tx i+b) 我们只关心是否大于0,无所谓值的大小。因此为了简化优化目标,可以令 min ⁡ w ⃗ , x ⃗ i , b   y i ( w ⃗ T x ⃗ i + b ) = 1 \underset{\vec{w},\vec{x}_i,b}{\min}\ y_i( \vec{w}^T\vec{x}_i+b )=1 w ,x i,bmin yi(w Tx i+b)=1,则优化目标变为
max ⁡ w ⃗  margin ( w ⃗ ) = { max ⁡ w ⃗   1 ∥ w ⃗ ∥ ⋅ 1 = min ⁡ w ⃗ ∥ w ⃗ ∥ = min ⁡ w ⃗   w ⃗ T w ⃗ s.t.    y i ( w ⃗ T x ⃗ i + b ) ⩾ 1 . (6.2) \begin{aligned} \underset{\vec{w}}{\max} \ \text{margin}(\vec{w})=\left\{\begin{matrix} \underset{\vec{w}}{\max}\ \frac{1}{\left \| \vec{w} \right \|}\cdot 1=\underset{\vec{w}}{\min}\left \| \vec{w} \right \|=\underset{\vec{w}}{\min}\ \vec{w}^T\vec{w}\\ \textbf{s.t.}\ \ y_i(\vec{w}^T\vec{x}_i +b)\geqslant 1 \end{matrix}\right..\tag{6.2} \end{aligned} w max margin(w )={w max w 11=w minw =w min w Tw s.t.  yi(w Tx i+b)1.(6.2)
变为一个凸优化问题

6.2.3. 问题求解:

  优化问题首先考虑使用拉格朗日乘数法:

  • L ( w ⃗ , λ ⃗ , b ) = w ⃗ T w ⃗ + ∑ i = 1 N λ i [ 1 − y i ( w ⃗ T x ⃗ i + b ) ] \mathcal{L}(\vec{w},\vec{\lambda},b)=\vec{w}^T\vec{w}+\sum_{i=1}^N\lambda_i\left [ 1-y_i(\vec{w}^T\vec{x}_i+b) \right ] L(w ,λ ,b)=w Tw +i=1Nλi[1yi(w Tx i+b)]
    ,将带约束的原问题变为无约束优化问题: { min ⁡ w ⃗ , b   max ⁡ λ ⃗   L ( w ⃗ , λ ⃗ , b ) s . t . λ i ⩾ 0 \left\{\begin{matrix} \underset{\vec{w},b}{\min} \ \underset{\vec{\lambda}}{\max} \ \mathcal{L} (\vec{w},\vec{\lambda},b)\\ s.t. \lambda_i\geqslant 0 \end{matrix}\right. {w ,bmin λ max L(w ,λ ,b)s.t.λi0.
  • 若原问题的约束 y i ( w ⃗ T x ⃗ i + b ) ⩾ 1 y_i(\vec{w}^T\vec{x}_i+b )\geqslant 1 yi(w Tx i+b)1 不满足,即 1 − y i ( w ⃗ T x ⃗ i + b ) > 0 1-y_i(\vec{w}^T\vec{x}_i+b )> 0 1yi(w Tx i+b)>0,则 max ⁡ λ ⃗   L ( w ⃗ , λ ⃗ , b ) → ∞ \underset{\vec{\lambda}}{\max} \ \mathcal{L}(\vec{w},\vec{\lambda},b)\rightarrow \infty λ max L(w ,λ ,b),反之若都满足,则 max ⁡ λ ⃗   L ( w ⃗ , λ ⃗ , b ) = w ⃗ T w ⃗ \underset{\vec{\lambda}}{\max} \ \mathcal{L}(\vec{w},\vec{\lambda},b)=\vec{w}^T\vec{w} λ max L(w ,λ ,b)=w Tw ,因此优化目标其实是 { min ⁡ w ⃗ ( ∞ , w ⃗ T w ⃗ ) s . t . λ i ⩾ 0 \left\{\begin{matrix} \underset{\vec{w}}{\min} (\infty ,\vec{w}^T\vec{w})\\ s.t. \lambda_i\geqslant 0 \end{matrix}\right. {w min(,w Tw )s.t.λi0,因此这个优化目标函数为了取到 min ⁡ w ⃗ ( ∞ , w ⃗ T w ⃗ ) = w ⃗ T w ⃗ \underset{\vec{w}}{\min} (\infty ,\vec{w}^T\vec{w})=\vec{w}^T\vec{w} w min(,w Tw )=w Tw ,会调整 w ⃗ \vec{w} w 使得 y i ( w ⃗ T x ⃗ i + b ) ⩾ 1 y_i(\vec{w}^T\vec{x}_i+b )\geqslant 1 yi(w Tx i+b)1 对所有 x ⃗ ^ i \hat{\vec{x}}_i x ^i 都满足,由此原问题的约束成立。
  • 而此时 L ( w ⃗ , λ ⃗ , b ) = w ⃗ T w ⃗ + ∑ i = 1 N λ i [ 1 − y i ( w ⃗ T x ⃗ i + b ) ] = w ⃗ T w ⃗ \mathcal{L} (\vec{w},\vec{\lambda},b)=\vec{w}^T\vec{w}+\sum_{i=1}^N\lambda_i\left [ 1-y_i(\vec{w}^T\vec{x}_i+b) \right ]=\vec{w}^T\vec{w} L(w ,λ ,b)=w Tw +i=1Nλi[1yi(w Tx i+b)]=w Tw ,因此对任意 i i i,有 λ i [ 1 − y i ( w ⃗ T x ⃗ i + b ) ] = 0 \lambda_i\left [ 1-y_i(\vec{w}^T\vec{x}_i+b) \right ]=0 λi[1yi(w Tx i+b)]=0,则 λ i = 0 \lambda_i=0 λi=0 1 − y i ( w ⃗ T x ⃗ i + b ) = 0 1-y_i(\vec{w}^T\vec{x}_i+b) =0 1yi(w Tx i+b)=0,由于绝大多数情况,只有两个点离超平面最近(存在更多点距离超平面也是0的理论可能,但实际数据中几乎不存在),即 1 − y i ( w ⃗ T x ⃗ i + b ) = 0 1-y_i(\vec{w}^T\vec{x}_i+b) =0 1yi(w Tx i+b)=0,其他情况都是 λ i = 0 \lambda_i=0 λi=0(但这里不能直接带入 λ i = 0 \lambda_i=0 λi=0,因为这个是目标函数为了达到优化而隐含的约束,如果直接带入则变成了优化之间的已知约束,问题会变得无法求解)。
    在这里插入图片描述
  • 这两个距离最近的样本我们称其为 x ⃗ m \vec{x}_m x m y m = 1 y_m=1 ym=1)和 x ⃗ n \vec{x}_n x n y n = − 1 y_n=-1 yn=1),这两个向量被称为支持向量

  变为对偶问题:

  • 弱对偶关系: min ⁡   max ⁡ F ⩾ max ⁡   min ⁡ F \min \ \max F \geqslant \max \ \min F min maxFmax minF(宁做凤尾,不做鸡头),当中间取等号时变为强对偶关系,而线性约束的二次优化问题天然满足强对偶性(此处不做数学证明) {   max ⁡ λ ⃗   min ⁡ w ⃗ , b   £ ( w ⃗ , λ ⃗ , b ) s . t . λ i ⩾ 0 \left\{\begin{matrix} \ \underset{\vec{\lambda}}{\max} \ \underset{\vec{w},b}{\min} \ \pounds (\vec{w},\vec{\lambda},b)\\ s.t. \lambda_i\geqslant 0 \end{matrix}\right. { λ max w ,bmin £(w ,λ ,b)s.t.λi0.
  • 因此这里可以将优化目标变为 {   max ⁡ λ ⃗   min ⁡ w ⃗ , b   £ ( w ⃗ , λ ⃗ , b ) s.t. λ i ⩾ 0 \left\{\begin{matrix} \ \underset{\vec{\lambda}}{\max} \ \underset{\vec{w},b}{\min} \ \pounds (\vec{w},\vec{\lambda},b)\\ \textbf{s.t.} \lambda_i\geqslant 0 \end{matrix}\right. { λ max w ,bmin £(w ,λ ,b)s.t.λi0

  求偏导得到结果:

  • ∂ L ∂ b = − ∑ i = 1 N λ i y i = 0 \frac{\partial \mathcal{L}}{\partial b}=-\sum_{i=1}^N\lambda_iy_i=0 bL=i=1Nλiyi=0
  • ∂ L ∂ w ⃗ = 2 w ⃗ − ∑ i = 1 N λ i y i x ⃗ i = 0 ⇒ w ⃗ ∗ = 1 2 ∑ i = 1 N λ i y i x ⃗ i \frac{\partial \mathcal{L} }{\partial \vec{w}}=2\vec{w}-\sum_{i=1}^N\lambda_iy_i\vec{x}_i=0\Rightarrow\vec{w}^*= \frac{1}{2}\sum_{i=1}^N\lambda_iy_i\vec{x}_i w L=2w i=1Nλiyix i=0w =21i=1Nλiyix i.
  • L ( w ⃗ , λ ⃗ , b ) = 1 4 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j ( x ⃗ i T x ⃗ i ) − 1 2 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j ( x ⃗ i T x ⃗ i ) + ∑ i = 1 N λ i = − 1 4 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j ( x ⃗ i T x ⃗ i ) + ∑ i = 1 N λ i . (6.3) \begin{aligned} \mathcal{L} (\vec{w},\vec{\lambda},b)&=\frac{1}{4}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_j(\vec{x}_i^T\vec{x}_i )-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_j(\vec{x}_i^T\vec{x}_i )+\sum_{i=1}^N\lambda_i\\ &=-\frac{1}{4}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_j(\vec{x}_i^T\vec{x}_i )+\sum_{i=1}^N\lambda_i . \tag{6.3}\end{aligned} L(w ,λ ,b)=41i=1Nj=1Nλiλjyiyj(x iTx i)21i=1Nj=1Nλiλjyiyj(x iTx i)+i=1Nλi=41i=1Nj=1Nλiλjyiyj(x iTx i)+i=1Nλi.(6.3)

  因为对 {   max ⁡ λ ⃗   min ⁡ w ⃗ , b   L ( w ⃗ , λ ⃗ , b ) s.t. λ i ⩾ 0 \left\{\begin{matrix} \ \underset{\vec{\lambda}}{\max} \ \underset{\vec{w},b}{\min} \ \mathcal{L} (\vec{w},\vec{\lambda},b)\\ \textbf{s.t.} \lambda_i\geqslant 0 \end{matrix}\right. { λ max w ,bmin L(w ,λ ,b)s.t.λi0 的优化必须使 λ ⃗ \vec{\lambda} λ w ⃗ \vec{w} w 满足:只有两个点 x ⃗ m \vec{x}_m x m x ⃗ n \vec{x}_n x n 离超平面最近,即 1 − y i ( w ⃗ T x ⃗ i + b ) = 0 1-y_i(\vec{w}^T\vec{x}_i+b) =0 1yi(w Tx i+b)=0,其他情况都是 λ i = 0 \lambda_i=0 λi=0,将这个条件带入 ∑ i = 1 N λ i y i = 0 \sum_{i=1}^N\lambda_iy_i=0 i=1Nλiyi=0 可得: λ m = λ n ,    λ i ≠ m , n = 0 \lambda_m=\lambda_n,\ \ \lambda_{i\neq m,n}=0 λm=λn,  λi=m,n=0

  带入目标函数得 L ( w ⃗ , λ ⃗ , b ) = − 1 4 ( λ m 2 ( x ⃗ m T x ⃗ m ) + λ n 2 ( x ⃗ n T x ⃗ n ) − 2 λ m λ n ( x ⃗ m T x ⃗ n ) ) + λ m + λ n = − 1 4 λ m 2 ∥ x ⃗ m − x ⃗ n ∥ + 2 λ m \mathcal{L}(\vec{w},\vec{\lambda},b)=-\frac{1}{4}\left ( \lambda_m^2(\vec{x}_m^T\vec{x}_m )+\lambda_n^2(\vec{x}_n^T\vec{x}_n )-2\lambda_m\lambda_n(\vec{x}_m^T\vec{x}_n ) \right )+\lambda_m+\lambda_n=-\frac{1}{4}\lambda_m^2\left \|\vec{x}_m-\vec{x}_n \right \|+2\lambda_m L(w ,λ ,b)=41(λm2(x mTx m)+λn2(x nTx n)2λmλn(x mTx n))+λm+λn=41λm2x mx n+2λm,对其求偏导: ∂ L ∂ λ m = − 1 2 λ m ∥ x ⃗ m − x ⃗ n ∥ + 2 = 0 ⇒ λ m = 4 ∥ x ⃗ m − x ⃗ n ∥ \frac{\partial \mathcal{L} }{\partial \lambda_m}=-\frac{1}{2}\lambda_m\left \| \vec{x}_m-\vec{x}_n \right \|+2=0\Rightarrow \lambda_m=\frac{4}{\left \| \vec{x}_m-\vec{x}_n \right \|} λmL=21λmx mx n+2=0λm=x mx n4,带入原式得 L ( w ⃗ , λ ⃗ , b ) = − 1 4 λ m 2 ∥ x ⃗ m − x ⃗ n ∥ + 2 λ m = 4 ∥ x ⃗ m − x ⃗ n ∥ \begin{aligned} \mathcal{L} (\vec{w},\vec{\lambda},b)=-\frac{1}{4}\lambda_m^2\left \|\vec{x}_m-\vec{x}_n \right \|+2\lambda_m=\frac{4}{\left \| \vec{x}_m-\vec{x}_n \right \|}\end{aligned} L(w ,λ ,b)=41λm2x mx n+2λm=x mx n4,因此 max ⁡ L ( w ⃗ , λ ⃗ , b ) = min ⁡ ∥ x ⃗ m − x ⃗ n ∥ \max \mathcal{L} (\vec{w},\vec{\lambda},b)=\min\left \| \vec{x}_m-\vec{x}_n \right \| maxL(w ,λ ,b)=minx mx n找到两个类中,间距最小的两个样本,计算其欧氏距离可以算得 λ ⃗ \vec{\lambda} λ

  再带入 w ⃗ ∗ = ∑ i = 1 N λ i y i x ⃗ i = λ m ( x ⃗ m − x ⃗ n ) \vec{w}^*= \sum_{i=1}^N\lambda_iy_i\vec{x}_i=\lambda_m(\vec{x}_m-\vec{x}_n) w =i=1Nλiyix i=λm(x mx n) b ∗ = y m − λ m x ⃗ m T ( x ⃗ m − x ⃗ n ) b^*=y_m-\lambda_m\vec{x}_m^T(\vec{x}_m-\vec{x}_n) b=ymλmx mT(x mx n) 即可得到分类边界。

6.3. 软间隔SVM

6.3.1. 引入软间隔的思想

  硬间隔SVM假设所有样本都可以被完美分类,但实际情况很难做到,因此需要允许一些错误,但又要尽可能控制错误,便有了软间隔SVM的思想。

  相比于硬间隔,软间隔SVM取消了约束 s.t.   y i ( w ⃗ T x ⃗ i + b ) ⩾ 1 \textbf{s.t.}\ y_i(\vec{w}^T\vec{x}_i +b)\geqslant 1 s.t. yi(w Tx i+b)1,而是采用一个损失函数来代替,即设定一组参数 ξ ⃗ = { ξ 1 , ξ 2 , ⋯   , ξ N } ,   ξ i ⩾ 0 \vec{\xi}=\{ \xi_1, \xi_2, \cdots, \xi_N\}, \ \xi_i \geqslant 0 ξ ={ξ1,ξ2,,ξN}, ξi0,目标函数变为 { min ⁡ w ⃗ , b , ξ ⃗   w ⃗ T w ⃗ + C ∑ i = 1 N ξ i s.t.   y i ( w ⃗ T x ⃗ i + b ) ⩾ 1 − ξ i ,   ξ i ⩾ 0 \left\{\begin{matrix} \underset{\vec{w}, b, \vec{\xi}}{\min}\ \vec{w}^T\vec{w}+C\sum_{i=1}^N\xi_i\\ \textbf{s.t.} \ y_i(\vec{w}^T\vec{x}_i+b)\geqslant 1-\xi_i, \ \xi_i\geqslant 0 \end{matrix}\right. {w ,b,ξ min w Tw +Ci=1Nξis.t. yi(w Tx i+b)1ξi, ξi0

  通过这个目标函数,原本间隔外的点( y i ( w ⃗ T x ⃗ i + b ) ⩾ 1 y_i(\vec{w}^T\vec{x}_i+b)\geqslant 1 yi(w Tx i+b)1)的参数 ξ i \xi_i ξi 会被优化到0,而间隔内的点无论是否可以被分类正确,都可以尽可能使其向两边分散。

   C C C 是一个乘法因子,可以作为模型超参数,其作用有点像正则化, C C C 的值越大, ξ ⃗ \vec{\xi} ξ 被惩罚得越厉害,间隔小的点越少。

6.3.2. 软间隔SVM的求解

  前面的部分和硬间隔相同,化为无约束目标函数和对偶优化问题,分别对 w ⃗ \vec{w} w b b b 求偏导后,最终目标函数化简如下: {   min ⁡ λ ⃗   1 4 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j ( x ⃗ i T x ⃗ i ) − ∑ i = 1 N λ i s . t .   0 ⩽ λ i ⩽ C ,   ∑ i = 1 N λ i y i = 0 \left\{\begin{matrix} \ \underset{\vec{\lambda}}{\min} \ \frac{1}{4}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_j(\vec{x}_i^T\vec{x}_i )-\sum_{i=1}^N\lambda_i\\ s.t. \ 0\leqslant \lambda_i\leqslant C ,\ \sum_{i=1}^N\lambda_iy_i=0\end{matrix}\right. { λ min 41i=1Nj=1Nλiλjyiyj(x iTx i)i=1Nλis.t. 0λiC, i=1Nλiyi=0 w ⃗ ∗ = 1 2 ∑ i = 1 N λ i y i x ⃗ i \vec{w}^*= \frac{1}{2}\sum_{i=1}^N\lambda_iy_i\vec{x}_i w =21i=1Nλiyix i.

  同样先求得 λ ⃗ \vec{\lambda} λ 后(这里需要用到SMO迭代求解算法,过于复杂,后补),即可得到超平面。