SVM的原理及推导

SVM的原理及推导

我们直接用数学公式来描述我们要解决的问题。假设我有一个数据集D\mathcal{D},总共有m个样本{xi,yi},i=1,...,n\{x_i, y_i\}, i=1, ..., n。其中。其中xiRdx_i \in \mathbb{R}^d是维的向量,是二类分类问题的标签,是d维的向量,y是二类分类问题的标签,yi{1,+1}y_i \in \{-1, +1\}。我们首先假设我们的数据是完美的,即,在维度的平面上,我们的数据是线性可分的,那么我们就可以画一条直线。我们首先假设我们的数据是完美的,即,在维度d的平面上,我们的数据是线性可分的,那么我们就可以画一条直线f(x)=wTx+bf(x)=w^Tx+b使得我们所有的不同类别的样本区分开来,即对于所有使得我们所有的不同类别的样本区分开来,即对于所有yi=1y_i=-1的样本的样本iiwTx+b0w^Tx+b \leq 0,反之对于所有,反之对于所有yi=+1y_i = +1的样本有的样本有wTx+b0w^Tx+b \geq 0

但是,如果我们只是单纯的规定wTx+b=0w^Tx+b=0作为超平面来区分正负样本,这样的超平面有很多,任何一个超平面符合上述条件都可以作为解,而这对分类的泛化性并不友好。也就是说,当超平面实际上选取很差时,对于测试数据,一点微小的噪声就会导致它的错分。所以SVM定义了另外两个超平面(支持超平面 Supporting Hyperplane),都与wTx+b=0w^Tx+b=0平行,到超平面的距离(边际 Margin)分别为dd_-d+d_+,并且保持d=d+d_-=d_+。我们将这两个超平面用公式表示:
wTx=bσwTx=b+σ w^Tx = b-\sigma \\ w^Tx = b+\sigma
我们注意到,如果将公式的左右两边同时乘以一个系数,公式仍然成立。而且这个公式存在着过参数化。因此SVM规定了这个σ=1\sigma = 1。那么边际大小γ=d+d+\gamma = d_-+d_+就等于:
γ=2w\gamma = \frac{2}{\Vert w\Vert}

至此我们已经决定了我们所要得到的优化目标,即找到一个超平面wTx+b=0w^Tx+b=0使得它存在两个与之平行、与之距离为11并分布两侧的超平面,能够完美分开所有的训练数据,使得正样本在wTx+b1w^Tx+b \geq 1,负样本wTx+b1w^Tx+b \leq -1。我们把问题写成凸优化问题的形式:(这里强调一点,源自于Convex Optimization那门课中,很多人把优化公式中的max和maximize,min和minimize混为一谈,实际上是不正确的,min/max返回的是一个值,即最小/大值,只有maximize/minimize代表着优化目标函数。)
maximize  2ws.t.  yi(wTx+b)10, i=1,...,m \begin{aligned} \mathop{maximize}&~~\frac{2}{\|w\|}\\ s.t. &~~y_i(w^Tx+b) -1 \geq 0 , ~i=1,...,m \end{aligned}
由于2w\frac{2}{\|w\|}是个concave的函数,我们便可以通过倒数的方式转成convex的标准形式,这里加平方应该是要为了是让曲线保证平滑来保证处处可导(这里不是很确定,如果说的不对请大家指出谢谢),即:
minimize  12w2s.t.  yi(wTx+b)10, i=1,...,m \begin{aligned} minimize&~~\frac{1}{2}\|w\|^2\\ s.t. &~~y_i(w^Tx+b) -1 \geq 0 , ~i=1,...,m \end{aligned}
对于刚好落在支持超平面上的点,我们就将他们成为支持向量(Support Vector)
这个问题,可以通过拉格朗日法(Lagrangian) 转换成对偶问题求解。

首先,我们将约束条件乘以一个λi\lambda_i加入到优化函数f0(x)f_0(x)中。随后根据拉格朗日法求对偶问题的定义,我们可以得到:
L(w,b,λi)=infw,b12w2imλi[yi(wTx+b)1] \mathcal{L}(w,b,\lambda_i)=\inf_{w,b}\frac{1}{2}\|w\|^2-\sum_{i}^{m}\lambda_i[y_i (w^Tx+b)-1]
我们仔细看L\mathcal{L}这个公式,要求关于wwbb的下界,实际上,对于ww来说,是一个二次型wTww^Tw加上一个累加的Affine映射imλiyiwTx\sum_i^m \lambda_i y_i w^Tx,那么这些都是保持凸函数性质的运算。对于bb来说,是一个Affine映射。因此对于wwbb而言,L\mathcal{L}是一个凸函数,在求下界时,我们可以直接通过求导函数为0的点来计算Optimal(全局最优)。

