手撕SVM(二)

0 概述

在正式推导SVM之前,我们先解释一下到底什么是SVM算法。SVM 是一种二类分类模型。它的基本思想是在特征空间中寻找间隔最大的分离超平面使数据得到高效的二分类,具体来讲,有三种情况:
SVM算法解决的问题可以分为三类:

  • 数据原本线性可分
    直接使用硬间隔的方法解决
  • 数据近似线性可分
    引入松弛变量,能容忍一定程度的错误
  • 数据线性不可分
    这部分就需要使用核技巧来解决
    手撕SVM(二)

1 SVM推导

1.1 问题描述

如下图所示,在一个多维平面上散落着正样本和负样本(我们这里画的是二维,你可以想象一下),如果能够找到一个超平面,恰好能够将正负样本分开,那么这个超平面就可以用来对样本进行分类。
手撕SVM(二)
如图,超平面H1H_1H2H_2不是我们要找的,我们要找的就是H3H_3。那么问题来了,如果H3H_3这种能将正负样本分开的超平面存在,那么我们如何找到它?

1.2 问题转化

我们需要将问题转化为数学的形式进行分析。如上图所示,我们使用超平面公式:y=ωTx+by=\omega^Tx+b表示H3H_3。那么任意一个样本点p(xi,yi)p(x_i,y_i)到超平面的几何距离为:ωTxi+bω\frac{|\omega^Tx_i+b|}{||\omega||}假设H3H_3就是我们想要的那个超平面,即能够将正负样本分开,那么对于任意的p(xi,yi)p(x_i,y_i)均有:distance(xi,yi)=yiωTxi+bω>0distance(x_i,y_i)=y_i\frac{\omega^Tx_i+b}{||\omega||}\gt0
因此有以下结论:

  • 正样本yi=1y_i=1,几何间隔大于0,有ωTxi+b>0\omega^Tx_i+b\gt0,即正样本均在法向量指向的一侧(正的一侧);
  • 负样本yi=1y_i=-1,几何间隔小于0,有ωTxi+b<0\omega^Tx_i+b\lt0,即负样本均在法向量指向的相反一侧(负的一侧)。

这个问题等价于对于能将正负样本分开的超平面,存在以下结论:distance(xi,yi)>0,(xi,yi)distance(x_i,y_i)\gt0,\forall(x_i,y_i)

可以想象,这种超平面肯定会有无数多个的,但我们希望最优的那个超平面不仅能将样本分开,且分得越开越好,即距离超平面最近的那个样本的距离最远,即最小的distancedistance最大,最小是对样本点而言的,最大是对超平面参数而言的。我们就将上述数学问题转化为最优化问题了。
进一步地,假设我们已经找到了这个最优的超平面H3H_3,其参数为(ω,b)(\omega,b),并且也找到了使距离最小的样本点(xi,yi)(x_i,y_i),最后能够得到几何间隔:yiωTxi+bωy_i\frac{\omega^Tx_i+b}{||\omega||}
本来我们即可对上述式子求最大化了,但是非常不巧的是,不同的超平面对应的距离最近的样本点(x_i,y_i)又不一样,那而欧美让你想想办法将上式分子部分消除掉。
回顾前文描述,我们假设了参数(ω,b)(\omega,b)对应的超平面是我们要找的那个,那么就有distance(xi,yi)=yiωTxi+bω>0distance(x_i,y_i)=y_i\frac{\omega^Tx_i+b}{||\omega||}\gt0,即yi(ωTxi+b)>0y_i(\omega^Tx_i+b)\gt0,那么这个最优超平面的参数(ω,b)(\omega,b)经过适当的等倍缩放之后一定存在yi(ωTxi+b)=1y_i(\omega^Tx_i+b)=1,那么最小距离就变成了:1ω\frac{1}{||\omega||}
最终问题变成了求解:maxω,b1ω,yi(ωTxi+b)1max_{\omega,b}\frac{1}{||\omega||},\forall y_i(\omega^Tx_i+b)\geq1
转化一下:minω,b12ω2,yi(ωTxi+b)1min_{\omega,b}\frac{1}{2}||\omega||^2,\forall y_i(\omega^Tx_i+b)\geq1
加上常数是为了求导方便。

1.3 拉格朗日函数求解

