每日算法(一)——二分类模型——SVM算法原理详解

欢迎小朋友们来到每日算法幼儿园,今天我们要学习Support Vector Machine(SVM)算法。

简介

SVM是一种二分类模型,是定义在特征空间上的最大间隔分类器,该算法包含了核技巧(核函数),使其能够处理非线性任务。SVM的学习策略是最大化其间隔,可形式化为一个求解凸二次规划问题。

相关概念

线性可分:在当前线性空间能够使用一个线性函数将两类样本分开。

算法原理

为了由浅到深,完整理解SVM算法,接下来我们从线性可分的数据入手,推导SVM的原理。搬起你们的小板凳,深吸一口气,幼儿园发车辣。

SVM在线性可分下运行简介

对于一系列样本点 ( y i , ( x 1 i , . . . , x n i ) ) (y_i,(x_{1i},...,x_{ni})) (yi,(x1i,...,xni)),来自于两个群体,如图1所示。我们可以很容易找到多条直线区分。那么哪一条直线最好?一般而言,我们会选择 l 2 l_2 l2,因为这条直线有更好的泛化性和鲁棒性。一般在SVM算法中,我们会找距离支持向量最大的超平面。那么有小朋友会问,老师老师,什么是支持向量?支持向量其实是距离超平面距离最近的样本。这下有小朋友要晕车了。其实,支持向量与超平面是一种对偶概念,两者是相互存在,后面我们将会发现,超平面的表达式会与支持向量同时求出。

在这里插入图片描述

step1:线性可分下的超平面如何找?

在幼儿园小班就学过,设超平面方程 W T X + b = 0 \mathbf{W}^TX + b = 0 WTX+b=0,那么样本点 P ( y i , ( x 1 i , . . . , x n i ) ) P(y_i,(x_{1i},...,x_{ni})) P(yi,(x1i,...,xni))到超平面的距离 d d d:
∣ d ∣ = ∣ w 1 ∗ x 1 + . . . + w n ∗ x n ∣ w 1 2 + . . . + w n 2 = ∣ W T X + b ∣ ∣ ∣ W ∣ ∣ (1) |d| = \frac{|w_1 * x_1 + ... + w_n * x_n|}{\sqrt{w^2_1 + ... + w^2_n}} = \frac{|\mathbf{W}^TX + b|}{||\mathbf{W}||} \tag{1} d=w12+...+wn2 w1x1+...+wnxn=∣∣W∣∣WTX+b(1)

其中$||w|| 是 是 R^n 的范数, 的范数, 的范数,b \in R$.

在明白如何计算点到平面的距离后,那么该怎么找支持向量到超平面的距离呢?其实,我们只需要求所有点到平面最小距离的最大值即可,听起来有些晕,但写出目标函数便很直观地表达需求。此时,目标函数为:
arg ⁡ max ⁡ w , b min ⁡ ( y i ( W X i + b ) ∣ ∣ w ∣ ∣ ) s . t . y i ( W X i + b ) ) > = 0 (2) \arg \quad \max_{w,b} \min(\frac{y_i(\mathbf{W}X_i + b)}{||w||}) \\ s.t. \quad y_i(\mathbf{W}X_i + b)) >= 0 \tag{2} argw,bmaxmin(∣∣w∣∣yi(WXi+b))s.t.yi(WXi+b))>=0(2)
其中 y i y_i yi X X X的标签值,取值 { 1 , − 1 } \{1,-1\} {1,1}。有小朋友就要问了,为什么不用公式(1)呢,这样不是更简单吗?其实啊,我们选择公式(2)基于以下两点考虑。一,绝对值的性质不好,使用绝对值在0处不可导。二,假设我们找到了可分平面,那么在该平面上方, d = W T X i + b ∣ ∣ W ∣ ∣ > 0 , y i > 0 d = \frac{\mathbf{W}^TX_i + b}{||\mathbf{W}||}>0,y_i>0 d=∣∣W∣∣WTXi+b>0,yi>0,在平面下方,则正好相反, d = W T X i + b ∣ ∣ W ∣ ∣ < 0 , y i < 0 d = \frac{\mathbf{W}^TX_i + b}{||\mathbf{W}||}<0,y_i<0 d=∣∣W∣∣WTXi+b<0,yi<0,但两者乘积 y i ( W X i + b ) ∣ ∣ W ∣ ∣ > 0 \frac{y_i(\mathbf{W}X_i + b)}{||\mathbf{W}||}>0 ∣∣W∣∣yi(WXi+b)>0恒成立,这样也等价于 d d d

