手动推导SVM

SVM支持向量机作为一种常用的分类器可以说是应用非常广泛的,我们直接进入正题,来手动推导SVM,让大家一起加深SVM的算法流程。首先SVM的意义就是在空间中找到一个超平面,把空点中的两个线性可分的点集完全分开,我们把这个超平面定义成 w ⋅ x i + b = 0 w \cdot {x_i} + b = 0 wxi+b=0,其中 w w w是一个n维的向量 x i {x_i} xi表示空间中的点。与此同时,我们不仅需要用超平面将空间中的两个点集分开,同时需要超平面两侧距离超平面最近的样本点到超平面的距离最大化。我们在二维的平面看看这些数据吧:
SVM
从二维平面可以看出,我们最终的目的就是最大化margin,两个类别中存在距离超平面最近的点我们称作支持向量,支持向量所在的与超平面平行的两个平面之间的距离被称为margin。在n维空间中,点 x x x到直线 w T ⋅ x i + b = 0 {w^T} \cdot {x_i} + b = 0 wTxi+b=0的距离为 ∣ w T x + b ∣ ∥ w ∥ \frac{{\left| {{w^T}x + b} \right|}}{{\left\| w \right\|}} wwTx+b,其中 ∥ w ∥ = w 1 2 + w 2 2  +  . . .  +  w d 2 \left\| w \right\| = \sqrt {w_1^2 + w_2^2{\text{ + }}...{\text{ + }}w_d^2} w=w12+w22 + ... + wd2 ,根据定义每个类别到超平面最近的点和超平面的距离为 d d d,那么这个类别其他所有的点到超平面的距离都是大于 d d d的,可以得到如下式子:
{ w T x i + b ∥ w ∥ ⩾ d y i = 1 w T x i + b ∥ w ∥ ⩽ − d y i = 1 \begin{cases} \frac{{{w^T}{x_i} + b}}{{\left\| w \right\|}} \geqslant d\quad{y_i} = 1\\ \\ \frac{{{w^T}{x_i} + b}}{{\left\| w \right\|}} \leqslant - d\quad{y_i} = 1 \end{cases} wwTxi+bdyi=1wwTxi+bdyi=1
同时也可以知道:
{ w T x i + b &gt; 0 y i = 1 w T x i + b &lt; 0 y i = − 1 \begin{cases} {w^T}{x_i} + b &gt; 0\quad{y_i} = 1\\ \\ {w^T}{x_i} + b &lt; 0\quad{y_i} = -1 \end{cases} wTxi+b>0yi=1wTxi+b<0yi=1
所以可以得到:
y i ( w T x i + b ) &gt; 0 {y_i}({w^T}{x_i} + b) &gt; 0 yi(wTxi+b)>0
因为margin就是最小的距离,所以可以得到以下式子:
max ⁡ m a r g i n = max ⁡ min ⁡ ∣ w T x i + b ∣ ∥ w ∥ ; s . t . y i ( w T x i + b ) &gt; 0 \max\quad margin = \max\quad\min \frac{{\left| {{w^T}{x_i} + b} \right|}}{{\left\| w \right\|}};\quad\quad s.t.\quad{y_i}({w^T}{x_i} + b) &gt; 0 maxmargin=maxminwwTxi+b;s.t.yi(wTxi+b)>0
上述式子等价于:
max ⁡ m a r g i n = max ⁡ min ⁡ ( w T x i + b ) y i ∥ w ∥ ; s . t . y i ( w T x i + b ) &gt; 0 \max\quad margin = \max\quad\min \frac{{ ({{w^T}{x_i} + b}){y_i} }}{{\left\| w \right\|}};\quad\quad s.t.\quad{y_i}({w^T}{x_i} + b) &gt; 0 maxmargin=maxminw(wTxi+b)yi;s.t.yi(wTxi+b)>0
我们可以将上述公式拆开来看:
max ⁡ m a r g i n = max ⁡ 1 ∥ w ∥ m i n ( w T x i + b ) y i ; s . t . y i ( w T x i + b ) &gt; 0 \max\quad margin = \max \frac{{ 1 }}{{\left\| w \right\|}}min{{ ({{w^T}{x_i} + b}){y_i} }};\quad\quad s.t.\quad{y_i}({w^T}{x_i} + b) &gt; 0 maxmargin=maxw1min(wTxi+b)yi;s.t.yi(wTxi+b)>0
我们再来看看分类的图,我们要将所有的点分成+1和-1两个类,那么如图所示:
SVM
由上图可知,所有的点一定会在平面 w T x i + b = 1 {w^T}{x_i} + b = 1 wTxi+b=1 w T x i + b = − 1 {w^T}{x_i} + b =- 1 wTxi+b=1两侧,所以 min ⁡ y i ( w T x i + b ) = 1 \min {y_i}({w^T}{x_i} + b) = 1 minyi(wTxi+b)=1,再结合上述公式我们可以得到:
max ⁡ m a r g i n = max ⁡ 1 ∥ w ∥ ; s . t . y i ( w T x i + b ) ⩾ 1 \max margin = \max \frac{1}{{\left\| w \right\|}};\quad s.t.\quad{y_i}({w^T}{x_i} + b) \geqslant 1 maxmargin=maxw1;s.t.yi(wTxi+b)1
这个问题同样可以等价于:
max ⁡ m arg ⁡ i n = min ⁡ 1 2 ∥ w ∥ 2 ; s . t . y i ( w T x i + b ) ⩾ 1 \max m\arg in = \min \frac{1}{2}{\left\| w \right\|^2};\quad s.t.\quad {y_i}({w^T}{x_i} + b) \geqslant 1 maxmargin=min21w2;s.t.yi(wTxi+b)1
接下来就是求解SVM优化问题的过程:

1.构造拉格朗日函数

因为约束函数 y i ( w T x i + b ) ⩾ 1 ⇔ 1 − y i ( w T x i + b ) ⩽ 0 {y_i}({w^T}{x_i} + b) \geqslant 1 \Leftrightarrow 1 - {y_i}({w^T}{x_i} + b) \leqslant 0 yi(wTxi+b)11yi(wTxi+b)0,所以我们可以构造柱函数的拉格朗日函数:
L ( w , b , λ ) = 1 2 ∥ w ∥ 2  +  ∑ i = 1 m λ i [ 1 − ( w T x i + b ) y i ] L(w,b,\lambda ) = \frac{1}{2}{\left\| w \right\|^2}{\text{ + }}\sum\limits_{i = 1}^m {{\lambda _i}[1 - ({w^T}{x_i} + b){y_i}]} L(w,b,λ)=21w2 + i=1mλi[1(wTxi+b)yi]
其中 λ i ⩾ 0 {\lambda _i} \geqslant 0 λi0 i = 1 , 2 , . . . , m i = 1,2,...,m i=1,2,...,m

2.求拉格朗日函数对于w和b最小

原来的目标函数为:
max ⁡ m a r g i n = min ⁡ w , b max ⁡ λ L ( w , b , λ ) \max \quad margin = {\min _{w,b}}\quad{\max _\lambda }L(w,b,\lambda ) maxmargin=w,bminλmaxL(w,b,λ)
上述式子我们可以用对偶关系转化一下:
max ⁡ m a r g i n = max ⁡ λ min ⁡ w , b L ( w , b , λ ) ; s . t . λ i ⩾ 0 \max \quad margin = {\max _\lambda }\quad {\min _{w,b}}L(w,b,\lambda );\quad s.t.\quad {\lambda _i} \geqslant 0 maxmargin=λmaxw,bminL(w,b,λ);s.t.λi0
一般来说要求一个数学表达式的极值的话,我们采用求偏导的方法,首先我们对 w w w求偏导,可以得到:
∂ L ∂ w = w − ∑ i = 1 m λ i x i y i = 0 ⇔ w = ∑ i = 1 m λ i x i y i \frac{{\partial L}}{{\partial w}} = w - \sum\limits_{i = 1}^m {{\lambda _i}{x_i}{y_i} = 0} \Leftrightarrow w = \sum\limits_{i = 1}^m {{\lambda _i}{x_i}{y_i}} wL=wi=1mλixiyi=0w=i=1mλixiyi
b b b求偏导数可以得到:
∂ L ∂ b = ∑ i = 1 m λ i y i = 0 \frac{{\partial L}}{{\partial b}} = \sum\limits_{i = 1}^m {{\lambda _i}{y_i} = 0} bL=i=1mλiyi=0
再将结果带入拉格朗日表达式中:
L ( w , b , λ ) = 1 2 ∑ i = 1 m ∑ j = 1 m λ i λ j y i y j x i x j + ∑ i = 1 m λ i − ∑ i = 1 m λ i y i ( ( ∑ j = 1 m λ j y j x j ) x i + b ) L(w,b,\lambda ) = \frac{1}{2}\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {{\lambda _i}{\lambda _j}{y_i}{y_j}{x_i}{x_j} + \sum\limits_{i = 1}^m {{\lambda _i}} - \sum\limits_{i = 1}^m {{\lambda _i}{y_i}((\sum\limits_{j = 1}^m {{\lambda _j}{y_j}{x_j}){x_i} + b} )} } } L(w,b,λ)=21i=1mj=1mλiλjyiyjxixj+i=1mλii=1mλiyi((j=1mλjyjxj)xi+b)
我们继续优化拉格朗日表达式:
L ( w , b , λ ) = 1 2 ∑ i = 1 m ∑ j = 1 m λ i λ j y i y j x i x j + ∑ i = 1 m λ i − ∑ i = 1 m ∑ j = 1 m λ i λ j y i y j x i x j − b ∑ i = 1 m λ i y i L(w,b,\lambda ) = \frac{1}{2}\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {{\lambda _i}{\lambda _j}{y_i}{y_j}{x_i}{x_j} + \sum\limits_{i = 1}^m {{\lambda _i} - \sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {{\lambda _i}{\lambda _j}{y_i}{y_j}{x_i}{x_j} - b\sum\limits_{i = 1}^m {{\lambda _i}{y_i}} } } } } } L(w,b,λ)=21i=1mj=1mλiλjyiyjxixj+i=1mλii=1mj=1mλiλjyiyjxixjbi=1mλiyi
因为 ∑ i = 1 m λ i y i = 0 {\sum\limits_{i = 1}^m {{\lambda _i}{y_i}} }=0 i=1mλiyi=0,所以整个式子可以简化成:
L ( w , b , λ ) = ∑ i = 1 m λ i − 1 2 ∑ i = 1 m ∑ j = 1 m λ i λ j y i y j x i x j L(w,b,\lambda ) = \sum\limits_{i = 1}^m {{\lambda _i}} - \frac{1}{2}\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {{\lambda _i}{\lambda _j}{y_i}{y_j}{x_i}{x_j}} } L(w,b,λ)=i=1mλi21i=1mj=1mλiλjyiyjxixj