那么我们分别对wwbb求导并求等于0的点:
Lw=wimλiyixi=0Lb=imλiyi=0 \begin{aligned} \frac{\partial \mathcal{L}}{\partial w}&=w-\sum_i^m \lambda_iy_ix_i&=0 \\ \frac{\partial \mathcal{L}}{\partial b}&=\sum_i^m{\lambda_iy_i}=0 \end{aligned}
随后我们将求导得到的结果带回到L\mathcal{L}中,得到:
L=12wTw+imλiimλiyiwTxiimλiyib=12imλiyixi2+imλiimλiyi(imλiyixi)Txi=imλi12(imλiyixiT)(imλiyixi)=imλi12imjmλiλjyiyjxiTxj \begin{aligned} \mathcal{L}&=\frac{1}{2}w^Tw+\sum_i^m\lambda_i-\sum_i^m\lambda_iy_iw^Tx_i-\sum_i^m\lambda_iy_ib \\ &=\frac{1}{2}\|\sum_i^m\lambda_iy_ix_i\|^2+\sum_i^m\lambda_i-\sum_i^m\lambda_iy_i(\sum_i^m\lambda_iy_ix_i)^Tx_i\\ &=\sum_i^m\lambda_i-\frac{1}{2}(\sum_i^m\lambda_iy_ix_i^T)(\sum_i^m\lambda_iy_ix_i)\\ &=\sum_i^m\lambda_i-\frac{1}{2}\sum_i^m\sum_j^m\lambda_i\lambda_jy_iy_jx_i^Tx_j \end{aligned}
此时,对偶问题就可以被描述为:
maximizi  imλi12imjmλiλjyiyjxiTxjs.t.  λi0, i=1,...,m  imλiyi=0 \begin{aligned} \mathop{maximizi}&~~\sum_i^m\lambda_i-\frac{1}{2}\sum_i^m\sum_j^m\lambda_i\lambda_jy_iy_jx_i^Tx_j \\ s.t.&~~\lambda_i \geq 0, ~i=1,...,m \\ &~~\sum_i^m\lambda_iy_i=0 \end{aligned}
这个问题可以通过SMO算法去求解,这里就不详细赘述了。其实在整个Convex Optimization的课程中,也没有过于强调如何去解各种凸优化问题,主要还是在介绍如何将各种问题转成可解的凸优化形式。只要转成很好解的形式,就会有各种成熟的工具去进行求解。


带有松弛变量的SVM

在SVM中的问题设定中,我们发现其中很重要的一个假设就是假定超平面能够完美分割全部的数据。尽管在线性不可分的数据中,找不到这样的平面,但是如果使用足够复杂的核函数,大概率会找到一个高维空间的超平面来完美区分,但是这样可能导致的结果就是严重的过拟合。转换成低维的情况可以大致理解为,将每个点用超平面都划分成一个单独的部分,这样也是会100%正确分类训练数据,但是这并不是我们想要的。
在实际数据中,存在噪声是非常有可能的,此时如果将训练数据全部“记住”,会导致严重的过拟合。所以带有松弛变量的SVM就是设定一个参数,让部分数据可以不严格遵守到超平面最小距离为1这个设定。带有松弛变量的SVM的优化目标如下:
minimize  12w2+Cimξis.t.  yi(wTxi+b)1ξi, i=1,...,mξi>0, i=1,...,m \begin{aligned} \mathop{minimize}&~~\frac{1}{2}\|w\|^2+C\sum_i^m \xi_i\\ s.t.&~~y_i(w^Tx_i+b) \geq 1-\xi_i,~i=1,...,m\\ &\xi_i > 0, ~i=1, ..., m \end{aligned}
同样我们将它写成对偶的形式,它的拉格朗日对偶函数如下:
L(w,b,ξ,λ,μ)=infw,b,ξi12w2+Cimξi+imλi[1ξiyi(wTxi+b)]imμiξi \mathcal{L}(w,b,\xi,\lambda,\mu) = \inf_{w,b,\xi_i}\frac{1}{2}\|w\|^2+C\sum_i^m\xi_i+\sum_i^m\lambda_i[1-\xi_i-y_i(w^Tx_i+b)]-\sum_i^m\mu_i\xi_i
L\mathcal{L}对于w,b,ξw,b,\xi同样是convex的函数,同样我们对这三个变量进行求导。
Lw=wimλiyixi=0Lb=imλiyi=0Lξi=Cμiλi=0 \begin{aligned} &\frac{\partial \mathcal{L}}{\partial w} = w-\sum_i^m\lambda_iy_ix_i=0 \\ &\frac{\partial \mathcal{L}}{\partial b} = \sum_i^m\lambda_iy_i = 0 \\ &\frac{\partial \mathcal{L}}{\partial \xi_i}=C-\mu_i-\lambda_i=0 \end{aligned}
将求导等于0的结果带回到对偶函数中,我们得到:
L=12imλiyixi2+Cimξi+imλiimλiξiimλiyixiTimλiyixiimλiyibimμiξi=Cimξi+imλi12imjmλiλjyiyjxiTxjimλiξiimμiξi=imλi12imjmλiλjyiyjxiTxj \begin{aligned} \mathcal{L} &= \frac{1}{2}\|\sum_i^m\lambda_iy_ix_i\|^2+C\sum_i^m\xi_i+\sum_i^m\lambda_i-\sum_i^m\lambda_i\xi_i-\sum_i^m\lambda_iy_ix_i^T\sum_i^m\lambda_iy_ix_i-\sum_i^m\lambda_iy_ib-\sum_i^m\mu_i\xi_i\\ &=C\sum_i^m\xi_i+\sum_i^m\lambda_i-\frac{1}{2}\sum_i^m\sum_j^m\lambda_i\lambda_jy_iy_jx_i^Tx_j-\sum_i^m\lambda_i\xi_i-\sum_i^m\mu_i\xi_i\\ &=\sum_i^m\lambda_i-\frac{1}{2}\sum_i^m\sum_j^m\lambda_i\lambda_jy_iy_jx_i^Tx_j \end{aligned}
那么此时对偶问题就可以描述为:
maximizi  imλi12imjmλiλjyiyjxiTxjs.t.  λi0, i=1,...,m  imλiyi=0  λiC \begin{aligned} \mathop{maximizi}&~~\sum_i^m\lambda_i-\frac{1}{2}\sum_i^m\sum_j^m\lambda_i\lambda_jy_iy_jx_i^Tx_j \\ s.t.&~~\lambda_i \geq 0, ~i=1,...,m \\ &~~\sum_i^m\lambda_iy_i=0 \\ &~~\lambda_i \leq C \end{aligned}
可以注意到的是,带有松弛变量的SVM和原始SVM的区别就在于,对于λi\lambda_i的值的限制不能大于C。