接着,我们注意到,当对 W \mathbf{W} W b b b同时缩放时, d = y i ( λ W X i + λ b ) ∣ ∣ λ W ∣ ∣ = y i ( W X i + b ) ∣ ∣ W ∣ ∣ d = \frac{y_i(\lambda\mathbf{W}X_i + \lambda b)}{||\mathbf{\lambda W}||} = \frac{y_i(\mathbf{W}X_i + b)}{||\mathbf{W}||} d=∣∣λW∣∣yi(λWXi+λb)=∣∣W∣∣yi(WXi+b),距离不变。那么,通过合适的系数变换,我们可以化简(2)的目标函数,此时,我们令支持向量(Support Vector,下简记为sv)到超平面距离为1,此时,其他向量的模长除以支持向量到超平面距离应大于1。则(2)可等价为:
arg ⁡ max ⁡ w , b 1 ∣ ∣ W ∣ ∣ s . t . y i ( W X i + b ) ) > = 1 (3) \arg \quad \max_{w,b} \frac{1}{||\mathbf{W}||}\\ s.t. \quad y_i(\mathbf{W}X_i + b)) >= 1 \tag{3} argw,bmax∣∣W∣∣1s.t.yi(WXi+b))>=1(3)

为了计算便利,我们将求极大值转变成极小值,则(3)可等价为:
arg ⁡ min ⁡ w , b 1 2 ∣ ∣ W ∣ ∣ 2 s . t . y i ( W X i + b ) ) > = 1 (4) \arg \quad \min_{w,b} \frac{1}{2}||\mathbf{W}||^2\\ s.t. \quad y_i(\mathbf{W}X_i + b)) >= 1 \tag{4} argw,bmin21∣∣W2s.t.yi(WXi+b))>=1(4)

step2:优化求解基础知识补充

为了帮助像逐波这样没有接触过最优化的同学理解后文,在本部分补充相关知识,有基础的可以跳过。

在高等数学/数学分析中,对于条件极值,通常使用拉格朗日数乘法求解。