3.求 min ⁡ w , b L ( w , b , λ ) {\min _{w,b}}L(w,b,\lambda ) minw,bL(w,b,λ) λ \lambda λ最大

上述说过用对偶转换,整体的目标函数可以写成:
min ⁡ w , b L ( w , b , λ ) = max ⁡ λ L ( w , b , λ ) {\min _{w,b}}L(w,b,\lambda ) = {\max _\lambda }L(w,b,\lambda ) w,bminL(w,b,λ)=λmaxL(w,b,λ)
那么现在的求解变成了如下表达式:
max ⁡ λ L ( w , b , λ ) = max ⁡ λ [ ∑ i = 1 m λ i − 1 2 ∑ i = 1 m ∑ j = 1 m λ i λ j y i y j x i x j ] ; s . t . ∑ i = 1 m λ i y i = 0 λ i ⩾ 0 {\max _\lambda }L(w,b,\lambda ) = {\max _\lambda }[\sum\limits_{i = 1}^m {{\lambda _i}} - \frac{1}{2}\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {{\lambda _i}{\lambda _j}{y_i}{y_j}{x_i}{x_j}} } ];\quad s.t.\quad\sum\limits_{i = 1}^m{{\lambda _i}{y_i} = 0} \quad{\lambda _i} \geqslant 0 λmaxL(w,b,λ)=λmax[i=1mλi21i=1mj=1mλiλjyiyjxixj];s.t.i=1mλiyi=0λi0
为了方便计算,我们将表达式前面加上一个负号,那么求极大值就变成了极小值:
min ⁡ λ L ( w , b , λ ) = min ⁡ λ [ 1 2 ∑ i = 1 m ∑ j = 1 m λ i λ j y i y j x i x j − ∑ i = 1 m λ i ] ; s . t . ∑ i = 1 m λ i y i = 0 λ i ⩾ 0 {\min _\lambda }L(w,b,\lambda ) = {\min _\lambda }[\frac{1}{2}\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {{\lambda _i}{\lambda _j}{y_i}{y_j}{x_i}{x_j}} }-\sum\limits_{i = 1}^m {{\lambda _i}} ];\quad s.t.\quad\sum\limits_{i = 1}^m{{\lambda _i}{y_i} = 0} \quad{\lambda _i} \geqslant 0 λminL(w,b,λ)=λmin[21i=1mj=1mλiλjyiyjxixji=1mλi];s.t.i=1mλiyi=0λi0

