SVM学习笔记

本文深入探讨了支持向量机(SVM)的工作原理,从线性可分的二分类问题开始,解释了支持向量、最大边距和拉格朗日乘数法的概念。接着介绍了如何处理线性不可分问题,通过核函数和软间隔来实现。同时,文章还提到了SMO算法在求解对偶问题中的应用,以及如何通过调整正则化参数C来控制模型复杂度。
摘要由CSDN通过智能技术生成
注:本文通过问题与回答(Q&A)为线索来梳理SVM相关内容

看到SVM(Support Vector Machines)这个单词,就会产生几个问题:

Q1:什么是支持向量(support vector)?

A1:

如图所示:支持向量就是两个虚线上的点。(点就是向量)
在这里插入图片描述

从图中还可以看出,SVM是用来解决线性可分的二分类问题。其中,虚线上的点距离直线(n维中的超平面)的距离叫margin。

Q1.1:什么是线性可分?
A1.1:线性可分:

  直观上看,二维空间中两类点被一条直线分开。
  N维中,就是一个超平面。
数学定义:
D 0 \it{D}_0 D0 D 1 \it{D}_1 D1 是 n 维欧氏空间中的两个点集。如果存在 n 维向量 w 和实数 b,使得所有属于 D 0 \it{D}_0 D0 的点 x i x_i xi 都有 w T x + b > 0 w^Tx+b>0 wTx+b>0 ,而对于所有属于 D 1 \it{D}_1 D1 的点 x i x_i xi 则有 w T x + b < 0 w^Tx+b<0 wTx+b<0 ,则我们称 D 0 \it{D}_0 D0 D 1 \it{D}_1 D1 线性可分。

Q2:支持向量有什么用?

A2:还得从感知机(perceptron)说起

感知机也是一种二分类线性分类器。

假设输入空间为 χ ⊆ R n \chi \subseteq R^n χRn ,输出空间为 y = { + 1 , − 1 } y=\{+1, -1\} y={+1,1},m个样本点 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } , x ⊆ χ \it{D}=\{(x_1, y_1),(x_2,y_2),...,(x_m, y_m)\}, x\subseteq\chi D={(x1,y1),(x2,y2),...,(xm,ym)},xχ , 即 x i = ( x i 1 , x i 2 , . . . x i n ) x_i=(x_i^1,x_i^2,...x_i^n) xi=(xi1,xi2,...xin)

  一个二维空间的例子:
在这里插入图片描述