SVR的推导

原理

minimize  12w2+Cim(ξi+ξi), i=1,...,ms.t.  yiwTxibε+ξi, i=1,...,m  wTxi+byiε+ξi, i=1,...,m  ξi0, i=1,...,m  ξi0, i=1,...,m \begin{aligned} \mathop{minimize}&~~\frac{1}{2}\|w\|^2+C\sum_i^m(\xi_i+\xi_i^*),~i=1,...,m\\ s.t.&~~y_i-w^Tx_i-b\leq\varepsilon+\xi_i,~i=1,...,m \\ &~~w^Tx_i+b-y_i \leq \varepsilon+\xi_i^*,~i=1,...,m\\ &~~\xi_i\geq 0,~i=1,...,m\\ &~~\xi_i^* \geq 0,~i=1,...,m \end{aligned}
对偶函数
L(w,b,ξ,ξ)=infw,b,ξ,ξ12w2+Cim(ξi+ξi)+imλi(yiwTxibεξi)+imλi(wTxi+byiεξi)imμiξiimμiξi \begin{aligned} \mathcal{L}(w,b,\xi,\xi^*) = \inf_{w,b,\xi,\xi^*}&\frac{1}{2}\|w\|^2+C\sum_i^m(\xi_i+\xi_i^*)\\ &+\sum_i^m\lambda_i(y_i-w^Tx_i-b-\varepsilon-\xi_i)\\& +\sum_i^m\lambda_i^*(w^Tx_i+b-y_i-\varepsilon-\xi_i^*) \\ &-\sum_i^m\mu_i\xi_i-\sum_i^m\mu_i^*\xi_i^* \end{aligned}

求导
Lw=wim(λiλi)xi=0Lb=imλi+imλi=0Lξi()=Cλi()μi()=0 \begin{aligned} &\frac{\partial \mathcal{L}}{\partial w} = w-\sum_i^m(\lambda_i-\lambda_i^*)x_i=0 \\ &\frac{\partial \mathcal{L}}{\partial b} = -\sum_i^m\lambda_i+\sum_i^m\lambda_i^*=0 \\ &\frac{\partial \mathcal{L}}{\partial \xi_i^{(*)}} = C-\lambda_i^{(*)}-\mu_i^{(*)}=0\\ \end{aligned}
代入

maximize  12imjm(λiλi)(λjλj)xiTxj+im(λiλi)yiεim(λi+λi)s.t.  im(λiλi)=0  λi()C, i=1,...,m \begin{aligned} \mathop{maximize}&~~-\frac{1}{2}\sum_i^m\sum_j^m(\lambda_i-\lambda_i^*)(\lambda_j-\lambda_j^*)x_i^Tx_j+\sum_i^m(\lambda_i-\lambda_i^*)y_i-\varepsilon\sum_i^m(\lambda_i+\lambda_i^*) \\ s.t.&~~\sum_i^m(\lambda_i^*-\lambda_i)=0\\ &~~\lambda_i^{(*)} \leq C,~i=1,...,m \end{aligned}

展开阅读全文

没有更多推荐了,返回首页