4.求解 w ∗ {w^*} w b ∗ {b^*} b

对于原始问题和对偶问题,充分必要条件就是满足KTT条件,于是可以得到如下公式:
1. ∂ L ( w , b , λ ) ∂ w = 0 \frac{{\partial L(w,b,\lambda )}}{{\partial w}} = 0 wL(w,b,λ)=0

2. ∂ L ( w , b , λ ) ∂ b = 0 \frac{{\partial L(w,b,\lambda )}}{{\partial b}} = 0 bL(w,b,λ)=0

3. ∂ L ( w , b , λ ) ∂ λ = 0 \frac{{\partial L(w,b,\lambda )}}{{\partial \lambda}} = 0 λL(w,b,λ)=0

4. λ i ( 1 − y i ( w T x i + b ) ) = 0 {\lambda _i}(1 - {y_i}({w^T}{x_i} + b)) = 0 λi(1yi(wTxi+b))=0

5. λ i ⩾ 0 {\lambda _i} \geqslant 0 λi0

6. 1 − y i ( w T x i + b ) ⩽ 0 1 - {y_i}({w^T}{x_i} + b) \leqslant 0 1yi(wTxi+b)0

我们假设整个问题的最优解是 w ∗ {w^*} w b ∗ {b^*} b λ ∗ {\lambda ^*} λ,由KTT条件可以推断出不可能所有的 λ i {\lambda _i} λi都是0,如果所有的 λ i {\lambda _i} λi都等于0的话,那么 w ∗ = 0 {w^*}=0 w=0,这显然是错误的,所以至少有一个 λ {\lambda} λ是大于0的,这个时候根据第4个公式可以得到: 1 − y i ( w ∗ x i + b ∗ ) = 0 1 - {y_i}({w^*}{x_i} + {b^*}) = 0 1yi(wxi+b)=0因为由公式1可以得到:
w ∗ = ∑ i = 1 m λ i ∗ y i x i {w^*} = \sum\limits_{i = 1}^m {\lambda _i^*{y_i}{x_i}} w=i=1mλiyixi
这个时候我们可以将 w ∗ {w^*} w带入到 1 − y i ( w ∗ x i + b ∗ ) = 0 1 - {y_i}({w^*}{x_i} + {b^*}) = 0 1yi(wxi+b)=0中去,因为 y i = ± 1 {y_i} = \pm 1 yi=±1,所以 y i 2 = 1 y_i^2 = 1 yi2=1,由上述公式可以得到:
y j − y j 2 ( ∑ i = 1 m λ i ∗ y i x i x j + b ∗ ) = 0 {y_j} - y_j^2(\sum\limits_{i = 1}^m {\lambda _i^*{y_i}{x_i}{x_j} + {b^*}} ) = 0 yjyj2(i=1mλiyixixj+b)=0最终可以求得:
b ∗ = y j − ∑ i = 1 m λ i ∗ y i x i x j = y j − ∑ i = 1 m λ i ∗ y i ( x i x j ) {b^*} = {y_j} - \sum\limits_{i = 1}^m {\lambda _i^*{y_i}{x_i}{x_j}} = {y_j} - \sum\limits_{i = 1}^m {\lambda _i^*{y_i}({x_i}{x_j}} ) b=yji=1mλiyixixj=yji=1mλiyi(xixj)
这个时候我们就求出了所有的 w ∗ {w^*} w b ∗ {b^*} b,就可以求出分类的超平面为:
∑ i = 1 m λ i ∗ y i ( x x i ) + b ∗ = 0 \sum\limits_{i = 1}^m {\lambda _i^*{y_i}(x{x_i})} + {b^*} = 0 i=1mλiyi(xxi)+b=0
同理,分类决策函数就可以写成:
f ( x ) = s i g n ( ∑ i = 1 m λ i ∗ y i ( x x i ) + b ∗ ) f(x) = sign(\sum\limits_{i = 1}^m {\lambda _i^*{y_i}(x{x_i})} + {b^*}) f(x)=sign(i=1mλiyi(xxi)+b)

到这里,整个SVM的推导过程就完成了,希望这篇博文能够帮助大家对SVM分类的理解有所帮助,SVM是一种基础的很重要的分类算法,也希望大家能够理解和掌握,文中如有纰漏,请大家不吝指教;如有转载,也请标明出处,谢谢大家。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值