max ⁡ V = x y z , s . t . 2 x y + 2 y z + 2 x z = a 2 c o n s t r u c t l a n g u a g e f u n c t i o n L ( x , y , z , λ ) = x y z − λ ( 2 x y + 2 y z + 2 x z − a 2 ) q i u d a o { ∂ L ∂ x = 0 ∂ L ∂ y = 0 ∂ L ∂ z = 0 ∂ L ∂ λ = 0 t h a t i s { y z − λ ( 2 y + 2 z ) = 0 x z − λ ( 2 x + 2 z ) = 0 x y − λ ( 2 x + 2 y ) = 0 s o , w e g e t x = y = z = a 6 , V = a 3 6 6 \max V = xyz,\\ s.t.\quad 2xy+2yz+2xz = a^2 \\ construct\quad language \quad function\\ L(x,y,z,\lambda) = xyz - \lambda(2xy+2yz+2xz - a^2)\\ qiudao\\ \begin{cases} \frac{\partial L}{\partial x} = 0 \\ \frac{\partial L}{\partial y} = 0 \\ \frac{\partial L}{\partial z} = 0 \\ \frac{\partial L}{\partial \lambda} = 0 \\ \end{cases}\\ that \quad is \\ \begin{cases} yz - \lambda(2y + 2z) = 0\\ xz - \lambda(2x + 2z) = 0\\ xy - \lambda(2x + 2y) = 0\\ \end{cases}\\ so,we \quad get\\ x=y=z=\frac{a}{\sqrt{6}},V = \frac{a^3}{6\sqrt{6}} maxV=xyz,s.t.2xy+2yz+2xz=a2constructlanguagefunctionL(x,y,z,λ)=xyzλ(2xy+2yz+2xza2)qiudao xL=0yL=0zL=0λL=0thatis yzλ(2y+2z)=0xzλ(2x+2z)=0xyλ(2x+2y)=0so,wegetx=y=z=6 a,V=66 a3

对于不等式约束条件,我们可以选择对不等式约束加入松弛变量转为等式约束,如:
{ min ⁡ f ( X ) s . t . g ( X ) ≤ 0 \begin{cases} \min f(X)\\ s.t. g(X) \leq 0 \end{cases} {minf(X)s.t.g(X)0
加入松弛变量 v v v后变为:
{ min ⁡ f ( X ) s . t . g ( X ) + v 2 = 0 \begin{cases} \min f(X)\\ s.t. g(X) + v^2 = 0 \end{cases} {minf(X)s.t.g(X)+v2=0
此时,我们构造拉格朗日函数,对 X , λ , v X,\lambda,v X,λ,v各自求偏导即可求解该问题。

然而,这样求解并不一定会获得可行域上的解,会通过KKT条件判断该约束问题是否有解,该命题表述为…
感兴趣的同学可以看看证明,主播并不感兴趣。
一般而言,KKT条件是一般判别有约束极值点的必要条件,但对于凸规划,KKT条件是判断存在极值点的充要条件。
除了KKT条件外,我们也常用对偶条件优化约束求解,对偶问题的好处在于能够将转化后的优化问题转变成对偶问题,详细内容扔个连接,在这里不细说了。

step3:求解

好,回到正题,我们能判断出(4)是个凸优化问题。构造(4)的拉格朗日函数,如下:
L ( W , b , λ ) = 1 2 ∣ ∣ W ∣ ∣ 2 − ∑ i = 1 m λ i ( y i ( W X i + b ) ) − 1 ) (5) L(\mathbf{W},b,\mathbf{\lambda}) = \frac{1}{2}||\mathbf{W}||^2 - \sum \limits_{i=1}^{m}\lambda_i(y_i(\mathbf{W}X_i + b))-1) \tag{5} L(W,b,λ)=21∣∣W2i=1mλi(yi(WXi+b))1)(5)
我们转化(5)获得其对偶问题:
θ ( W ) = max ⁡ λ i ≥ 0 L ( W , b , λ ) (6) \theta(\mathbf{W}) = \max_{\lambda_i \geq 0} L(\mathbf{W},b,\lambda) \tag{6} θ(W)=λi0maxL(W,b,λ)(6)
此时(4)的对偶问题等价为:
min ⁡ W , b θ ( W ) = min ⁡ W , b max ⁡ λ i ≥ 0 L ( W , b , λ ) (7) \min_{\mathbf{W},b} \theta(\mathbf{W}) = \min_{\mathbf{W},b} \max_{\lambda_i \geq 0} L(\mathbf{W},b,\lambda) \tag{7} W,bminθ(W)=W,bminλi0maxL(W,b,λ)(7)

(8)中 min ⁡ max ⁡ \min \max minmax问题不容易求解,再考虑到要满足KKT条件才能存在极值点,因此,考虑交换(8)中的次序。此时需要满足两个条件:1.优化问题为凸规划问题,2.满足KTT条件,正好与我们的需求一致,于是交换次序,此时需要满足以下条件:
{ λ i ≥ 0 λ i ( y i ( W X i + b ) − 1 ) = 0 y i ( W X i + b ) − 1 ≥ 0 \begin{cases} \lambda_i \geq 0\\ \lambda_i(y_i(\mathbf{W}X_i + b)-1) =0\\ y_i(\mathbf{W}X_i + b)-1 \geq 0 \end{cases} λi0λi(yi(WXi+b)1)=0yi(WXi+b)10
L ( W , b , λ ) L(\mathbf{W},b,\lambda) L(W,b,λ)中的 W , b \mathbf{W},b W,b求导,过程如图2所示,

在这里插入图片描述

解得:
{ W = ∑ i = 1 m λ i y i X i ∑ i = 1 m λ i y i = 0 (8) \begin{cases} \mathbf{W} = \sum\limits_{i=1}^m \lambda_i y_i X_i \\ \sum\limits_{i=1}^m \lambda_i y_i = 0 \end{cases} \tag{8} W=i=1mλiyiXii=1mλiyi=0(8)

将(8)带入 L ( W , b , λ ) L(\mathbf{W},b,\lambda) L(W,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 (9) L(\mathbf{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 \tag{9} L(W,b,λ)=21i=1mj=1mλiλjyiyj<Xi,Xj>+i=1mλi(9)

此时,我们解得(4)的对偶等价规划问题为:
{ max ⁡ λ i ≥ 0 − 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 (10) \begin{cases} \max \limits_{\lambda_i \geq 0} -\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 \\ s.t. \sum\limits_{i=1}^{m} \lambda_i y_i = 0 \end{cases} \tag{10} λi0max21i=1mj=1mλiλjyiyj<Xi,Xj>+i=1mλis.t.i=1mλiyi=0(10)
此时,求解(10)规划问题,将解带入(8)即可解得 W \mathbf{W} W
SVM算法中,论文作者使用SMO对该问题进行求解,下次再说。

此时,根据KKT条件,当 λ i = 0 \lambda_i = 0 λi=0时,对应的样本点 X i X_i Xi不是sv,相反, λ i ≠ 0 \lambda_i \not= 0 λi=0时,对应的样本点 X i X_i Xi为sv。一般而言,我们只需选取一个sv,带入 b = y i − W X i b = y_i - \mathbf{W}X_i b=yiWXi即可解得 b b b,但为了减少误差,我们会计算所有sv对应的 b b b,并取均值。

或许,会有小朋友说,哎呀,线性问题有什么难解得,我上我也行,就是躺赢狗。别急,让我们接着看SVM得进一步优化。

step4:线性不可分下优化-软间隔

在实践中(一般说这几个字就是在耍流氓),几乎没有样本满足线性可分,对于一些特别难以区分的样本,我们可以放松要求,增强泛化能力。我们将(4)的优化问题升级为:
{ arg ⁡ min ⁡ W , b 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ξ i s . t . y i ( W X i + b ) ) > = 1 − ξ i ξ i ≥ 0 (11) \begin{cases} \arg \min\limits_{\mathbf{W},b}\frac{1}{2}||w||^2+C\sum\limits_{i=1}^{m}\xi_i \\ s.t. \quad y_i(\mathbf{W}X_i + b)) >= 1-\xi_i \\ \quad \quad \quad \xi_i \geq 0 \end{cases} \tag{11} argW,bmin21∣∣w2+Ci=1mξis.t.yi(WXi+b))>=1ξiξi0(11)

此时的拉格朗日函数对 W , b , ξ i \mathbf{W},b,\xi_i W,b,ξi求导后为
L ( W , b , λ , τ ) = 1 2 ∣ ∣ W ∣ ∣ 2 − ∑ i = 1 m λ i ( y i ( W X i + b ) ) − 1 ) − ∑ τ i ξ i { ∂ L ∂ W = 0 ∂ L ∂ b = 0 ∂ L ∂ τ i = 0 t h e n { W = ∑ λ i y i X i ∑ λ i y i = 0 C − λ i − τ i = 0 s o max ⁡ L = − 1 2 ∑ i = 1 m ∑ j = 1 m λ λ y i y j < X i , X j > + ∑ 1 = 1 m λ i (12) \begin{aligned} L(\mathbf{W},b,\lambda,\tau) &= \frac{1}{2}||\mathbf{W}||^2 - \sum \limits_{i=1}^{m}\lambda_i(y_i(\mathbf{W}X_i + b))-1) - \sum \tau_i \xi_i \\ &\begin{cases} \frac{\partial L}{\partial \mathbf{W}} = 0 \\ \frac{\partial L}{\partial b} = 0\\ \frac{\partial L}{\partial \tau_i} = 0\\ \end{cases}\\ &then\\ &\begin{cases} \mathbf{W} = \sum \lambda_i y_i X_i\\ \sum \lambda_i y_i = 0\\ C - \lambda_i - \tau_i = 0\\ \end{cases}\\ &so\\ &\max L = -\frac{1}{2} \sum\limits_{i=1}^m\sum\limits_{j=1}^m \lambda \lambda y_i y_j <X_i,X_j> + \sum\limits_{1=1}^m \lambda_i \end{aligned} \tag{12} L(W,b,λ,τ)=21∣∣W2i=1mλi(yi(WXi+b))1)τiξi WL=0bL=0τiL=0then W=λiyiXiλiyi=0Cλiτi=0somaxL=21i=1mj=1mλλyiyj<Xi,Xj>+1=1mλi(12)
求解过程同上

step5:线性不可分下优化-核函数

SVM著名之处在于,能够将低维数据转化为高维数据,在高维数据中找到可分平面,将低维平面内不可分的数据嵌入高维空间,即可变为线性可分问题,升维的过程借助了核函数。

假设 φ ( X ) \varphi(X) φ(X) X X X的高维形式,那么其他过程均可只将 X X X换为 φ ( X ) \varphi(X) φ(X),在(11)中,原优化问题升级为:
{ max ⁡ λ i ≥ 0 − 1 2 ∑ i = 1 m ∑ j = 1 m λ i λ j y i y j K < X i , X j > + ∑ i = 1 m λ i s . t . ∑ i = 1 m λ i y i = 0 (13) \begin{cases} \max \limits_{\lambda_i \geq 0} -\frac{1}{2}\sum\limits_{i=1}^m \sum\limits_{j=1}^m \lambda_i \lambda_j y_i y_j K<X_i,X_j> + \sum\limits_{i=1}^m \lambda_i \\ s.t. \sum\limits_{i=1}^{m} \lambda_i y_i = 0 \end{cases} \tag{13} λi0max21i=1mj=1mλiλjyiyjK<Xi,Xj>+i=1mλis.t.i=1mλiyi=0(13)
其中 K < X i , X j > K<X_i,X_j> K<Xi,Xj>为高维向量 φ ( X i ) \varphi(X_i) φ(Xi) φ ( X j ) \varphi(X_j) φ(Xj)的内积,使用隐式的核函数表达。因此,核函数隐式提升原有数据维度,或者是,重新定义了向量空间,引入非线性运算,从而从其他空间找区分原数据的超平面。

对于核函数有一些要求,但不是本节课重点,最后放个链接供参考。

总结

今天我们学习了SVM算法原理,现在请深呼吸,头晕是正常的,请小朋友们下课认真总结,就这样,下课。

在这里插入图片描述

课外参考资料

KKT条件:

KKT条件是什么

KKT条件是什么

什么是凸函数、凸优化

凸优化是什么

SVM原理

SVM原理1

SVM原理2

SVM原理3

SVM原理4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值