支持向量机(Support Vector Machine,SVM)
支持向量机(Support Vector Machine,SVM)理论部分
SVM简介
SVM是由一个叫做Vapnik的前苏联人发明于70年代中期的算法。当时是冷战期间,欧美与苏联不互通,等到苏联解体后,Vapnik来到美国,才逐渐发表了自己的研究成果。
SVM是一个小样本的方法,其原因是超平面的选取只与支持向量有关(后面会说什么是超平面和支持向量)。
SVM有着严密的数学推导,因此SVM的可解释性很好。
SVM从如何划分线性可分(Linear Separable)的样本集出发,推广到如何划分线性不可分(Non-linear Separable)的样本集。
线性可分
SVM线性模型的说明
假设所有的样本可分为两类,“+”表示一类样本,“-”表示另一类样本,x1和x2为样本的俩个特征,将所有已知的这样的样本画出来,很明显,两类样本可以用一条直线分隔开,这样的样本集是线性可分的。
显然如果存在一条直线能将这样的样本集分开,那么一定存在无数条直线能将这样的样本集分开,如下图所示(周志华老师所著的西瓜书中的配图):
不论是通过直觉,还是理论证明,在上图中,显然是那条加粗的直线所达到的分类效果最好。这是因为这条线在两类样本的“最中间”处,所以它的抗噪声的能力最强,这样的线性模型鲁棒性最好。
为了唯一确定这条分类效果最好的直线,首先要定义一些名词用以描述这条直线。
对于每条能够将两类样本划分开的直线Li,将直线Li向两侧平移,直到与一个或多个样本点相交,把这些与平移后的Li相交的样本点称为支持向量(support vector),把两个异类的支持向量到直线Li的距离之和称为间隔(margin)。
显然,在所有的直线L中,间隔最大且支持向量到直线Li的距离为间隔的一半,这样的Li即为所求。
SVM线性模型的数学描述
在上文中,以二维的特征空间为例,说明了如何选取分类效果最好的直线。然而在实际问题中,特征可能有很多个,也就是说特征空间不再是二维,会是更多的维度。
在二维空间中,用一条直线l:w1x1+w2x2+b=0l:w_1x_1+w_2x_2+b=0l:w1x1+w2x2+b=0划分两类样本点,在三维空间中,用一个平面γ:w1x1+w2x2+w3x3+b=0\gamma:w_1x_1+w_2x_2+w_3x_3+b=0γ:w1x1+w2x2+w3x3+b=0划分两类样本点,在更高维的空间中,显然依然存在形如w1x1+w2x2+w3x3+⋯+wnxn+b=0w_1x_1+w_2x_2+w_3x_3+\cdots+w_nx_n+b=0w1x1+w2x2+w3x3+⋯+wnxn+b=0的方程能够划分两类样本点,人作为三维生物很难想象它具体的样子,因此称之为超平面(hyper plane)。
通过对点到直线距离公式的推广知,点到超平面的距离d为:
d=∣w1x1+w2x2+⋯+wnxn+b∣w12+w22+⋯+wn2d=\frac{|w_1x_1+w_2x_2+\cdots+w_nx_n+b|}{\,\sqrt{w_1^2+w_2^2+\cdots+w_n^2}\,}d=w12+w22+⋯+wn2∣w1x1+w2x2+⋯+wnxn+b∣
将w1∼wn与x1∼xnw_1\sim w_n与x_1\sim x_nw1∼wn与x1∼xn写成向量的形式,于是超平面的方程L可以简化为:
wTx+b=0w^Tx+b=0wTx+b=0
则点到超平面的距离d可简化为:
d=∣wTx+b∣∣∣w∣∣d=\frac{|w^Tx+b|}{||w||}d=∣∣w∣∣∣wTx+b∣
设在L之上的样本点的标签yi=+1y_i=+1yi=+1,在L之下的样本点的标签yi=−1y_i=-1yi=−1(后面会说明为什么是+1和-1而不是0和1或是其他的什么数),如果L能够将特征空间中所有的样本点分类正确,那么对于特征空间中的所有样本点都满足:
{wTxi+b≥0yi=+1wTxi+b<0yi=−1(1)\begin{cases} w^Tx_i+b\ge0 && {y_i=+1}\\ w^Tx_i+b<0 && {y_i=-1} \end{cases} \qquad(1) {wTxi+b≥0wTxi+b<0yi=+1yi=−1(1)
由于与超平面L距离最近的点是支持向量,设支持向量到超平面L的距离为r(r>0),则(1)可以写成:
{wTxi+b≥ryi=+1wTxi+b≤−ryi=−1(2)\begin{cases} w^Tx_i+b\ge r && {y_i=+1}\\ w^Tx_i+b\le-r && {y_i=-1} \end{cases} \qquad(2) {wTxi+b≥rwTxi+b≤−ryi=+1yi=−1(2)
在(2)中的不等式两边同时乘一个系数1/r,w和b放缩相同的倍数,超平面并不会发生改变,且不等式左侧的系数可以乘入到w和b中,因此有
{wTxi+b≥1yi=+1wTxi+b≤−1yi=−1(3)\begin{cases} w^Tx_i+b\ge1 && {y_i=+1}\\ w^Tx_i+b\le-1 && {y_i=-1} \end{cases} \qquad(3) {wTxi+b≥1wTxi+b≤−1yi=+1yi=−1(3)
显然,特征空间中的支持向量能使不等式(3)取等号,也就是说两个异类的支持向量到超平面的距离和为:
d=2∣∣w∣∣d=\frac{2} {||w||}d=∣∣w∣∣2
为了让间隔最大,只需让||w||最小,至此已经得出了线性模型的任务目标,不过为了计算方便,要对目标函数进行一定的调整。
最小化(Minimize):
12∣∣w∣∣2\frac{1}{2} ||w||^221∣∣w∣∣2限制条件(Subject to):
yi[wTxi+b]≥1,i=1∼kyi[w^Tx_i + b]\ge1,\quad i=1\sim kyi[wTxi+b]≥1,i=1∼k
对于目标函数,加平方是为了将其改造为二次规划问题,加上系数1/2是为了求导方便。
对于限制条件,由于在前面设yi的取值为+1和-1,因此可以将(3)简化写成如上的形式。
二次规划(Quadratic Programming)
二次规划问题是目标函数(Objective Function)是二次项,限制条件是一次项的优化问题。这种问题要么无解,要么只有一个极小值。
原问题(Prime Problem)
minxf(x)s.t.gi(x)≤0,i=1∼khi(x)=0,i=1∼m\begin{aligned} \min_x\quad&f(x)\\ s.t.\quad&g_i(x)\le 0,\quad i=1\sim k\\ &h_i(x)=0,\quad i=1\sim m \end{aligned} xmins.t.f(x)gi(x)≤0,i=1∼khi(x)=0,i=1∼m
这是一个普适的定义,通过修改正负号,给k、m设值,任何优化问题都可以写成上述形式,其中k、m至少有一个为0时,代表只有一个限制条件或者没有限制条件。
拉格朗日乘子法(Lagrange multiplier)
给定原问题,对原问题的每条约束条件添加拉格朗日乘子ai≥0a_i\ge0ai≥0和βi\beta_iβi,则该问题的拉格朗日函数可写成:
L(x,α,β)=f(x)+∑i=1kαigi(x)+∑i=1mβihi(x)L(x,\alpha,\beta)=f(x)+\sum_{i=1}^{k}\alpha_ig_i(x)+\sum_{i=1}^{m}\beta_ih_i(x)L(x,α,β)=f(x)+i=1∑kαigi(x)+i=1∑mβihi(x)s.t.αi≥0,i=1∼ks.t.\quad \alpha_i \ge0,\quad i=1\sim ks.t.αi≥0,i=1∼k
因为
αi≥0,gi(x)≤0,hi(x)=0\alpha_i\ge0,g_i(x)\le0,h_i(x)=0αi≥0,gi(x)≤0,hi(x)=0
所以原问题等价于:
minxmaxα,βL(x,α,β)\min_x\max_{\alpha,\beta}L(x,\alpha,\beta)xminα,βmaxL(x,α,β)s.t.α≥0s.t.\qquad \alpha\ge0s.t.α≥0
对偶问题(Dual Problem)
maxα,βminxL(x,α,β)\max_{\alpha,\beta}\min_{x}L(x,\alpha,\beta)α,βmaxxminL(x,α,β)s.t.α≥0s.t.\quad \alpha\ge0s.t.α≥0
其中,α≥0\alpha\ge0α≥0表示α\alphaα的每一个分量αi\alpha_iαi都大于等于0。
原问题与对偶问题的区别
原问题:自变量为x,每个x对应一个函数值,这个函数值是在当前x下,遍历所有的α\alphaα和β\betaβ后找到的最大值。函数目标是在这些最大值中找到最小的那个。
对偶问题:自变量为α\alphaα和β\betaβ,每个α\alphaα和β\betaβ对应一个函数值,这个函数值是在当前α\alphaα和β\betaβ下,遍历所有的x找到的最小值。函数目标是在这些最小值中找到最大的那一个。
因此,对偶问题是原问题的下界,即对偶问题的解小于等于原问题的解。
强对偶定理
若f(x)为凸函数,且g(x)=Ax+b,h(x)=Cx+b,则此优化问题的原问题与对偶问题的间距为0,即f(x∗)=θ(α∗,β∗)f(x^*)=\theta(\alpha^*,\beta^*)f(x∗)=θ(α∗,β∗),其中,x∗x^*x∗是原问题的解,α∗,β∗\alpha^*,\beta^*α∗,β∗是对偶问题的解,θ(α,β)\theta(\alpha,\beta)θ(α,β)为对偶问题的表达式,原问题与对偶问题的间距G=f(x∗)−θ(α∗,β∗)≥0G=f(x^*)-\theta(\alpha^*,\beta^*)\ge0G=f(x∗)−θ(α∗,β∗)≥0。
如果G为0,则意味着对任意的i=1~k,或者αi∗=0\alpha_i^*=0αi∗=0,或者gi∗(x∗)=0g_i^*(x^*)=0gi∗(x∗)=0(KKT条件)。
将SVM线性可分的原问题转化成对偶问题
在前文中,已经得出了线性模型的任务目标:
min12∣∣w∣∣2s.t.1−yi[wTxi+b]≤0(i=1∼k)\begin{aligned} \min\quad &\frac{1}{2} ||w||^2\\ s.t.\quad&1-yi[w^Tx_i + b]\le0 (i=1\sim k) \end{aligned} mins.t.21∣∣w∣∣21−yi[wTxi+b]≤0(i=1∼k)
它本身是一个凸二次规划问题,能直接用Quadratic Programming优化包求解。但存在更高效的办法。
对上式使用拉格朗日乘子法,得到:
L(w,b,α)=12∣∣w∣∣2+∑i=1kαi[1−yi(wTxi+b)]s.t.αi≥0,i=1∼k\begin{aligned} L(w,b,\alpha)=&\frac{1}{2} ||w||^2+\sum_{i=1}^{k}\alpha_i[1-yi(w^Tx_i + b)]\\ s.t.\quad&\alpha_i\ge0,\quad i=1\sim k \end{aligned} L(w,b,α)=s.t.21∣∣w∣∣2+i=1∑kαi[1−yi(wTxi+b)]αi≥0,i=1∼k
对照上面的L(x,α,β)=f(x)+∑i=1kαigi(x)+∑i=1mβihi(x)L(x,\alpha,\beta)=f(x)+\sum_{i=1}^{k}\alpha_ig_i(x)+\sum_{i=1}^{m}\beta_ih_i(x)L(x,α,β)=f(x)+∑i=1kαigi(x)+∑i=1mβihi(x),www和bbb相当于xxx,α\alphaα相当于α\alphaα,没有β\betaβ。
因为1−yi(wTxi+b)1-yi(w^Tx_i + b)1−yi(wTxi+b)是线性的,符合强对偶定理。因此可以通过求解对偶问题来获得原问题的解。
令L对www和b的偏导值为0,得:
w=∑i=1kαiyixi,0=∑i=1kαiyi\begin{aligned} w&=\sum_{i=1}^{k}\alpha_iy_ix_i,\\ 0&=\sum_{i=1}^{k}\alpha_iy_i \end{aligned} w0=i=1∑kαiyixi,=i=1∑kαiyi代回原式得:
maxα∑i=1kαi−12∑i=1k∑j=1kαiαjyiyjxiTxjs.t.∑i=1kαiyi=0αi≥0,i=1∼k(4)\begin{aligned} \max_\alpha\quad&\sum_{i=1}^{k}\alpha_i-\frac{1}{2}\sum_{i=1}^{k}\sum_{j=1}^{k}\alpha_i\alpha_jy_iy_jx_i^Tx_j\\ s.t.\quad&\sum_{i=1}^{k}\alpha_iy_i=0\\ &\alpha_i\ge0,\quad i=1\sim k \end{aligned}\quad(4) αmaxs.t.i=1∑kαi−21i=1∑kj=1∑kαiαjyiyjxiTxji=1∑kαiyi=0αi≥0,i=1∼k(4)
解出α\alphaα后,将w=∑i=1kαiyixiw=\sum_{i=1}^{k}\alpha_iy_ix_iw=∑i=1kαiyixi代入wTx+b=0w^Tx+b=0wTx+b=0中,得:
∑i=1kαiyixiTx+b=0(5)\sum_{i=1}^{k}\alpha_iy_ix_i^Tx+b=0\qquad(5)i=1∑kαiyixiTx+b=0(5)
式(5)即为最终确定的超平面,也就是训练得到的模型。
根据KKT条件,αi[1−yi(wTxi+b)]=0\alpha_i[1-yi(w^Tx_i + b)]=0αi[1−yi(wTxi+b)]=0。
也就是说或者αi=0\alpha_i=0αi=0,或者1−yi(wTxi+b)=01-yi(w^Tx_i + b)=01−yi(wTxi+b)=0,若前者为0,则第i个样本不会出现在(5)的求和中,也就不会对待求解的超平面产生影响;若后者为0,显然xix_ixi是一个支持向量。这意味着,训练模型时,只有支持向量会对模型参数产生影响,其他训练样本可以直接无视。
关于求解式(4),可以使用SMO算法。
关于式(5),αi\alpha_iαi已经使用SMO得出,yiy_iyi和xix_ixi为训练样本,只需将bbb也求出来即可完成训练。
线性不可分
升维
对于线性可分的样本集,可以找到一个超平面将之划分,对于线性不可分的样本集,显然是无解的(二次规划问题,要么只有一个极小值,要么无解)。为了让SVM能够处理线性不可分的样本集,首先要将原样本集投到更高维的空间中,投射后的样本集将会有更大的概率变得线性可分,若投到无限维的空间中,则一定变得线性可分。
核函数
然而,若将x经过映射函数φ(x)\varphi(x)φ(x)映射到无限维,式(4)将会变为:
maxα∑i=1kαi−12∑i=1k∑j=1kαiαjyiyjφ(xi)Tφ(xj)s.t.∑i=1kαiyi=0αi≥0,i=1∼k\begin{aligned} \max_\alpha\quad&\sum_{i=1}^{k}\alpha_i-\frac{1}{2}\sum_{i=1}^{k}\sum_{j=1}^{k}\alpha_i\alpha_jy_iy_j\varphi(x_i)^T\varphi(x_j)\\ s.t.\quad&\sum_{i=1}^{k}\alpha_iy_i=0\\ &\alpha_i\ge0,\quad i=1\sim k \end{aligned}\quad αmaxs.t.i=1∑kαi−21i=1∑kj=1∑kαiαjyiyjφ(xi)Tφ(xj)i=1∑kαiyi=0αi≥0,i=1∼k
显然,此优化函数将会变得不可解。
但实际上,其实并不需要知道φ(xi)\varphi(x_i)φ(xi)和φ(xj)\varphi(x_j)φ(xj)的具体值,也就是说,并不需要知道无限维映射φ(x)\varphi(x)φ(x)的显式表达式是什么,只需要知道一个核函数(Kernel Function)K(xi,xj)=φ(xi)Tφ(xj)K(x_i,x_j)=\varphi(x_i)^T\varphi(x_j)K(xi,xj)=φ(xi)Tφ(xj),这样,不仅能把原样本集映射到无限维,还能使式(4)依然可解。
常用的核函数:
线性核K(x1,x2)=x1Tx2多项式核K(x1,x2)=(x1Tx2+1)dd≥1为多项式的次数,d=1时为线性核高斯核K(x1,x2)=e−∣∣x1−x2∣∣22σ2σ>0为高斯核的带宽(width)拉普拉斯核K(x1,x2)=e−∣∣x1−x2∣∣σσ>0Sigmoid核K(x1,x2)=tanh(βx1Tx2+θ)β>0,θ<0\begin{aligned} 线性核\qquad K(x_1,x_2)=&x_1^Tx_2\\\\ 多项式核\qquad K(x_1,x_2)=&(x_1^Tx_2+1)^d\qquad &&d\ge1为多项式的次数,d=1时为线性核\\\\ 高斯核\qquad K(x_1,x_2)=&e^{-\frac{||x_1-x_2||^2}{2\sigma^2}}\qquad &&\sigma >0为高斯核的带宽(width)\\\\ 拉普拉斯核\qquad K(x_1,x_2)=&e^{-\frac{||x_1-x_2||}{\sigma}}\qquad &&\sigma>0\\\\ Sigmoid核\qquad K(x_1,x_2)=&tanh(\beta x_1^Tx_2+\theta)\qquad &&\beta>0,\theta<0 \end{aligned} 线性核K(x1,x2)=多项式核K(x1,x2)=高斯核K(x1,x2)=拉普拉斯核K(x1,x2)=Sigmoid核K(x1,x2)=x1Tx2(x1Tx2+1)de−2σ2∣∣x1−x2∣∣2e−σ∣∣x1−x2∣∣tanh(βx1Tx2+θ)d≥1为多项式的次数,d=1时为线性核σ>0为高斯核的带宽(width)σ>0β>0,θ<0
核函数还可以通过函数组合得到,两个核函数对于任意正数的线性组合、两个核函数的直积也是核函数,此外,若K1K_1K1为核函数,则对于任意函数g(x)g(x)g(x),K(x1,x2)=g(x1)K1(x1,x2)g(x2)K(x_1,x_2)=g(x_1)K_1(x_1,x_2)g(x_2)K(x1,x2)=g(x1)K1(x1,x2)g(x2)也是核函数。
修改待优化的目标函数
在前文中已经知道,超平面的选取标准是最大化支持向量与超平面的距离。其实以这种标准选取超平面的时候就已经默认了一件事,那就是训练样本集是线性可分的,对于线性不可分的训练样本,将之投到更高维的空间中,如果投到无限维的空间中,那将一定会变得线性可分,正是因为这一点,SVM才能对任何样本集都成立。
通过核函数的引入,使得无限维的映射φ(x)\varphi(x)φ(x)的显式表达式变得并不重要,优化问题也变得仍然可解。但这个前提是,找到合适的核函数,此外,就算找到了某个核函数使训练样本集在高维空间中线性可分也不能确保这个模型就是好的,因为它有可能发生了过拟合。
为了缓解这个问题,需要让超平面的选取不再那么严苛,也就是说允许训练样本集上的一些样本点分类错误,即允许有样本点不满足yi(wTxi+b)≥1y_i(w^Tx_i+b)\ge1yi(wTxi+b)≥1,显然,不满足约束的样本点越少越好,可以通过引入松弛变量的方式来达到这种效果,优化问题将被改写为:
minw,ξi12∣∣w∣∣2+C∑i=1kξi,C>0s.t.yi(wTxi+b)≥1−ξiξi≥0,i=1∼k(6)\begin{aligned} \min_{w,\xi_i}&\quad \frac{1}{2}||w||^2+C\sum_{i=1}^{k}\xi_i,\quad C>0\\ s.t.&\quad y_i(w^Tx_i+b)\ge1-\xi_i\\ &\quad \xi_i\ge0,\quad i=1\sim k \end{aligned}\qquad (6) w,ξimins.t.21∣∣w∣∣2+Ci=1∑kξi,C>0yi(wTxi+b)≥1−ξiξi≥0,i=1∼k(6)
在式(6)中可以看出,通过引入松弛变量,使得yi(wTxi+b)≥1y_i(w^Tx_i+b)\ge1yi(wTxi+b)≥1条件变得具有一定弹性。
将式(6)改造成原问题:
minw,ξi12∣∣w∣∣2−C∑i=1kξi,C>0s.t.1+ξi−yi(wTxi+b)≤0ξi≤0,i=1∼k(7)\begin{aligned} \min_{w,\xi_i}&\quad \frac{1}{2}||w||^2-C\sum_{i=1}^{k}\xi_i,\quad C>0\\ s.t.&\quad 1+\xi_i -y_i(w^Tx_i+b)\le0\\ &\quad \xi_i\le0,\quad i=1\sim k \end{aligned}\qquad(7) w,ξimins.t.21∣∣w∣∣2−Ci=1∑kξi,C>01+ξi−yi(wTxi+b)≤0ξi≤0,i=1∼k(7)
将SVM线性不可分的原问题转化成对偶问题
再将式(7)转化成对偶问题:
maxα,βminw,b,ξi12∣∣w∣∣2−C∑i=1kξi+∑i=1kβiξi+∑i=1kαi(1+ξi−yiwTxi−yib),C>0,αi≥0,βi≥0(8)\max_{\alpha,\beta}\min_{w,b,\xi_i}\frac{1}{2}||w||^2-C\sum_{i=1}^{k}\xi_i+\sum_{i=1}^{k}\beta_i\xi_i+\sum_{i=1}^{k}\alpha_i(1+\xi_i -y_iw^Tx_i-y_ib),\quad C>0,\alpha_i\ge0,\beta_i\ge0 \qquad(8)α,βmaxw,b,ξimin21∣∣w∣∣2−Ci=1∑kξi+i=1∑kβiξi+i=1∑kαi(1+ξi−yiwTxi−yib),C>0,αi≥0,βi≥0(8)
αi,βi\alpha_i,\beta_iαi,βi都大于等于0的原因是,此处的αi,βi\alpha_i,\beta_iαi,βi都相当于拉格朗日函数中的αi\alpha_iαi,由于在这个问题中没有形如hi(x)=0h_i(x)=0hi(x)=0的限制条件,因此没有相当于拉格朗日函数中βi\beta_iβi的系数存在,设内层求最小值的函数等于L,分别令L对w,b,ξiw,b,\xi_iw,b,ξi的偏导为0,有:
∂L∂w=0=>∑i=1kαiyixi=w∂L∂b=0=>∑i=1kαiyi=0∂L∂ξi=0=>αi+βi=C\begin{aligned} \frac{\partial L}{\partial w}=0& \quad=> \quad \sum_{i=1}^{k}\alpha_iy_ix_i=w\\\\ \frac{\partial L}{\partial b}=0& \quad=> \quad \sum_{i=1}^{k}\alpha_iy_i=0\\\\ \frac{\partial L}{\partial \xi_i}=0& \quad=> \quad \alpha_i+\beta_i=C \end{aligned} ∂w∂L=0∂b∂L=0∂ξi∂L=0=>i=1∑kαiyixi=w=>i=1∑kαiyi=0=>αi+βi=C
将上式代回原式中得到新的优化问题:
maxα∑i=1kαi−12∑i=1k∑j=1kαiαjyiyjxiTxjs.t.∑i=1kαiyi=00≤αi≤C\begin{aligned} \max_{\alpha}&\quad \sum_{i=1}^{k}\alpha_i-\frac{1}{2}\sum_{i=1}^{k} \sum_{j=1}^{k}\alpha_i\alpha_jy_iy_jx_i^Tx_j\\ s.t.&\quad \sum_{i=1}^{k}\alpha_iy_i=0\\ &\quad 0\le \alpha_i\le C \end{aligned} αmaxs.t.i=1∑kαi−21i=1∑kj=1∑kαiαjyiyjxiTxji=1∑kαiyi=00≤αi≤C
其中,要将xiTxjx_i^Tx_jxiTxj升维并通过核函数求解,因此,最终的优化问题为:
maxα∑i=1kαi−12∑i=1k∑j=1kαiαjyiyjK(xi,xj)s.t.∑i=1kαiyi=00≤αi≤C\begin{aligned} \max_{\alpha}&\quad \sum_{i=1}^{k}\alpha_i-\frac{1}{2}\sum_{i=1}^{k} \sum_{j=1}^{k}\alpha_i\alpha_jy_iy_jK(x_i,x_j)\\ s.t.&\quad \sum_{i=1}^{k}\alpha_iy_i=0\\ &\quad 0\le \alpha_i\le C \end{aligned} αmaxs.t.i=1∑kαi−21i=1∑kj=1∑kαiαjyiyjK(xi,xj)i=1∑kαiyi=00≤αi≤C
可见,加入松弛变量后,最终的优化问题与线性可分的优化问题的区别只有拉格朗日乘子aia_iai的取值范围变了。
回到(8)中
maxα,βminw,b,ξi12∣∣w∣∣2−C∑i=1kξi+∑i=1kβiξi+∑i=1kαi(1+ξi−yiwTxi−yib),C>0,αi≥0,βi≥0(8)\max_{\alpha,\beta}\min_{w,b,\xi_i}\frac{1}{2}||w||^2-C\sum_{i=1}^{k}\xi_i+\sum_{i=1}^{k}\beta_i\xi_i+\sum_{i=1}^{k}\alpha_i(1+\xi_i -y_iw^Tx_i-y_ib),\quad C>0,\alpha_i\ge0,\beta_i\ge0 \qquad(8)α,βmaxw,b,ξimin21∣∣w∣∣2−Ci=1∑kξi+i=1∑kβiξi+i=1∑kαi(1+ξi−yiwTxi−yib),C>0,αi≥0,βi≥0(8)
根据KKT条件:
βi,ξi\beta_i,\xi_iβi,ξi中必有一个为0;
αi,1+ξi−yiwTφ(xi)−yib\alpha_i,1+\xi_i-y_iw^T\varphi(x_i)-y_ibαi,1+ξi−yiwTφ(xi)−yib中必有一个为0。
若αi=0\alpha_i=0αi=0,则该样本xix_ixi不会对超平面产生影响;
若0<αi0<\alpha_i0<αi,则1+ξi−yiwTφ(xi)−yib=01+\xi_i-y_iw^T\varphi(x_i)-y_ib=01+ξi−yiwTφ(xi)−yib=0,即yi[wTφ(xi)+b]=1+ξiy_i[w^T\varphi(x_i)+b]=1+\xi_iyi[wTφ(xi)+b]=1+ξi,此时xix_ixi可能是一个支持向量;
根据已知条件αi+βi=C,C>0\alpha_i+\beta_i=C,C>0αi+βi=C,C>0,
若0<αi<C0<\alpha_i<C0<αi<C,则βi≠0\beta_i≠0βi=0则ξi=0\xi_i=0ξi=0,即该样本恰好落在最大间隔上,是一个支持向量;
若αi=C\alpha_i=Cαi=C,则βi=0\beta_i=0βi=0。若−1≤ξi<0-1\le\xi_i<0−1≤ξi<0,则该样本落在最大间隔的内部;若ξi<−1\xi_i<-1ξi<−1,则该样本分类错误。
由此可以看出,引入松弛变量前后的SVM都只与支持向量有关。
SVM训练&测试流程
训练流程
输入:{(xi,yi)},i=(1∼k)\{(x_i,y_i)\},i=(1\sim k){(xi,yi)},i=(1∼k)
解优化问题:
maxα∑i=1kαi−12∑i=1k∑j=1kαiαjyiyjK(xi,xj)s.t.0≤αi≤C∑i=1kαiyi=0\begin{aligned} \max_{\alpha}&\quad \sum_{i=1}^{k}\alpha_i-\frac{1}{2}\sum_{i=1}^{k}\sum_{j=1}^{k}\alpha_i\alpha_jy_iy_jK(x_i,x_j)\\ s.t.&\quad 0\le\alpha_i\le C\\ &\quad \sum_{i=1}^{k}\alpha_iy_i=0 \end{aligned} αmaxs.t.i=1∑kαi−21i=1∑kj=1∑kαiαjyiyjK(xi,xj)0≤αi≤Ci=1∑kαiyi=0
计算bbb,找一个0≤αi≤C0\le\alpha_i\le C0≤αi≤C
根据KKT条件有1−yiwTφ(xi)−yib=01-y_iw^T\varphi(x_i)-y_ib=01−yiwTφ(xi)−yib=0
又因为wT=∑j=1kαjyjφ(xj)Tw^T=\sum_{j=1}^{k}\alpha_jy_j\varphi(x_j)^TwT=∑j=1kαjyjφ(xj)T且φ(xj)Tφ(xi)=K(xj,xi)\varphi(x_j)^T\varphi(x_i)=K(x_j,x_i)φ(xj)Tφ(xi)=K(xj,xi)
所以b=1−yi∑j=1kαjyjK(xj,xi)yib=\frac{1-y_i\sum_{j=1}^{k}\alpha_jy_jK(x_j,x_i)}{y_i}b=yi1−yi∑j=1kαjyjK(xj,xi)
测试流程
输入测试样本x,
{若∑i=1kαiyiK(xi,x)+b≥0,则y=+1若∑i=1kαiyiK(xi,x)+b<0,则y=−1\begin{cases} 若\sum_{i=1}^{k}\alpha_iy_iK(x_i,x)+b\ge0,\quad则y=+1\\\\ 若\sum_{i=1}^{k}\alpha_iy_iK(x_i,x)+b<0,\quad则y=-1 \end{cases} ⎩⎪⎨⎪⎧若∑i=1kαiyiK(xi,x)+b≥0,则y=+1若∑i=1kαiyiK(xi,x)+b<0,则y=−1
支持向量机(Support Vector Machine,SVM)相关推荐
- 支持向量机(support vector machine)(SVM)(1)
背景 对于两类问题,给定数据,使用线性函数,如何分类? 方案1(只看黑色分界线,红色不用管) 方案2(只看黑色分界线,红色不用管) 哪一个更好? 第二个好,将两类数据分得更开,而且: 建模 有了目标之 ...
- 详解支持向量机(Support Vector Machine, SVM)
接触支持向量机(Support Vector Machine, SVM)有很长一段时间了,对它的原理一直懵懵懂懂.有幸在国科大听了兰艳艳老师的课,对SVM有了更加深入的认识,决定写成笔记记录下来,当作 ...
- [机器学习] 分类 --- Support Vector Machine (SVM)
1. 基本概念 支持向量机(Support Vector Machine, SVM)的基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大.SVM是用来解决二分类问题的有监督学习算法 ...
- 【翻译论文】An Architecture Combining Convolutional Neural Network (CNN) and Support Vector Machine (SVM)
[翻译论文]An Architecture Combining Convolutional Neural Network (CNN) and Support Vector Machine (SVM) ...
- OpenCV3.3中支持向量机(Support Vector Machines, SVM)实现简介及使用
OpenCV 3.3中给出了支持向量机(Support Vector Machines)的实现,即cv::ml::SVM类,此类的声明在include/opencv2/ml.hpp文件中,实现在mod ...
- 【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本次笔记补充视频 BV1JE411g7XF 的缺失部分.在另一个UP主上传的2017课程BV13x411v7U ...
- 支持向量机(Support Vector Machine, SVM)基础知识
这篇文章仅介绍支持向量机的基础知识,不涉及特别复杂的求解.不清楚基础知识的小伙伴可以看一下这篇文章. 首先呢,支持向量机解决的是将数据点分成两类的问题.本文只考虑线性分类器.对于二维的数据而言,就是要 ...
- 李宏毅机器学习笔记(2016年的课程):Support Vector Machine (SVM)
目录 1. 各种loss函数 2.线性SVM 3.kernel 3.1 前言 3.2 各种 kernel 3.3 kernel VS 神经网络 1. 各种loss函数 f = np.arange(-3 ...
- 西瓜书+实战+吴恩达机器学习(十)监督学习之支持向量机 Support Vector Machine
文章目录 0. 前言 1. 拉格朗日乘子法 2. SVM参数求解方法 3. 软间隔 4. 核方法 5. 支持向量回归 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前 ...
- 机器学习中的数学基础(4.1):支持向量机Support Vector Machine(SVM)
SVM可以说是一个很经典的二分类问题,属于有监督学习算法的一种.看过那么多的博客知乎解释SVM我一定要自己总结一篇,加深一下自己的理解. 带着问题去读文章会发现,柳暗花明又一村,瞬间李敏浩出现在眼前的 ...
最新文章
- js实现点击li标签弹出其索引值
- 研华物联网论坛和ARM技术研讨会随笔
- 源码篇——AsyncTask机制
- 对集合使用Comparator
- SpringMVC教程--Validation校验
- 2022版中国钕铁硼行业竞争格局与产销潜力预测报告
- Linux 下配置 phpredis 的过程和遇到的问题
- ubuntu系统配置nijia_在Debian系统中使用backupninja定制备份计划的教程
- 没有内存条电脑能开机吗_开机键过时了!3种电脑开机方法,能让你睡懒觉的技术还不快来学...
- Oracle 10g RAC Installer 故障之--Oracle软件安装无法发现集群
- 基于HiKariCP组件,分析连接池原理
- 友源社区APP论坛源码+网站源码
- 山西民生云养老认证人脸识别_民生山西APP公众号手机认证
- 2019牛客多校 Round2
- IOS多线程管理1关于多线程你必须知道的二三事
- 火狐中国区linux无法同步,教大家火狐浏览器同步数据失败的几点原因
- oracle 中的Ipad()函数
- 笔记本固态硬盘大容量升级系统迁移(三天时间亲自实践,避坑专用)
- php开启websocket服务,php实现简单的websocket服务
- PS学习(一)文档的新建,分辨率的设置