我们的目标就是找到一个直线(超平面)分开这两类点。
   二维中,直线方程为 A x + B y + C = 0 Ax+By+C=0 Ax+By+C=0
   三维中,平面方程为 A x + B y + C z + D = 0 Ax+By+Cz+D=0 Ax+By+Cz+D=0
   N维中,超平面方程为 w 1 x 1 + w 2 x 2 + . . . + w n x n + b = 0 w_1x_1+w_2x_2 +...+w_nx_n+b=0 w1x1+w2x2+...+wnxn+b=0 ,把 w i w_i wi x i x_i xi写成向量的形式后为 w T x + b = 0 w^Tx+b=0 wTx+b=0(默认向量为列向量,行向量为 列 向 量 T 列向量^T T)
  因此我们的优化参数就是 w w w b b b。我们的约束条件为:对 ∀ ( x i , y i ) ∈ D {\forall (x_i, y_i)\in D} (xi,yi)D, { w T x i + b > 0 , y=+1 w T x i + b < 0 , y= –1 \begin{cases} w^Tx_i+b>0,& \text{y=+1}\\w^Tx_i+b<0,& \text{y= --1} \end{cases} {wTxi+b>0,wTxi+b<0,y=+1y= –1将两种情况合并后得 y i ( w T x i + b ) > 0 y_i(w^Tx_i+b)\gt 0 yi(wTxi+b)>0我们的损失函数就是让误分类点个数最少,但是因为误分类点个数函数不可导,所以采用所有误分类点的距离和最小,即当 − y i ( w T x i + b ) > 0 -y_i(w^Tx_i+b)>0 yi(wTxi+b)>0 时的所有点 ( x i , y i ) (x_i, y_i) (xi,yi),计算 x i x_i xi到超平面 w T x i + b = 0 w^Tx_i+b=0 wTxi+b=0的距离和。
x i x_i xi w T x i + b = 0 w^Tx_i+b=0 wTxi+b=0的距离为 r = ∣ w T x i + b ∣ ∣ ∣ w ∣ ∣ r=\frac {\vert w^Tx_i+b \vert} {\vert\vert w \vert\vert} r=wwTxi+b我们把绝对值去掉后可得误分类点与超平面的距离: r = − y i ( w T x i + b ) ∣ ∣ w ∣ ∣ r=\frac {-y_i (w^Tx_i+b )} {\vert\vert w \vert\vert} r=wyi(wTxi+b)对所有误分类点求和后,可得出目标优化函数 arg ⁡ min ⁡ w , b 1 ∣ ∣ w ∣ ∣ ∑ x i ∈ M − y i ( w T x i + b ) \mathop{\arg\min}\limits_{w,b}\frac 1{\vert\vert w||} \sum_{x_i\in M} -y_i(w^Tx_i+b) w,bargminw1xiMyi(wTxi+b)其中, M M M为误分类点集合。
这样,我们再利用随机梯度下降就可以求得 w , b w,b w,b了,我们设定一组初值 w 0 , b 0 w_0,b_0 w0,b0,就可以得到一组解 w , b w,b w,b。但是,如果我们指定的初值不同,那么可能解也不同,甚至相同的初值,每次运行得出的解也是不同的!
那么我们如何在这些解中选择呢?

Q3:如何选择解 w , b w,b w,b使泛化误差最小?

A3:

泛化能力就是学得的模型对未知数据的预测能力,泛化能力却强,泛化误差越小。

	注:对线性可分二分类问题来说,学得的模型就是一个超平面(w和b参数已知),我们用这个超平面对未知数据分类。

在这里插入图片描述

   直观上,可以看到中间加粗的线距离两个点集的距离都比较大,所以认为这样的超平面的泛化误差最小,鲁棒性最强。所以,我们任务变成了找具有最大margin的参数 w , b w,b w,b
   margin如下图所示:
在这里插入图片描述

Q4:margin如何量化?

A4:

由以上的分析知,如果线性可分,则 ∀ ( x i , y i ) ∈ D \forall(x_i,y_i)\in D (xi,yi)D , 满足 { w T x i + b > 0 , y=+1 w T x i + b < 0 , y= –1 \begin{cases} w^Tx_i+b>0,& \text{y=+1}\\w^Tx_i+b<0,& \text{y= --1} \end{cases} {wTxi+b>0,wTxi+b<0,y=+1y= –1则在正类中,设 a = m i n ( w T x i + b ) a=min(w^Tx_i+b) a=min(wTxi+b) ,有 w T a x i + b a = 1 \frac {w^T}ax_i+\frac ba=1 awTxi+ab=1 ,重新设 w , b w,b w,b 使 w T x i + b = 1 w^Tx_i+b=1 wTxi+b=1 (这里相当于我们对w和b进行缩放)。同理,负类一样处理后可得 { w T x i + b ≥ 1 , y=+1 w T x i + b ≤ 1 , y= –1 \begin{cases} w^Tx_i+b\geq1,& \text{y=+1}\\w^Tx_i+b\leq1,& \text{y= --1} \end{cases} {wTxi+b1,wTxi+b1,y=+1y= –1由此,我们可以得出 r = 2 ∣ ∣ w ∣ ∣ r=\frac{2}{\vert\vert w \vert\vert} r=w2如果所示:在这里插入图片描述

Q5:如何计算最大margin下的 w , b w,b w,b?

A5:

我们现在的情况是,先要保证所有数据点分类正确,然后再在所有解 w , b w,b w,b中求得使margin最大的解。(在约束下的最优解问题)
当前情况的目标优化函数 { arg ⁡ max ⁡ w , b 2 ∣ ∣ w ∣ ∣ s . t . y i ( w T x i + b ) ≥ 1 i = 1 , 2 , . . . , m \begin{cases}\mathop{\arg\max}\limits_{w,b}\frac 2{\vert\vert w||}\\s.t.y_i(w^Tx_i+b) \geq 1 & i=1,2,...,m \end{cases} w,bargmaxw2s.t.yi(wTxi+b)1i=1,2,...,m
  这里书上说等价可以写成 { arg ⁡ min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w T x i + b ) ≥ 1 i = 1 , 2 , . . . , m (1) \begin{cases}\mathop{\arg\min}\limits_{w,b}\frac 12{\vert\vert w||}^2 \\s.t.y_i(w^Tx_i+b) \geq 1 & i=1,2,...,m \end{cases}\tag1 w,bargmin21w2s.t.yi(wTxi+b)1i=1,2,...,m(1)  是因为后面用Lagrange multipliers对参数求导时,求导出来的形式不至于那么丑陋。

接下来,就是求解这个凸二次规划(convex quadratic programming)问题了。

Q5.1:什么是拉格朗日乘数法(Lagrange multipliers)?
A5.1:
温馨提示:这个知识出现在高数中多元函数的微分一章。在这一章中,我们学习的主要内容有:方向导数,偏导数,微分,梯度,Jacobina矩阵,hessian矩阵等。

我们先来研究多元函数无条件极值的解法:
  函数 f f f x 0 x_0 x0处取得极值的条件为:1、 x 0 x_0 x0为驻点。2、 f f f具有二阶连续偏导数的前提下, f f f x 0 x_0 x0处的hessian矩阵为半正(负)定矩阵。(利用多元函数的Taylor展开可证)

如果存在等值约束,如下: { m a x f ( x 1 , x 2 , . . . , x n ) s . t . Φ k ( x 1 , x 2 , . . . , x n ) = 0 , k = 1 , 2 , . . . , m \begin{cases}maxf(x_1, x_2, ...,x_n) \\ s.t.\quad \Phi_k(x_1,x_2,...,x_n)=0,k=1,2,...,m\end{cases} {maxf(x1,x2,...,xn)s.t.Φk(x1,x2,...,xn)=0,k=1,2,...,m可以利用拉格朗日乘子法,转换成 L ( x , λ ) = f ( x ) − ∑ k = 1 m λ k Φ k ( x ) L(x,\lambda)=f(x)-\sum_{k=1}^m\lambda_k\Phi_k(x) L(x,λ)=f(x)k=1mλkΦk(x)其中, λ \lambda λ就叫Lagrange multipliers,对 λ \lambda λ没有约束条件。
为什么可以这么转换?看这里
接下来只需要对 x , λ x,\lambda x,λ求偏导就好了 { ∂ L ∂ x = 0 ∂ L ∂ λ = 0 \begin{cases} \frac {\partial L}{\partial x} = 0\\ \frac {\partial L}{\partial \lambda } =0\end{cases} {xL=0λL=0

如果存在不等值约束 Φ ( x ) ≥ 0 \Phi(x)\geq0 Φ(x)0 呢?
可以分为两种情况:

  1. 目标函数的最值点在不等式约束的可行域外,此时极值点在约束曲面的边界上,这种情况归结于 Φ ( x ) = 0 \Phi(x)=0 Φ(x)=0,此时 λ > 0 \lambda\gt0 λ>0 (相切时, ∇ f = − ∑ k = 1 m λ k ∇ Φ k \nabla f=-\sum_{k=1}^m \lambda_k \nabla \Phi_k f=k=1mλkΦk
  2. 目标函数的最值点在不等式的可行域内,此时不等式曲面约束不起作用(inactive),转化为只有 f ( x ) = 0 f(x)=0 f(x)=0 的情况,此时 λ = 0 \lambda=0 λ=0

综上,可以得知
{ ∇ f ( x ) + λ ∇ Φ ( x ) = 0 λ ≥ 0 λ Φ ( x ) = 0 Φ ( x ) ≥ 0 \begin{cases} \nabla f(x)+\lambda\nabla\Phi(x)=0 \\ \lambda \geq 0 \\ \lambda \Phi(x)=0 \\ \Phi(x)\geq 0 \end{cases} f(x)+λΦ(x)=0λ0λΦ(x)=0Φ(x)0这就是KKT条件。直观理解KKT条件可以看这里

Q5.2:我们的问题如何用拉格朗日乘子法求解呢?
A5.2:利用对偶问题(dual problem)

把式(1)引入拉格朗日乘子,且使其满足KKT条件后 { L ( w , b , λ ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 m λ i ( y i ( w T x i + b ) − 1 ) y i ( w T x i + b ) − 1 ≥ 0 λ i ≥ 0 λ i ( y i ( w T x i + b ) − 1 ) = 0 \begin{cases} L( w,b,\mathbf \lambda)=\frac 12\vert\vert w||^2-\sum_{i=1}^{m}\lambda_i(y_i(w^Tx_i+b)-1) \\y_i(w^Tx_i+b)-1\geq0 \\ \lambda_i \geq 0 \\ \lambda_i(y_i(w^Tx_i+b)-1)=0 \end{cases} L(w,b,λ)=21w2i=1mλi(yi(wTxi+b)1)yi(wTxi+b)10λi0λi(yi(wTxi+b)1)=0观察第四行可以发现,当 λ i ≠ 0 \lambda_i\neq0 λi=0时, y i ( w T x i + b ) = 1 y_i(w^Tx_i+b)=1 yi(wTxi+b)=1 ,即 ( x i , y i ) (x_i,y_i) (xi,yi)为支持向量。

正常的解法是:分别对 w , b , λ w,b,\lambda w,b,λ求偏导,并其导函数等于0后,求出极值点,然后求这个点的hessian矩阵,判断是否负定矩阵,就可以判断是否是极小值点。
    但是这里我们通过求其对偶问题,可以得到原始问题的解,然后用SMO高效算法求解。
对于对偶问题: max ⁡ λ inf ⁡ w , b L ( w , b , λ ) \mathop{\max}\limits_\lambda\mathop{\inf}\limits_{w,b}\mathcal{L}(w,b,\lambda) λmaxw,binfL(w,b,λ)
先把 λ \lambda λ 当做常数,求下确界函数的极小值。分别对 L L L w , b w,b w,b的偏导数,并使其等于0后,可得 w = ∑ i = 1 m λ i y i x i 0 = ∑ i = 1 m λ i y i \bm{w}=\sum_{i=1}^{m}\lambda_iy_i\bm{x_i} \\0=\sum_{i=1}^m\lambda_iyi w=i=1mλiyixi0=i=1mλiyi将其带入原始问题(primal problem)中。
然后,求最大的 λ \lambda λ 就得到了对偶问题 max ⁡ λ ∑ i = 1 m λ i − 1 2 ∑ i = 1 m ∑ j = 1 m λ i λ j y i y j x i T x j (5.2.1) \mathop{\max}\limits_{\lambda}\sum_{i=1}^m\lambda_i-\frac12 \sum_{i=1}^m\sum_{j=1}^m\lambda_i\lambda_jy_iy_j\bm{x_i}^T\bm{x_j}\tag{5.2.1} λmaxi=1mλi21i=1mj=1mλiλjyiyjxiTxj(5.2.1) s . t . ∑ i = 1 m λ i y i = 0 λ ≥ 0 s.t.\quad\sum_{i=1}^m\lambda_iy_i=0\\\lambda\geq0 s.t.i=1mλiyi=0λ0解出 λ \lambda λ后,就可以求出 w , b w,b w,b了。因此我们的超平面为 w T x + b = ∑ i = 1 m λ i y i x i T x + b w^Tx+b=\sum_{i=1}^m\lambda_iy_i\bm{x_i}^T\bm{x}+b wTx+b=i=1mλiyixiTx+b

为什么对偶问题的解与原问题的解等价呢?
为什么对偶问题的形式是这样的呢?
  原问题是convex+满足KKT条件,因此是强对偶,所以 d ∗ = p ∗ d^*=p^* d=p。具体关于对偶问题的知识,非常推荐这篇博文,这是我看到的最保姆级的对偶问题的教学。

Q6:如何从式 ( 5.2.1 ) (5.2.1) (5.2.1) 中解出 λ \lambda λ 呢?

A6:使用SMO算法

如果在某个 λ \bm{\lambda} λ 下,所有样本都满足KKT条件,则 λ \bm{\lambda} λ 就是我们的最优解。
SMO的基本思想时,先选取两个变量 λ i \lambda_i λi λ j \lambda_j λj(使其中一个变量不满足KKT条件),固定其他的 λ \lambda λ。这时更新两个变量,使其满足约束条件后,这是一个单变量的二次规划问题,非常容易求解。然后迭代,直到满足停机条件。
具体推导过程

Q7:如果是线性不可分呢?

A7:核函数或者soft margin

Q7.1:核函数?
A7.1:

对于线性不可分的问题,我们可以把特征空间映射到高维空间,使其线性可分。如图所示:在这里插入图片描述

于是,我们需要将 x i x_i xi映射到高维,映射函数为 ψ ( x ) \psi(x) ψ(x),于是我们只需要将目标函数中的 x i x_i xi替换成 ψ ( x ) \psi(x) ψ(x)即可。
在这里插入图片描述

由对偶问题的式(5.2.1)中,可得 max ⁡ λ ∑ i = 1 m λ i − 1 2 ∑ i = 1 m ∑ j = 1 m λ i λ j y i y j ψ ( x i ) T ψ ( x j ) \mathop{\max}\limits_{\lambda}\sum_{i=1}^m\lambda_i-\frac12 \sum_{i=1}^m\sum_{j=1}^m\lambda_i\lambda_jy_iy_j\bm{\psi(x_i)}^T\bm{\psi(x_j)} λmaxi=1mλi21i=1mj=1mλiλjyiyjψ(xi)Tψ(xj)
但是,我们如何确定要增加的维数和具体的值呢?枚举的话,需要非常高的计算量。所以,kernel function: κ ( x i , x j ) \kappa(x_i,x_j) κ(xi,xj) 出现了,就是为了避免直接计算 ψ ( x i ) T ψ ( x j ) \bm{\psi(x_i)}^T\bm{\psi(x_j)} ψ(xi)Tψ(xj)
如何寻找合适的 κ ( ⋅ , ⋅ ) \kappa(·,·) κ(,) 呢?
  几种常用的核函数:线性核、高斯核(RBF)等等。只需要核矩阵半正定即可。

Q7.2:软间隔(soft margin)?
A7.2:

如果我们的数据中有异常点的时候,如果我们仍采用硬间隔+核函数的方法,费劲千辛万苦,终于拿到了超平面,而测试的时候,就会发现非常离谱的。因为必然发生了过拟合。因此,我们要引入罚函数,引入松弛变量(slack variable) ξ i \xi_i ξi
  首先,松弛化约束 y i ( w T x i + b ) ≥ 1 − ξ i ξ i ≥ 0 y_i(w^Tx_i+b)\geq1-\xi_i \\ \xi_i \geq 0 yi(wTxi+b)1ξiξi0主观上如下图所示:在这里插入图片描述

  但是,还要在目标优化函数中加入一个惩罚函数。我们引入一个正则化常数 C ≥ 0 C\geq0 C0 m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m l 0 / 1 ( y i ( w T x i + b ) − 1 ) s . t . y i ( w T x i + b ) ≥ 1 − ξ i ξ i ≥ 0 \mathop{min}\limits_{w,b}\frac12||w||^2+C\sum_{i=1}^ml_{0/1}(y_i(w^Tx_i+b)-1)\\s.t.\quad y_i(w^Tx_i+b)\geq1-\xi_i\\\xi_i\geq0 w,bmin21w2+Ci=1ml0/1(yi(wTxi+b)1)s.t.yi(wTxi+b)1ξiξi0其中, l 0 / 1 ( x ) = { 1 , i f x < 0 0 , e l s e l_{0/1}(x)=\begin{cases}1, &if \quad x <0 \\ 0, & else \end{cases} l0/1(x)={1,0,ifx<0else
当C为无穷大时,最小化函数要求 l 0 / 1 ( x ) = 0 l_{0/1}(x)=0 l0/1(x)=0,转变成硬间隔。当然, l 0 / 1 ( x ) l_{0/1}(x) l0/1(x)不是凸函数也不可导,所以产生了替代函数:

  1. hinge损失函数: l h i n g e ( x ) = m a x ( 0 , 1 − x ) ; l_{hinge}(x)=max(0,1-x); lhinge(x)=max(0,1x);
  2. exponential loss函数: l e x p ( x ) = e x p ( − x ) ; l_{exp}(x)=exp(-x); lexp(x)=exp(x);
  3. logistic loss函数: l l o g ( z ) = l o g ( 1 + e x p ( − x ) ) ; l_{log(z)}=log(1+exp(-x)); llog(z)=log(1+exp(x));
    在这里插入图片描述

当采用hinge损失函数时,引入松弛变量后的模型为: m i n w , b , ξ i 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ξ i s . t . y i ( w T x i + b ) ≥ 1 − ξ i ξ i ≥ 0 \mathop{min}\limits_{w,b,\xi_i}\frac12||w||^2+C\sum_{i=1}^m\xi_i\\s.t.\quad y_i(w^Tx_i+b)\geq1-\xi_i\\\xi_i\geq0 w,b,ξimin21w2+Ci=1mξis.t.yi(wTxi+b)1ξiξi0
与硬间隔相似,我们对这个凸二次规划问题利用拉格朗日乘子法及对偶问题求解: m a x λ ∑ i = 1 m λ i − 1 2 ∑ i = 1 m ∑ j = 1 m λ i λ j y i y j x i T x j s . t . ∑ i = 1 m λ i y i , 0 ≤ λ i ≤ C , i = 1 , 2 , . . . , m . \mathop{max}\limits_{\bm{\lambda}}\sum_{i=1}^m\lambda_i-\frac12\sum_{i=1}^m\sum_{j=1}^m\lambda_i\lambda_jy_iy_j\bm{x_i^Tx_j}\\ s.t. \quad \sum_{i=1}^m\lambda_iy_i,\\0\leq\lambda_i\leq C, \quad i=1,2,...,m. λmaxi=1mλi21i=1mj=1mλiλjyiyjxiTxjs.t.i=1mλiyi,0λiC,i=1,2,...,m.类似的,因为原问题Convex,所以KKT条件为强对偶的充要条件。此时KKT条件为 { λ i ≥ 0 , μ i ≥ 0 ξ i ≥ 0 y i ( w T x i + b ) − 1 + ξ i ≥ 0 λ i ( y i ( w T x i + b ) − 1 + ξ i ) = 0 μ i ξ i = 0 \begin{cases} \lambda_i\geq0,\mu_i\geq0\\ \xi_i\geq0\\ y_i(w^Tx_i+b)-1+\xi_i\geq0\\ \lambda_i(y_i(w^Tx_i+b)-1+\xi_i)=0\\ \mu_i\xi_i=0 \end{cases} λi0,μi0ξi0yi(wTxi+b)1+ξi0λi(yi(wTxi+b)1+ξi)=0μiξi=0由此,可以看出软间隔中,支持向量为所以在margin边界内的向量,即,使 ξ i ≥ 0 \xi_i\geq0 ξi0 的所有向量。其中 ξ i > 1 \xi_i>1 ξi>1为误分类点。
其他向量为当 λ i = 0 \lambda_i=0 λi=0时,样本对模型没有影响。由此可见,这保持了稀疏性(sparse)。

参考:

  1. 《机器学习》 周志华
  2. 【机器学习】支持向量机 SVM(非常详细)
  3. 统计学习方法(第2版) by 李航
  4. Pattern Recognition And Machine Learning
  5. 【数学】拉格朗日对偶,从0到完全理解
  6. 【凸优化笔记6】-拉格朗日对偶(Lagrange duality)、KKT条件
  7. 非线性优化中的 KKT 条件该如何理解?
  8. 拉格朗日乘子法
  9. 优化-拉格朗日乘子法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值