要求解最小化问题,最直观的想法是构建一个函数,使该函数在可行解区域内与原目标函数完全一致,而在可行解区域外的数值非常大,甚至无穷大。那么这个没有约束条件的新目标函数的优化问题就与原来有约束条件的原始目标函数的优化问题等价。这就是拉格朗日方程的目的,它将约束条件放到目标函数中,从而将有约束的优化问题转换为无约束的优化问题。
下式就是原问题转化为无约束的优化问题的公式:Γ(ω,b,α)=12ω2i=1nαi(yi(ωTxi+b)1)\Gamma(\omega,b,\alpha)=\frac{1}{2}||\omega||^2-\sum_{i=1}^{n}\alpha_i(y_i(\omega^Tx_i+b)-1)
其中αi0\alpha_i\geq0为拉格朗日乘子,是构建新目标函数时引入的系数变量。现在我们令:Θ(ω)=maxαi0Γ(ω,b,α)\Theta(\omega)=max_{\alpha_i\geq0}\Gamma(\omega,b,\alpha)
当样本点不满足约束条件,即在可行域外yi(ωTxi+b)<1y_i(\omega^Tx_i+b)\lt1,此时αi=+Θ(ω)=+\alpha_i=+\infty,\Theta(\omega)=+\infty
当样本点满足约束条件是,即在可行域内yi(ωTxi+b)1y_i(\omega^Tx_i+b)\geq1
此时,Θ(ω)\Theta(\omega)为原目标函数本身,有:
Θ(ω)={12ω2,x+,x\Theta(\omega)=\begin{cases}\frac{1}{2}||\omega||^2,x\in可行域 \\ +\infty,x\in非可行域\end{cases}
现在问题变为求解新目标函数Θ(ω)\Theta(\omega)的最小值:
minω,bΘ(ω)=minωmaxαi0Γ(ω,b,α)=pmin_{\omega,b}\Theta(\omega)=min_{\omega}max_{\alpha_i\geq0}\Gamma(\omega,b,\alpha)=p^*
根据朗格朗日对偶性:
minω,bΘ(ω)=maxαi0minωΓ(ω,b,α)=dmin_{\omega,b}\Theta(\omega)=max_{\alpha_i\geq0}min_{\omega}\Gamma(\omega,b,\alpha)=d^*

1.4 对偶问题求解

求解的问题为:
maxαi0minωΓ(ω,b,α)=dΓ(ω,b,α)=12ω2i=1nαi(yi(ωTxi+b)1)max_{\alpha_i\geq0}min_{\omega}\Gamma(\omega,b,\alpha)=d^* \\ \Gamma(\omega,b,\alpha)=\frac{1}{2}||\omega||^2-\sum_{i=1}^{n}\alpha_i(y_i(\omega^Tx_i+b)-1)
首先固定α\alpha,分别对ω,b\omega,b求导,并令导数为0,得到:
Θω=0ω=i=1nαiyixiΘb=0i=1nαiyi=0 \frac{\partial\Theta}{\partial\omega}=0 \Rightarrow \omega=\sum_{i=1}^{n}\alpha_iy_ix_i \\ \frac{\partial\Theta}{\partial b}=0 \Rightarrow \sum_{i=1}^{n}\alpha_iy_i=0
将结果带回Γ(ω,b,α)\Gamma(\omega,b,\alpha)
Γ(ω,b,α)=12ω2i=1nαi(yi(ωTxi+b)1)=12ωTωωTi=1nαiyixibi=1nαiyi+i=1nαi=12ωTi=1nαiyixiωTi=1nαiyixib×0+i=1nαi=i=1nαi12{i=1nαiyixi}Ti=1nαiyixi=i=1nαi12i=1,j=1nαiαjyiyjxiTxj \Gamma(\omega,b,\alpha)=\frac{1}{2}||\omega||^2-\sum_{i=1}^{n}\alpha_i(y_i(\omega^Tx_i+b)-1) \\ =\frac{1}{2}\omega^T\omega-\omega^T\sum_{i=1}^{n}\alpha_iy_ix_i - b\sum_{i=1}^{n}\alpha_iy_i + \sum_{i=1}^{n}\alpha_i \\ =\frac{1}{2}\omega^T\sum_{i=1}^{n}\alpha_iy_ix_i - \omega^T\sum_{i=1}^{n}\alpha_iy_ix_i - b\times0+\sum_{i=1}^{n}\alpha_i \\ =\sum_{i=1}^{n}\alpha_i-\frac{1}{2}\lbrace \sum_{i=1}^{n}\alpha_iy_ix_i \rbrace ^T\sum_{i=1}^{n}\alpha_iy_ix_i \\ = \sum_{i=1}^{n}\alpha_i-\frac{1}{2} \sum_{i=1,j=1}^{n}\alpha_i\alpha_jy_iy_jx_i^Tx_j
上式中只有一个变量α\alpha了,内侧的最小值已经求解完成,我们再求外侧的最大值:
maxαi0i=1nαi12i=1,j=1nαiαjyiyjxiTxjs.t.α0,i=1,2,...,ni=1nαiyi=0 max_{\alpha_i\geq0}\sum_{i=1}^{n}\alpha_i-\frac{1}{2} \sum_{i=1,j=1}^{n}\alpha_i\alpha_jy_iy_jx_i^Tx_j \\ s.t.\alpha\geq0,i=1,2,...,n \\ \sum_{i=1}^{n}\alpha_iy_i=0
接着我们可以使用序列最小优化(SMO)算法求得得到α\alpha,再根据α\alpha,我们就可以求解出ω\omegabb,进而求得H3H_3

感谢阅读。

如果觉得文章对你有所帮助,欢迎打赏哦~
手撕SVM(二)
手撕SVM(二)