支持向量机(SVM)——斯坦福CS229机器学习个人总结(三)

本文详细介绍了支持向量机(SVM)的基本概念,包括函数间隔、几何间隔、最优间隔分类器,并深入探讨了SVM的对偶问题、核函数和SMO算法。通过引入核函数解决线性不可分问题,以及软间隔分类器处理噪声数据。SVM的优化和求解过程,包括坐标上升法和SMO算法的求解思路,为理解SVM的实现提供了全面的解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

鉴于我刚开始学习支持向量机(Support vector machines,简称SVM)时的一脸懵逼,我认为有必要先给出一些SVM的定义。

下面是一个最简单的SVM:

![图一](https://img-blog.youkuaiyun.com/20170416102848608?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图一
  • 分类算法:支持向量机(SVM)是一个分类算法(机器学习中经常把算法称为一个“机器”),它的目标是找到图中实线所表示的决策边界,也称为超平面(Hyperplane)
  • 支持向量(Support vectors):支持向量就是图中虚线穿过的数据点(两个×与一个O),直观上来看,它们确定了超平面的位置——超平面与过同一类的两个支持向量(两个×)的直线平行,并且两类支持向量到超平面的距离相等
  • 与logistic回归的对比:SVM与logistic回归用的是相同的模型,但是处理方式不一样——logistic回归用概率的方式求解模型(最大似然估计),SVM从几何的角度解析;另外在logistic回归中,每一个数据点都会对分类平面产生影响,在SVM中它却只关注支持向量(如果支持向量无变化,增加或者删除一些远处的数据点,产生的超平面还是一样的)——所以产生了这两个不同的算法,但是它们还是比较相似的

明明是SVM算法却在这里提到logistic回归模型是为了作为源头引出SVM的推导,至于更深的背景,比如SVM被认为几乎是最好的监督学习啦,SVM是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的啦,SVM作为统计机器学习与传统机器学习的本质区别啦……目前的我还没有形成一个整体的、完善的认识,虽然下一份总结里就要说到学习理论与结构风险最小化,但是对于海面之下的冰山,我暂时还没法看到。在这里我只是想老老实实地把SVM从推导,到转换与优化,到最后求解的过程做一个总结写下来。

还需要说明的是,图一是最简单的SVM,它是线性可分的,并且从图一上来看它是没有噪点的,第一章“SVM的推导”可以把这个漂亮的线性可分的模型推导出来。
但是实际的情况不可能这么完美。当数据线性不可分的时候,我们需要引入核函数在更高维的空间里去寻找这个超平面(数据在更高维的空间里会更加线性可分);当噪点存在的时候,我们引入软间隔分类器,这时候在支持向量附近,允许有一些噪点被分错,即允许误差的存在。而这两点都是在将目标函数转化为对偶问题之后实现的。这些都会在第二章“SVM转换与优化”中介绍。

1、SVM的推导

1.1、起源

SVM与logistic回归使用了相同的模型,现在让我们来回顾一下熟悉的logistic回归模型:
hθ(x)=g(θTx)=11+e−θTx(1)h_\theta(x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}}\tag{1}hθ(x)=g(θTx)=1+eθTx1(1)
其中:
g(z)=11+e−z(2)g(z)=\frac{1}{1+e^{-z}}\tag{2}g(z)=1+ez1(2)
并且其图像如下图:

![这里写图片描述](https://img-blog.youkuaiyun.com/20170416141234979?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图二
图像的输出是“分类结果$g(z)$是1的**概率**”,它的取值范围是$(0,1)$,一般来说以0.5为界,当$g(z)$是1的概率大于0.5的时候,把$x$分类为1,当$g(z)$是1的概率小于0.5的时候,把$x$分类为0,这样,虽然它的直接输出是$(0,1)$之间的概率,却有感知器那样的分类效果。 同时可以看到当$z$在0附近时,输出概率在0.5附件徘徊,而且比较敏感,但是当$z=\theta^Tx>>0$时它的输出很接近1,当$z=\theta^Tx<<0$时它的输出很接近0。所以如果我们能够让$z>>0$或者$z<<0$,我们就会更加确信这个样本被正确分类了。 换句话说,如果把$z=0$这条直线当做决策边界,那么数据点$z$距离这条直线越远,就越不可能被分错。 SVM就是从几何的角度,在这方面下功夫的。

下面是在logistic回归模型下,因为SVM这个算法的特点而引起的符号改变:
y=hθ(x)=g(θTx)=g(wTx+b)=hw,b(x)(3)y=h_\theta(x)=g(\theta^Tx)=g(w^Tx+b)=h_{w,b}(x)\tag{3}y=hθ(x)=g(θTx)=g(wTx+b)=hw,b(x)(3)
直观点的改变是:
θTx=θ0+θ1x1+θ2x2+⋯+θnxn=b+w1x1+w2x2+⋯+wnxn=wTx+b(4)\theta^Tx=\theta_0+\theta_1x_1+\theta_2x_2+\cdots+\theta_nx_n=b+w_1x_1+w_2x_2+\cdots+w_nx_n=w^Tx+b\tag{4}θTx=θ0+θ1x1+θ2x2++θnxn=b+w1x1+w2x2++wnxn=wTx+b(4)
截距b就是截距θ0\theta_0θ0,向量www就是除了θ0\theta_0θ0外,剩下的向量θ\thetaθ,而且这里的向量xxx应该是差了一个x0=1x_0=1x0=1xθ,θ∈Rn+1x_\theta,\theta \in R^{n+1}xθ,θRn+1xw,w∈Rnx_w,w \in R^{n}xw,wRn),但是不影响…它们表达的意思是一样的,只是换了些符号而已。
另外,这里的g(z)g(z)g(z)不再是式(2)中的形式,而是:
Expected node of symbol group type, but got node of type cr
恩…长得很像感知器。
式(3)与式(5)就是SVM模型了,参数是θ\thetaθbbb,当这两个参数确定了,我们就可以做出分类超平面,对数据进行分类。

对同一个模型,logistic模型用概率的方式求解,下面就要引入函数间隔与几何间隔来从几何的角度来解析SVM了。

1.2、函数间隔(Functional margins)与几何间隔(Geometric margins)

给定一个训练样本(x(i),y(i))(x^{(i)},y^{(i)})(x(i),y(i)),我们将其函数间隔定义为:
γ^(i)=y(i)(wTx(i)+b)(6) \hat{\gamma}^{(i)}=y^{(i)}(w^Tx^{(i)}+b)\tag{6} γ^(i)=y(i)(wTx(i)+b)(6)
函数间隔的作用有两个。
一个是确认样本点有没有被正确分类
由式(3)与式(5)可以知道,y(i)y^{(i)}y(i)的取值为{1,−11,-11,1},那么在w,bw,bw,b确定了,并且样本被正确分类的情况下,wTx+bw^Tx+bwTx+by(i)y^{(i)}y(i)是同号的,即γ^(i)=∣(wTx+b)∣\hat{\gamma}^{(i)}=\left|(w^Tx+b)\right|γ^(i)=(wTx+b),所以当函数间隔γ^(i)>0\hat{\gamma}^{(i)}>0γ^(i)>0,即γ^(i)\hat{\gamma}^{(i)}γ^(i)是正数的时候,我们就认为这个点被正确地分类了(错误分类时γ^(i)<0\hat{\gamma}^{(i)}<0γ^(i)<0)。
另一个是衡量该样本点被正确分类的确信度
在起源中由sigmoid函数g(z)g(z)g(z)我们注意到,一个点离超平面越远,其输出就越接近1,同样地,γ^(i)\hat{\gamma}^{(i)}γ^(i)越大,这个样本被分对的也确信度越大。

进一步地,相比只有一个训练样本的情况,如果给定一个训练集S=S=S={(x(i),y(i);i=1,2,⋯ ,m)(x^{(i)},y^{(i)};i=1,2,\cdots,m)(x(i),y(i);i=1,2,,m)},那么整个训练集合的函数间隔为:
γ^=min⁡i=1,2,⋯ ,mγ^(i)(7) \hat{\gamma}=\min_{i=1,2,\cdots,m} \hat{\gamma}^{(i)}\tag{7} γ^=i=1,2,,mminγ^(i)(7)

有了函数间隔我们就可以去选择超平面了,在判断数据点有没有被正确分类这一点上,函数间隔没有问题。当所有样本点的函数间隔都是正数的时候,它们就全都被正确分类了(在这里讨论的是数据集线性可分的情况,如图一所示)。
需要注意的是,此时的超平面不一定就是最优的,所以我们还要最大化其被分类正确的确信度,这时候就需要依赖到函数间隔的第二个作用了。

但是在使得确信度最大这一点上,函数间隔却存在着缺陷。我们希望在样本点全部被正确分类的前提下,它们被分对的确信度最大,即让γ^\hat{\gamma}γ^尽可能地大(这与式(7)中选取最小(即确信度最小)的γ^(i)\hat{\gamma}^{(i)}γ^(i)来作为整个训练集的函数间隔γ^\hat{\gamma}γ^并不矛盾,还有点在确立最大下界的意思)。
可是我们发现,只要成比例地改变wwwbbb,比如把它们变成2w2w2w2b2b2b,超平面并没有发生改变,但是函数间隔γ^\hat{\gamma}γ^却变成了原来的两倍,这意味着,我们可以成比例地增大wwwbbb,使得函数间隔γ^\hat{\gamma}γ^变得无限大。这显然没有意义,因为超平面的位置并没有发生改变。

这时候就轮到几何间隔出场了,它是增加了约束的函数间隔,使函数间隔变得唯一,用符号γ\gammaγ表示。
直观上来看几何间隔是样本点到超平面的距离
此时改变几何间隔就能够移动超平面,同时几何间隔仍然能反映样本被正确分类的确信度,所以对几何间隔的最大化,就是对超平面的最优化。

下面我们借助图三来寻找几何间隔:

![这里写图片描述](https://img-blog.youkuaiyun.com/20170416222332023?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图三
设点B是向量$x$,点B在超平面上,点A为样本点向量$x^{(i)}$。 因为点A与点B在法向量$w$上的距离就是几何间隔$\gamma^{(i)}$,所以我们有: $$x^{(i)}-\gamma^{(i)}\frac{w}{\left \| w \right \|}=x\tag{8}$$ 因为$\gamma^{(i)}$只是一个距离常量,所以需要乘上法向量$w$的单位向量$ \frac{w}{\left \| w \right \| }$($\left \| w \right \|$是向量$w$的长度,$\left \| w \right \|=\sqrt{w_1^2+w_2^2+w_3^2+\cdots+w_n^2+}$),才能在向量间直接做加减。 因为点B在超平面上,所以我们有: $$w^Tx+b=w^T(x^{(i)}-\gamma^{(i)}\frac{w}{\left \| w \right \|})+b=0\tag{9}$$ 对式(9)进行求解即可得到几何间隔的形式化定义: $$\gamma^{(i)}=\frac{w^Tx^{(i)}+b}{\left \| w \right \|}= (\frac{w}{\left \| w \right \|})^Tx^{(i)}+\frac{b}{\left \| w \right \|} \tag{10}$$ 这是样本点在正侧的情形,如果样本点在负的一侧,那就是: $$\gamma^{(i)}= -((\frac{w}{\left \| w \right \|})^Tx^{(i)}+\frac{b}{\left \| w \right \|} )\tag{11}$$ 所以为使公式一般化,几何间隔如下表示: $$\gamma^{(i)}= y^{(i)}((\frac{w}{\left \| w \right \|})^Tx^{(i)}+\frac{b}{\left \| w \right \|} )\tag{12}$$ 几何间隔与函数间隔的关系是: $$\gamma^{(i)}= \frac{\hat{\gamma}^{(i)}}{\left \| w \right \|}\tag{13}$$ 所以说几何间隔是增加了约束的函数间隔,是对函数间隔的完善,这时如果成比例地改变$w$与$b$,几何间隔是不会改变的。

类似地,相比只有一个训练样本的情况,如果给定一个训练集S=S=S={(x(i),y(i);i=1,2,⋯ ,m)(x^{(i)},y^{(i)};i=1,2,\cdots,m)(x(i),y(i);i=1,2,,m)},那么整个训练集合的几何间隔为:
γ=min⁡i=1,2,⋯ ,mγ(i)(14) \gamma=\min_{i=1,2,\cdots,m}\gamma^{(i)}\tag{14} γ=i=1,2,,mminγ(i)(14)

1.3、最优间隔分类器(The optimal margin classifier)

有了几何间隔,我们就可以确定最优超平面的位置,即最优间隔分类器了:
\begin{align}
&\max_{\gamma,w,b} \quad \gamma\
&s.t. \quad y^{(i)}((\frac{w}{\left | w \right |})Tx{(i)}+\frac{b}{\left | w \right |} )\geq\gamma,\quad i=1,2,\cdots,m
\tag{15}
\end{align}
把图一再贴上来一次,并且默认上方的叉叉为正实例,下方的圈圈为负实例:

![图一](https://img-blog.youkuaiyun.com/20170416102848608?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
为什么说满足了式(15)的超平面就是最优间隔分类器,即图中的实线? 首先,在**正确分类**的情况下,我们要承认**几何间隔$\gamma$是正数**(如果$\gamma$是负数,证明分类都不正确,那就没有讨论下去的必要了,更不用提什么最优),所以如果每个样本点都服从了式(15)中$y^{(i)}((\frac{w}{\left \| w \right \|})^Tx^{(i)}+\frac{b}{\left \| w \right \|} )\geq\gamma$这个式子,那么我们就可以认为“所有样本点的几何间隔都大于一个正数”,即这些样本点都被正确分类了。这正是函数间隔的第一个作用。于是在这个前提下,我们发现超平面只能画在图一的两条虚线即支持向量之间,而且要跟虚线平行。

其次,我们来考虑最优的问题。虽说确定了超平面一定在两条虚线之间,但是那里面仍然有无数个超平面,如何确定最优?
综合几何间隔与函数间隔的第二个作用,我们有这样的结论:“几何间隔越大,样本被正确分类的确信度越大”,当式(15)中max⁡γ,w,bγ\max_{\gamma,w,b} \quad \gammamaxγ,w,bγ这个式子满足的时候,我们发现超平面正好处于两条虚线的中线位置,它也是我们直观上能想象到的最好的位置了。为什么这么巧?
直观上来说,支持向量是最靠近超平面的存在,所以由式(14)可以知道,支持向量的几何间隔,就是整个样本集的几何间隔,因为其它的点离超平面更远,不在考虑范围之内了。
我们可以想象一下这条实线(超平面)沿着平行的方向上下移动,举个极端的例子,超平面移动到支持向量上,与某一条虚线重合了,这时候所有样本点也是分类正确的,但是此时的几何间隔γ=0\gamma =0γ=0,它是不满足“几何间隔最大”这个要求的,然后我们慢慢将超平面从虚线向另一侧的虚线移动,每移动一分几何间隔γ\gammaγ就增大一分,直到达到中线的位置,支持向量到超平面的距离相等,γ\gammaγ才达到最大,超平面达到最优(如果超平面继续向另一侧虚线移动,γ\gammaγ又会变小)。

解释了这么多是为了说明,满足了式(15)的参数w,bw,bw,b可以确定最优超平面,所以它就是我们的目标函数了。那是不是就可以开始对式(15)进行求解了,求解得到了w,bw,bw,b,SVM的工作就完成了。

嗯,是的,求解得到w,bw,bw,b,SVM的工作就完成了。但是,工作还没有开始。因为这个样子的目标函数没法求解,或者直接求解难度太大,因为它不是一个凸函数,没法用常规的梯度下降或者牛顿法求解。目前的我也不知道如果不用讲义上给的方法,还有没有别的方法可以手动求解。所以,按着给出的方法接着往下走吧。

由函数间隔与几何间隔的关系γ(i)=γ^(i)∥w∥\gamma^{(i)}= \frac{\hat{\gamma}^{(i)}}{\left \| w \right \|}γ(i)=wγ^(i),我们可以对 式(15)进行如下的改写:
\begin{align}
&\max_{\hat{\gamma},w,b} \quad \frac{\hat{\gamma}}{\left | w \right |}\
&s.t. \quad y{(i)}(wTx^{(i)}+b )\geq\hat{\gamma},\quad i=1,2,\cdots,m
\tag{16}
\end{align}
因为函数间隔的改变不影响超平面的位置,所以为了进一步化简目标函数,我们给函数间隔一个约束γ^=1\hat{\gamma}=1γ^=1使其变得唯一,此时γ^∥w∥=1∥w∥\frac{\hat{\gamma}}{\left \| w \right \|}=\frac{1}{\left \| w \right \|}wγ^=w1,又因为最大化1∥w∥\frac{1}{\left \| w \right \|}w1与最小化12∥w∥2\frac{1}{2}\left \| w \right \|^221w2是一样的,所以有:
\begin{align}
&\min_{\gamma,w,b} \quad \frac{1}{2}\left | w \right |^2\
&subject \ to \quad y{(i)}(wTx^{(i)}+b )\geq1,\quad i=1,2,\cdots,m
\tag{17}
\end{align}
这样,目标函数就变成式(17)的样子了,接下来就可以对这个函数进行求解了。

2、SVM的转换与优化

2.1、SVM转换——引入拉格朗日对偶与KKT条件

2.1.1、目标函数转化为原始问题(Primal problem)

现在,我们将目标函数式(17)改写一下 :
\begin{align}
令\quad f(w)&= \frac{1}{2}\left | w \right |^2\
令 \quad g(w_i)&= -y{(i)}(wTx^{(i)}+b )+1\leq0
\tag{18}
\end{align}
然后引入拉格朗日乘子(Lagrange multipliers)αi≥0(i=1,2,⋯ ,n)\alpha_i\geq0(i=1,2,\cdots,n)αi0(i=1,2,,n)得到如下原始问题
\begin{align}
&\quad\min_{w,b} \max_{\alpha\geq0} (\frac{1}{2}\left | w \right |2-\sum_{i=1}m \alpha_i[y{(i)}(wTx^{(i)}+b )-1])\
&=\min_{w,b} \max_{\alpha\geq0} (f(w)+\sum_{i=1}^m \alpha_ig(w_i))\
&=\min_{w,b} \max_{\alpha\geq0} L(w,b,\alpha)\
&=\min_{w,b}\theta_p(w)
\tag{19}
\end{align}
下标ppp被称为原始问题,即:
\begin{align}
\theta_p(w)=\max_{\alpha\geq0} L(w,b,\alpha)=\max_{\alpha\geq0}(f(w)+\sum_{i=1}^m \alpha_ig(w_i))=\max_{\alpha\geq0}(\frac{1}{2}\left | w \right |2-\sum_{i=1}m \alpha_i[y{(i)}(wTx^{(i)}+b )-1])
\tag{20}
\end{align}
虽然很突兀,式(19)与式(17)是等价的。这是因为有被称为栅栏(Barrier)的带有拉格朗日乘子的那个加项max⁡α≥0∑i=1mαig(wi)\max_{\alpha\geq0}\sum_{i=1}^m \alpha_ig(w_i)maxα0i=1mαig(wi)的存在,它的作用是将不可行域的www排除掉,只留下了可行域内的www,式(19)与式(17)一样,都表达了“在y(i)(wTx(i)+b)≥1(即g(wi)=≤0)y^{(i)}(w^Tx^{(i)}+b )\geq1(即g(w_i)=\leq0)y(i)(wTx(i)+b)1(g(wi)=≤0)的约束下,对12∥w∥2(即f(w))求最小值\frac{1}{2}\left \| w \right \|^2 (即f(w))求最小值21w2(f(w))求最小值”的意思。
我们先来考虑
不可行域
的情况。
不可行域指的是不满足约束y(i)(wTx(i)+b)≥1y^{(i)}(w^Tx^{(i)}+b )\geq1y(i)(wTx(i)+b)1www,此时y(i)(wTx(i)+b)<1y^{(i)}(w^Tx^{(i)}+b )<1y(i)(wTx(i)+b)<1,即g(wi)>0g(w_i)>0g(wi)>0。然后我们看向max⁡α≥0∑i=1mαig(wi)\max_{\alpha\geq0}\sum_{i=1}^m \alpha_ig(w_i)maxα0i=1mαig(wi)这个加项,因为α≥0\alpha\geq0α0g(wi)>0g(w_i)>0g(wi)>0,所以此时求最大值是没有意义的,它的最大值就是无限大。
再来考虑可行域的情况。
可行域就是y(i)(wTx(i)+b)≥1y^{(i)}(w^Tx^{(i)}+b )\geq1y(i)(wTx(i)+b)1这个区域,此时g(wi)≤0g(w_i)\leq0g(wi)0。同样地,对∑i=1mαig(wi)\sum_{i=1}^m \alpha_ig(w_i)i=1mαig(wi)求最大值,此时的条件是α≥0\alpha\geq0α0g(wi)≤0g(w_i)\leq0g(wi)0,明显地,最大值为0。
所以在可行域下有:
\begin{align}
\theta_p(w)=\max_{\alpha\geq0}(f(w)+\sum_{i=1}^m \alpha_ig(w_i))=\max_{\alpha\geq0}f(w)+\max_{\alpha\geq0}\sum_{i=1}^m \alpha_ig(w_i)=\max_{\alpha\geq0}f(w)+0=f(w)
\tag{21}
\end{align}
结合起来就是:
Expected node of symbol group type, but got node of type cr
所以引入了拉格朗日乘子的原始问题式(19)min⁡w,bθp(w)\min_{w,b}\theta_p(w)minw,bθp(w)与目标函数式(17)是等价的:
Expected node of symbol group type, but got node of type cr

2.1.2、原始问题与对偶问题(Dual problem)的关系

对于原始问题有:
\begin{align}
\min_{w,b}\theta_p(w,b)&=\min_{w,b}\max_{\alpha\geq0} L(w,b,\alpha)\
\theta_p(w,b)&=\max_{\alpha\geq0} L(w,b,\alpha)
\tag{24}
\end{align}
下标DDD被称为对偶问题,在上式中将min⁡w,b\min_{w,b}minw,bmax⁡α≥0\max_{\alpha\geq0}maxα0的顺序交换一下就变成了对偶问题:
\begin{align}
\max_{\alpha\geq0} \theta_D(\alpha)&=\max_{\alpha\geq0}\min_{w,b} L(w,b,\alpha)\
\theta_D(\alpha)&=\min_{w,b} L(w,b,\alpha)
\tag{25}
\end{align}

弱对偶性(Weak duality)

对于一对原始问题与对偶问题,如果它们都存在最优解,并且分别将其表示为p∗=min⁡w,bθp(w,b)p^*=\min_{w,b}\theta_p(w,b)p=minw,bθp(w,b)d∗=max⁡α≥0θD(α)d^*=\max_{\alpha\geq0}\theta_D(\alpha)d=maxα0θD(α),那么它们必定有如下关系:
d∗≤p∗(26)d^*\leq p^*\tag{26}dp(26)
这被称为弱对偶性。有如下证明:
\begin{align}
\theta_D(\alpha)=\min_{w,b} L(w,b,\alpha)\leq L(w,b,\alpha)&\leq \max_{\alpha\geq0} L(w,b,\alpha)=\theta_p(w,b)\
\Longrightarrow \theta_D(\alpha)&\leq\theta_p(w,b)
\tag{27}
\end{align}
也可以这么理解:
max⁡y∈{0,1}(min⁡x∈{0,1}I{x=y})⏟0≤min⁡x∈{0,1}(max⁡y∈{0,1}I{x=y})⏟1\max_{y\in\begin{Bmatrix} 0,1 \end{Bmatrix}}\underbrace{(\min_{x\in\begin{Bmatrix} 0,1 \end{Bmatrix}}I\begin{Bmatrix} x=y \end{Bmatrix})}_0 \leq\min_{x\in\begin{Bmatrix} 0,1 \end{Bmatrix}}\underbrace{(\max_{y\in\begin{Bmatrix} 0,1 \end{Bmatrix}}I\begin{Bmatrix} x=y \end{Bmatrix})}_1y{0,1}max0(x{0,1}minI{x=y})x{0,1}min1(y{0,1}maxI{x=y})
因为它们都有最优解,所以有:
\begin{align}
d^=\max_{\alpha\geq0}\theta_D(\alpha)&\leq \min_{w,b}\theta_p(w,b)=p^\
\Longrightarrow d^&\leq p^
\tag{28}
\end{align}

强对偶性(Strong duality)

对于一对原始问题与对偶问题,w∗,b∗w^*,b^*w,b是原始问题的解,α∗\alpha^*α是对偶问题的解,并且它们满足KKT条件,有d∗=p∗d^*= p^*d=p。这被称为强对偶性,此时可以通过求解对偶问题得到原始问题的解。
KKT条件如下:
\begin{align}
拉格朗日平稳(Stationarity):\qquad \nabla_{w_i} L(w*,b,\alpha^)&=0,\qquad i=1,2,\cdots,n\
\nabla_{b_i} L(w*,b,\alpha^)&=0,\qquad i=1,2,\cdots,l
\tag{29}
\end{align}

\begin{align}
互补松弛(Complementary \ slackness):\qquad \alpha*_ig_i(w*)=0,\qquad i=1,2,\cdots,k\
\tag{30}
\end{align}

\begin{align}
原始可行性(Primal \ feasibility):\qquad g_i(w^*)\leq 0,\qquad i=1,2,\cdots,k\
\tag{31}
\end{align}

\begin{align}
对偶可行性(Dual \ feasibility):\qquad \alpha^*\geq0,\qquad i=1,2,\cdots,k\
\tag{32}
\end{align}
互补松弛其实已经包含了原始可行性与对偶可行性。
gi(w∗)<0g_i(w^*)< 0gi(w)<0,只有当α∗=0\alpha^*=0α=0,互补松弛才成立;
α∗>0\alpha^*> 0α>0,只有当gi(w∗)=0g_i(w^*)= 0gi(w)=0,互补松弛才成立。

我们的求解目标经历了以下转化:
\begin{align}
&\qquad 通过几何分析(几何间隔的意义)得到式(15)最初始的目标函数\
&\Longrightarrow 通过几何间隔与函数间隔的关系与一些约束与手段,从式(15)得到常用的且较正规的目标函数式(17),此时它是一个凸函数\
&\Longrightarrow 引入拉格朗日算子将目标函数式(17)变成式(19)的原始问题\
&\Longrightarrow 每个原始问题都有对应的对偶问题,满足KKT条件后对偶问题的解与原始问题的解相等,可通过求解对偶问题式(25)来获得原始问题式(19)的解
\end{align}
经过这一系列转化,结论就是,求解得到对偶问题的解之后,就能得到目标函数的参数w,bw,bw,b,获得最后的SVM分类函数。为什么要绕这么一大圈去求解对偶问题?
一是对偶问题往往比原始问题更容易求解,二是对偶问题有一些优良的结构,可以在内积中自然而然地引入核函数,进而推广到非线性分类问题,而且还可以用软间隔分类器来解决非线性问题。

2.1.3、对偶问题的初步求解

接下来讨论如何求解对偶问题。
回到式(25)的对偶问题:
\begin{align}
\max_{\alpha\geq0} \theta_D(\alpha)=\max_{\alpha\geq0}\min_{w,b} L(w,b,\alpha)
\end{align}
要求解得到最后的参数,对偶问题的求解方法分成两步。
第一步,min⁡w,bL(w,b,α)\min_{w,b} L(w,b,\alpha)minw,bL(w,b,α)。把α\alphaα当成常数,对w,bw,bw,bL(w,b,α)L(w,b,\alpha)L(w,b,α)的最小值,然后把用α\alphaα表示的w,bw,bw,b代回L(w,b,α)L(w,b,\alpha)L(w,b,α)中,此时的L(w,b,α)L(w,b,\alpha)L(w,b,α)成为了参数α\alphaα的函数,实际上是L(α)L(\alpha)L(α),形式上用W(α)W(\alpha)W(α)表示。
第二步,max⁡α≥0min⁡w,bL(w,b,α)=max⁡α≥0W(α)\max_{\alpha\geq0}\min_{w,b} L(w,b,\alpha)=\max_{\alpha\geq0}W(\alpha)maxα0minw,bL(w,b,α)=maxα0W(α)。对W(α)W(\alpha)W(α)求最大值,此时解出来的α\alphaα是确切的常数,再把这些常数代回第二步中“用α\alphaα表示的w,bw,bw,b”中,即可得到最终的参数w,bw,bw,b
本小节只做第一步的处理,第二步的处理将在第三章“SVM的求解”中介绍。

w,bw,bw,bL(w,b,α)L(w,b,\alpha)L(w,b,α)的最小值的方式是,分别对w,bw,bw,b求偏导,然后让它们的结果为0。
L(w,b,α)L(w,b,\alpha)L(w,b,α)的原式(见式(19))稍微展开(www被认为是常数 ,所以wT=ww^T=wwT=w):
\begin{align}
L(w,b,\alpha)&=\frac{1}{2}\left | w \right |2-\sum_{i=1}m \alpha_i[y{(i)}(wTx^{(i)}+b )-1]\
&=\frac{1}{2}\left | w \right |2-\sum_{i=1}m \alpha_iy{(i)}wTx{(i)}+b\sum_{i=1}m \alpha_iy{(i)}+\sum_{i=1}m \alpha_i
\tag{33}
\end{align}
www求偏导可以简单得到:
\begin{align}
\nabla_{w} L(w,b,\alpha)&=w-\sum_{i=1}^m \alpha_iy{(i)}x{(i)}=0\
&\Longrightarrow w=\sum_{i=1}^m \alpha_iy{(i)}x{(i)}
\tag{34}
\end{align}
同样,对bbb求偏导可以得到:
\begin{align}
\nabla_b L(w,b,\alpha)&=\sum_{i=1}^m \alpha_iy^{(i)}=0
\tag{35}
\end{align}
这里,x(i)x^{(i)}x(i)y(i)y^{(i)}y(i)是样本点,是已知数,所以我们就有了“用α\alphaα表示的w与bw与bwb”。接下来我们把式(34)与式(35)代回到式(33)中,需要注意的地方是∥w∥2=wTw\left \| w \right \|^2=w^Tww2=wTw,其它的正常展开就行,得到:
\begin{align}
L(w,b,\alpha)&=\sum_{i=1}^m \alpha_i-\frac{1}{2}\sum_{i,j=1}^m y{(i)}y{(j)}\alpha_i\alpha_j(x{(i)})Tx^{(j)}=W(\alpha)
\tag{36}
\end{align}
再把(x(i))Tx(j)(x^{(i)})^Tx^{(j)}(x(i))Tx(j)用$ ⟨x{(i)},x{(j)}⟩表示,同时把上面与表示,同时把上面与表示,同时把上面与\alphaKaTeX parse error: {align} can be used only in display mode.w,b,,w在式(34)中有描述,当我们把在式(34)中有描述,当我们把在式(34)中有描述,当我们把\max_\alpha W(\alpha)求解出来,得到求解出来,得到求解出来,得到\alpha_i配合上样本点,即可计算出配合上样本点,即可计算出配合上样本点,即可计算出w的实际值,那么,的实际值,那么,的实际值,那么,b是如何计算的?这里是是如何计算的? 这里是是如何计算的?这里是b$的计算方法:
b∗=−max⁡i:y(i)=−1w∗Tx(i)+min⁡i:y(i)=1w∗Tx(i)2(38)b^*=-\frac{\max_{i:y{(i)}=-1}w^{*T} x^{(i)}+\min_{i:y{(i)}=1}w^{*T} x^{(i)}}{2}\tag{38}b=2maxi:y(i)=1wTx(i)+mini:y(i)=1wTx(i)(38)
再一次把图一贴上来:

![图一](https://img-blog.youkuaiyun.com/20170416102848608?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
式(38)中,$-\max_{i:y{(i)}=-1}w^{*T} x^{(i)}$表示,过分类为-1的支持向量的超平面的截距,对应图中过圈圈的下面那条虚线的截距;$-\min_{i:y{(i)}=1}w^{*T} x^{(i)}$表示,过分类为1的支持向量的超平面的截距,对应图中过叉叉的上面那条虚线的截距。 实线即超平面的截距是这两个截距的和的一半。

到这里,我们完成了min⁡w,bL(w,b,α)\min_{w,b} L(w,b,\alpha)minw,bL(w,b,α)的过程,对偶问题的第一步求解就完成了。要求得截距bbb我们需要知道www,而www需要用α\alphaα计算得到,所以整个SVM分类器的求解只剩下最后一步了。
对偶问题的第二步max⁡α≥0W(α)\max_{\alpha\geq0}W(\alpha)maxα0W(α),求解α\alphaα的介绍将在第三章中进行(第三章中将要求解的是经过优化的W(α)W(\alpha)W(α),不是现在这个),因为接下来要介绍两个内容,核函数与软间隔分类器。

2.2、SVM优化一——引入核函数(Kernel)

2.2.1、核函数的作用

核函数的作用:把原坐标系里线性不可分的数据投影到另一个空间,尽量使得数据在新的空间里线性可分。
为了有一个直观感受可以看这个视频:https://www.youtube.com/watch?v=3liCbRZPrZA

低维空间(这里是二维)里有红色与蓝色两种不同的分类点,可以看到在这里它们线性不可分:

![这里写图片描述](https://img-blog.youkuaiyun.com/20170422090213813?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图四
用核函数把低维空间里的数据投影到高维空间(这里是三维)中去:
![这里写图片描述](https://img-blog.youkuaiyun.com/20170422090306817?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图五
在高维空间中做一个超平面将数据分类:
![这里写图片描述](https://img-blog.youkuaiyun.com/20170422090324770?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图六
高维空间中的分类超平面,表现在低维空间中,就是那个发光的圆:
![这里写图片描述](https://img-blog.youkuaiyun.com/20170422090337864?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图七
可以看到,即使原空间中的数据线性不可分,也可以获得很好的分类超平面,这就是核函数在SVM中的作用。 ### **2.2.2、核函数本身** #### **将数据映射到高维空间** 让我们来看式(37)中可以使用核函数的地方: \begin{align} W(\alpha)=\sum_{i=1}^m \alpha_i-\frac{1}{2}\sum_{i,j=1}^m y^{(i)}y^{(j)}\alpha_i\alpha_j⟨x^{(i)},x^{(j)}⟩ \end{align} 令$x^{(i)}=x$,$x^{(j)}=z$,我们可以将尖括号中的内积$⟨x^{(i)},x^{(j)}⟩$替换成$⟨\phi(x),\phi(z)⟩$,$\phi(x)$表示向量之间的映射,一般是从低维到高维: \begin{align} W(\alpha)=\sum_{i=1}^m \alpha_i-\frac{1}{2}\sum_{i,j=1}^m y^{(i)}y^{(j)}\alpha_i\alpha_j⟨\phi(x),\phi(z)⟩ \tag{39} \end{align}

给定了一个特征映射ϕ\phiϕ,我们将相应的核函数定义为:
K(x,z)=⟨ϕ(x),ϕ(z)⟩=ϕ(x)Tϕ(z)(40)K(x,z)=⟨\phi(x),\phi(z)⟩=\phi(x)^T\phi(z)\tag{40}K(x,z)=ϕ(x),ϕ(z)⟩=ϕ(x)Tϕ(z)(40)

这是李航老师《统计学习方法》SVM章节中给出的例子,我来简述一下:

![这里写图片描述](https://img-blog.youkuaiyun.com/20170423132151943?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图八
$x$是原空间的数据,$x=\left[ \begin{matrix}x^{(1)}\\x^{(2)} \end{matrix}\right]$; 同时,$z=\phi(x)=\left[ \begin{matrix}(x^{(1)})^2 \\ (x^{(2)})^2 \end{matrix}\right]$(这里的$z$指的是**映射后的向量**,跟$x^{(j)}=z$的设定——**原空间中的向量**——冲突了,但是因为图上给的是$z$,所以还是这么用了,请读者自行区分一下)。 映射过后,原空间中的点相应地变为新空间中的点,原空间中的椭圆: $$w_1 (x^{(1)})^2+w_2 (x^{(2)})^2+b=0 \tag{41}$$ 变成了新空间中的直线: $$w_1 z^{(1)})+w_2 z^{(2)})+b=0 \tag{42}$$ 线性不可分问题一般来说不好求解。所以我们将数据映射到高维空间,在高维空间里使用求解线性可分问题的方法,来求解在原空间中线性不可分的问题。 我们看到虽然样本点经过了映射,但是参数$w,b$却没变,因为式(39)与式(40)中的$w,b$本来就是相同的,只是在不同维度中表现出不同的样子而已(在(这里的)高维空间里表现为一条直线,在低维空间里表现为一个椭圆)。 这些跟图四到图七所表达的意思也是很吻合的。
化解计算量问题

将数据映射到高维空间,在高维空间中去寻找线性超平面的这个方式固然好,但是却引来了新的问题。
ϕ(x)\phi(x)ϕ(x)是映射后的数据,一般比原数据更高维,而真正使用的时候,还是在计算它的内积ϕ(x)Tϕ(z)\phi(x)^T\phi(z)ϕ(x)Tϕ(z),这样的计算代价太高昂了。
核函数的一个巧妙之处在于,可以通过计算低维向量内积的平方,得到高维向量的内积,下面是一个例子。
如果我们有一个核函数如下,并且x,zx,zx,z都是nnn维的:
K(x,z)=(xTz)2(43)K(x,z)=(x^Tz)^2\tag{43}K(x,z)=(xTz)2(43)
它可以展开成如下形式:
\begin{align}
K(x,z)&=(xTz)2\
&=\left ( \sum_{i=1}^nx_iz_i\right) \left ( \sum_{j=1}^nx_jz_j\right)\
&=\sum_{i=1}^n \sum_{j=1}^nx_ix_jz_iz_j\
&=\sum_{i,j=1}^n(x_ix_j)(z_iz_j)\
&=\phi(x)^T\phi(z)
\tag{44}
\end{align}
n=3n=3n=3的时候,有:
x=[x1x2x3],ϕ(x)=[x1x1x1x2x1x3x2x1x2x2x2x3x3x1x3x2x3x3](45)x=\left[ \begin{matrix}x_1 \\ x_2\\x_3\end{matrix}\right],\phi(x)=\left[ \begin{matrix}x_1x_1 \\ x_1x_2\\x_1x_3\\ x_2x_1 \\ x_2x_2\\x_2x_3\\x_3x_1 \\ x_3x_2\\x_3x_3\\\end{matrix}\right]\tag{45}x=x1x2x3ϕ(x)=x1x1x1x2x1x3x2x1x2x2x2x3x3x1x3x2x3x3(45)
假如式(39)中的映射是式(45)中的ϕ\phiϕ,我们有:
\begin{align}
W(\alpha)&=\sum_{i=1}^m \alpha_i-\frac{1}{2}\sum_{i,j=1}^m y{(i)}y{(j)}\alpha_i\alpha_j⟨\phi(x),\phi(z)⟩\
&=\sum_{i=1}^m \alpha_i-\frac{1}{2}\sum_{i,j=1}^m y{(i)}y{(j)}\alpha_i\alpha_j(xTz)2\
&=\sum_{i=1}^m \alpha_i-\frac{1}{2}\sum_{i,j=1}^m y{(i)}y{(j)}\alpha_i\alpha_j((x{(i)})Tx{(j)})2
\tag{46}
\end{align}
我们的初衷是在更高维的空间(ϕ\phiϕ)中做分类,使得数据更加线性可分,但是此时的时间复杂度变高了,为O(n2)O(n^2)O(n2),但是通过核函数的转换,通过计算低维向量内积的平方(时间复杂度为O(n)O(n)O(n))获得了相同的效果,降低了计算成本,而且这个时间复杂度与原始的式(36)相比是相同的。计算完内积之后得到的是一个常数,对一个常数做平方的代价在现在的计算机中几乎可以忽略不计。

其他核函数

这里再给出一个相似的核函数:
K(x,z)=(xTz+c)2=∑i,j=1n(xixj)(zizj)+∑i=1n(2cxi)(2czi)+c2(47)K(x,z)=(x^Tz+c)^2=\sum_{i,j=1}^n(x_ix_j)(z_iz_j)+\sum_{i=1}^n(\sqrt{2c}x_i)(\sqrt{2c}z_i)+c^2\tag{47}K(x,z)=(xTz+c)2=i,j=1n(xixj)(zizj)+i=1n(2cxi)(2czi)+c2(47)
同样等n=3n=3n=3时,有:
x=[x1x2x3],ϕ(x)=[x1x1x1x2x1x3x2x1x2x2x2x3x3x1x3x2x3x32cx12cx22cx3c](48)x=\left[ \begin{matrix}x_1 \\ x_2\\x_3\end{matrix}\right],\phi(x)=\left[ \begin{matrix}x_1x_1 \\ x_1x_2\\x_1x_3\\ x_2x_1 \\ x_2x_2\\x_2x_3\\x_3x_1 \\ x_3x_2\\x_3x_3\\\sqrt{2c}x_1 \\ \sqrt{2c}x_2\\\sqrt{2c}x_3\\c\end{matrix}\right]\tag{48}x=x1x2x3ϕ(x)=x1x1x1x2x1x3x2x1x2x2x2x3x3x1x3x2x3x32cx12cx22cx3c(48)
其更一般的形式为:
K(x,z)=(xTz+c)d(49)K(x,z)=(x^Tz+c)^d\tag{49}K(x,z)=(xTz+c)d(49)

另外,再给出SVM中应用广泛的高斯核(Radial Basis Function ,简称 RBF),也称为径向基函数:
K(x,z)=exp⁡(−∥x−z∥22σ2)(50)K(x,z)=\exp \left(-\frac{\left \| x-z \right \|^2}{2\sigma^2}\right) \tag{50}K(x,z)=exp(2σ2xz2)(50)
它能将原始特征映射到无穷维度,而且它能够衡量xxxzzz的接近程度。这个径向基函数好像非常神通广大的样子,但是目前来说那是另外一个课题…现在就到这里吧。

核函数有效性判断

关于核函数的有效性判断这里有Mercer定理直接给出结论。
Mercer 定理:**半正定的函数都可以作为核函数。**所谓半正定的函数f(xi,xj)f(x_i,x_j)f(xi,xj),是指拥有训练数据集合(x1,x2,⋯ ,xn)(x_1,x_2,\cdots,x_n)x1,x2,,xn),我们定义一个矩阵的元素aij=f(xi,xj)a_{ij} = f(x_i,x_j)aij=f(xi,xj),这个矩阵是n*n的,如果这个矩阵是半正定的,那么f(xi,xj)f(x_i,x_j)f(xi,xj)就称为半正定的函数。
这里是证明:
Mercer定理表明为了证明K是有效的核函数,那么我们不用去寻找ϕ\phiϕ,而只需要在训练集上求出各个KijK_{ij}Kij,然后判断矩阵K是否是半正定(使用左上角主子式大于等于零等方法)即可。
一个直观的理解是:一个向量与自己的内积一定大于等于0。
另外,不只是在SVM中,其他出现了内积的算法中,也可以用核函数代替内积,也是用Mercer定理来证明其有效性。

2.3、SVM优化二——软间隔分类器

![这里写图片描述](https://img-blog.youkuaiyun.com/20170423165213028?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图九
在引入核函数之前,我们一直在强调数据是线性可分的,如图九左图。 但是,如果映射到高维空间中仍然线性不可分,或者如图九右图中一样出现影响了超平面位置的不可避免的噪声时,该如何处理? 回到原始目标函数式(17)中,我们允许某些数据点拥有比1小的几何间隔,同时加入一个预设的惩罚系数C,就得到了下面的软间隔分类器: \begin{align} \min_{\gamma,w,b} \quad &\frac{1}{2}\left \| w \right \|^2+C\sum_{i=1}^m\xi_i\\ subject \ to \quad &y^{(i)}(w^Tx^{(i)}+b )\geq1-\xi_i,\quad i=1,2,\cdots,m\\ &\xi_i\geq0,i=1,2,\cdots,m \tag{51} \end{align} 然后引入拉格朗日乘子,得到: \begin{align} L(w,b,\alpha)&=\frac{1}{2}w^Tw+C\sum_{i=1}^m\xi_i-\sum_{i=1}^m \alpha_i[y^{(i)}(w^Tx^{(i)}+b )-1+\xi_i]-\sum_{i=1}^m \beta_i\xi_i \tag{52} \end{align} 接着如上文所说,进行对偶问题的第一步求解,即$\min L(w,b,\alpha)$,同样地,我们分别对$w,b,\xi_i$求偏导,令其偏导数结果为0之后,再把它们代回式(52)。这里不进行具体求解,直接给出对偶问题第一步求解完成后的形式: \begin{align} \max_\alpha \quad &W(\alpha)=\sum_{i=1}^m \alpha_i-\frac{1}{2}\sum_{i,j=1}^m y^{(i)}y^{(j)}\alpha_i\alpha_j⟨x^{(i)},x^{(j)}⟩\\ s.t.\quad &0\leq\alpha_i\leq C,i=1,2,\cdots,m\\ &\sum_{i=1}^m \alpha_iy^{(i)}=0 \tag{53} \end{align} 是不是很神奇,与式(37)的形式只增加了一个$\alpha_i$上界的限制$C$,$\xi_i$已经不见了踪影,这也是求解对偶问题的一个优点所在。 初次之外还有两个变化,一个是得到截距$b$的方式产生了变化,另一个是KKT互补条件发射了变化: \begin{align} \alpha_i=0\ \Longrightarrow y^{(i)}(w^Tx^{(i)}+b )\geq1\\ \alpha_i=C\ \Longrightarrow y^{(i)}(w^Tx^{(i)}+b )\leq1\\ 0\leq\alpha_i\leq C\ \Longrightarrow y^{(i)}(w^Tx^{(i)}+b )=1 \tag{54} \end{align} 这些条件将在下一节的SMO算法中判断其是否收敛。 # **3、SVM的求解** 在第一章结束的时候,我们就已经得到了目标函数,并且明确了我们要求解的参数是$w,b$。但是为了解决线性不可分的问题,以及为了更方便地求解参数,我们引入了拉格朗日乘子,把最初的目标函数变成了一个原始问题,再通过求解该原始问题的对偶问题,来获得原始问题,也即最初始的目标函数,就能取得参数$w,b$了。 于是我们的目标转换到了求解这个对偶问题上: $$\max_{\alpha\geq0}\min_{w,b} L(w,b,\alpha)$$ 在第二章中,我们把求解对偶问题的第一个步骤$\min_{w,b} L(w,b,\alpha)$完成了,现在还剩下最后一个步骤$\max_{\alpha\geq0}W(\alpha)$($W(\alpha)=\min_{w,b} L(w,b,\alpha)$),求解$\alpha$了。 下面将要进行对软间隔分类器的$W(\alpha)$的最大化。 ## **3.1、坐标上升法(Coordinate ascent)** 在对实际的$W(\alpha)$进行最大化之前,先介绍坐标上升法,它与SMO算法的思想是一致的,但是更简单。 抛开上面的问题,考虑对一个新的优化问题:

对于寻找函数最优值,除了梯度下降(上升),以及牛顿法之外,下面介绍一种新方法:
max⁡αW(α1,α2,⋯ ,αm)(55)\max_\alpha W(\alpha_1,\alpha_2,\cdots,\alpha_m)\tag{55}αmaxW(α1,α2,,αm)(55)

![这里写图片描述](https://img-blog.youkuaiyun.com/20170423183117777?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
最内层循环的意思是固定除$\alpha_i$之外的所有$\alpha_j(j\neq i)$,这时W可看作只是关于$\alpha_i$的函数,那么直接对$\alpha_i$求导优化即可。这里我们进行最大化求导的顺序i是从1到m,可以通过更改优化顺序来使W能够更快地增加并收敛。它需要迭代的次数很多,但是每一次迭代的代价都很小,所以实际上它的速度还是比较快的。
![这里写图片描述](https://img-blog.youkuaiyun.com/20170423182148557?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图十

椭圆代表了二次函数的各个等高线,变量数为2,起始坐标是(2,-2)。图中的直线式迭代优化的路径,可以看到每一步都会向最优值前进一步,而且前进路线是平行于坐标轴的,因为每一步只优化一个变量。

3.2、SMO算法

![这里写图片描述](https://img-blog.youkuaiyun.com/20170424195701302?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
SMO(Sequential optimal optimazation,序列最小优化)算法与坐标上升法一个不同的地方在于,求解目标式(53)中有$\sum_{i=1}^m \alpha_iy^{(i)}=0$的约束,如果只有一个参数$\alpha_i$变化,其他的全都固定,那么你会发现这个$\alpha_i$也已经固定了。所以SMO算法一次会选择两个参数进行优化(为了方便表示把$y^{(i)}$写成$y_i$): \begin{align} &\sum_{i=1}^m \alpha_iy_i=0\\ \Longrightarrow\ &\alpha_1y_1+\alpha_2y_2=-\sum_{i=3}^m \alpha_iy_i=\zeta \tag{56} \end{align} 因为只有$\alpha_1,\alpha_2$是变量,其他全都视为常量,可见$\zeta$既是该常量,同时令式(56)左右都乘上$y_1$,因为有$y_1^2=1$,所以有: $$\alpha_1=(\zeta-\alpha_2y_2)y_1\tag{57}$$ 可以把自变量$\alpha_2$看成自变量,$\alpha_1$是它的函数。

接下来是SMO算法正儿八经的求解过程。
实际上我是按照这个博客来学习SMO算法的,思路很清晰:
http://blog.youkuaiyun.com/luoshixian099/article/details/51227754
我跟着它的思路与节点把公式推了一遍,验证了一遍的感觉吧…整体求解难度不大,没有特别难以推导的步骤,但是推导的式子太长,我就不把公式写一遍了,而且求解的关键步骤都在这位大大的博客里了。

下面我会把求解思路和当时卡住的地方都描述一下。从这个目标函数开始:
\begin{align}
\max_\alpha \quad &W(\alpha)=\sum_{i=1}^m \alpha_i-\frac{1}{2}\sum_{i,j=1}^m y{(i)}y{(j)}\alpha_i\alpha_j⟨x{(i)},x{(j)}⟩\
\Longrightarrow \ \min_\alpha \quad &\psi(\alpha)=\frac{1}{2}\sum_{i,j=1}^m y_iy_j\alpha_i\alpha_jK(\vec x_i,\vec x_j)-\sum_{i=1}^m \alpha_i
\tag{58}
\end{align}
这个博客里把右式乘了个-1,然后去求其最小值,把上标写成下标,还把⟨x(i),x(j)⟩⟨x^{(i)},x^{(j)}⟩x(i),x(j)用核函数K(x⃗i,x⃗j)K(\vec x_i,\vec x_j)K(xi,xj)写出来,有这些符号上的不同,但是它们是等价的。

3.2.1、进行一次迭代

这里是求解思路:
\begin{align}
&\qquad ①把式(58)展开,只保留未知数\alpha_1与\alpha_2相关的项,其他项用一个常数表示。此时目标函数被视为一个二元函数。\
&\Longrightarrow ②把式(57)带入①中求得的二元函数,消去\alpha_1。此时目标函数被视为一个\alpha_2的一元二次函数。\
&\Longrightarrow ③对\alpha_2的一元二次函数求解。具体方法是对其求导并令其导数为0,求得\alpha_2。\
&\Longrightarrow ④把\alpha_2代回式(57)\alpha_1=(\zeta-\alpha_2y_2)y_1,得到\alpha_1。
\end{align}
好了,这里有α1\alpha_1α1α2\alpha_2α2了,是不是可以求下一组α3\alpha_3α3α4\alpha_4α4了?
没有,别忘了这是一个迭代算法,要迭代至这两个值收敛才行。而要迭代就要有迭代前和迭代后的α1\alpha_1α1α2\alpha_2α2的迭代方式。
⟹⑤用Ei=f(xi)−yi表示预测值与真实值之差,把迭代前后的α2联系起来,经过计算得到α2new,unclipped=α2old+y2(E2−E1)η\Longrightarrow ⑤用E_i=f(x_i)-y_i表示预测值与真实值之差,把迭代前后的\alpha_2联系起来,经过计算得到\alpha_2^{new,unclipped}=\alpha_2^{old}+\frac{y_2(E_2-E_1)}{\eta}Ei=f(xi)yi表示预测值与真实值之差,把迭代前后的α2联系起来,经过计算得到α2new,unclipped=α2old+ηy2(E2E1)
这样就有了新旧α2\alpha_2α2的迭代规则,其中η=K11+K22−2K12\eta=K_{11}+K_{22}-2K_{12}η=K11+K222K12
但是要注意α2new,unclipped\alpha_2^{new,unclipped}α2new,unclipped还不是完全新的迭代值,“unclipped”表示未裁剪。因为还要考虑到约束条件:
\begin{align}
&0\leq\alpha_{i=1,2}\leq C\
&\alpha_1y_1+\alpha_2y_2=\zeta
\tag{59}
\end{align}
上面①到⑤步跟着进行计算就行,但是关于裁剪这一部分我有话要说。

![这里写图片描述](https://img-blog.youkuaiyun.com/20170424201936852?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图十一
图十一是用式(59)画出来的图。我们要求的是$\alpha_2$的值。图中的$k$等于式(59)中的$\zeta$。横坐标是$\alpha_1$,纵坐标是$\alpha_2$。 现在以左图为例,它是$y_1,y_2$异号时的图像,此时直线的斜率为1(右边$y_1,y_2$同号,直线斜率为-1)。 $k$值符号由$\alpha_1-\alpha_2$决定,所以$\alpha_1y_1+\alpha_2y_2=\zeta$有可能是红线也可能是灰线。 式(59)要表达的意思是,$\alpha_1,\alpha_2$既要在横纵坐标都以$(0,C)$为界的矩形框内,也要在$\alpha_1y_1+\alpha_2y_2=\zeta$即红线或者灰线上。 我们要求的是$\alpha_2$,即直线的纵坐标,所以我们只需要关注直线与矩形框的交点的纵坐标。 图十一左图有4个这样的纵坐标,但是直线只能同时存在一根,我们只能够取两个这样的纵坐标,但是它们的表示形式都不一样,怎么办? 把$\alpha_2$纵坐标的下界用$L$表示,上界用$H$表示: \begin{align} 当y_1与y_2异号(左图),L=\max(0,\alpha_2^{old}-\alpha_1^{old}),H=\min(C,C+\alpha_2^{old}-\alpha_1^{old}) \tag{60} \end{align} 同理可得右图的$L、H$: \begin{align} 当y_1与y_2同号(右图),L=\max(0,\alpha_1^{old}+\alpha_2^{old}-C),H=\min(C,\alpha_1^{old}+\alpha_2^{old}) \tag{61} \end{align} 于是有真正的迭代后的$\alpha_2^{new}$与$\alpha_1^{new}$: \begin{align} \Longrightarrow &⑥按右边方式裁剪\alpha_2^{new,unclipped}:\qquad \alpha_2^{new}=\left\{\begin{array}\\H &if(\alpha_2^{new,unclipped}> H)\\\alpha_2^{new,unclipped}&if(L\leq\alpha_2^{new,unclipped}\leq H)\\L&if(\alpha_2^{new,unclipped}< L)\end{array}\right.\\ \Longrightarrow &⑦把\alpha_2^{new}代回式(57)中得到\alpha_1^{new},迭代关系是\alpha_1^{new}=\alpha_1^{old}+y_1y_2(\alpha_2^{old}-\alpha_2^{new}) \end{align} 一次迭代就到这里了,链接的博客里的临界问题我没有进行深究。 ### **3.2.2、启发式选择方法与截距b的计算** #### **启发式选择方法** 上面为了方便表示,求解的是$\alpha_1$与$\alpha_2$,但是实际操作中,可以使用启发式选择方法高效地选择两个变量进行优化,使得目标函数下降的最快。 第一个变量(外循环)的选择:把非边界样本集$0\leq\alpha_i\leq C$中违反KKT的$\alpha_i$作为第一个变量。 第二个变量(内循环)的选择:选最大的$\left | E_i-E_j \right |$中的$\alpha_j$——使其步长最大化——作为第二个变量。 #### **截距b的计算** 因为$b$关系到$f(x)$即$E$的计算,所以每次都要更新$b$,这里直接给出: $$b_1^{new}=-E_1-y_1K_{11}(\alpha_1^{new}-\alpha_1^{old})-y_2K_{21}(\alpha_2^{new}-\alpha_2^{old})+b^{old}\tag{62}$$ $$b_2^{new}=-E_2-y_1K_{12}(\alpha_1^{new}-\alpha_1^{old})-y_2K_{22}(\alpha_2^{new}-\alpha_2^{old})+b^{old}\tag{63}$$ 以上是$\alpha_1$、$\alpha_2$在界内($0\leq\alpha_i\leq C$)的情况。 如果$\alpha_1$、$\alpha_2$同时都在界内,有$b_1^{new}=b_2^{new}$; 如果$\alpha_1$、$\alpha_2$同时在界上(等于0或者C),取它们的中点,$b_1^{new}=b_2^{new}:=\frac{b_1^{new}+b_2^{new}}{2}$。 # **4、小结** 从logistic函数开始,提出了函数间隔与几何间隔的概念,在几何函数之上获得了初始的目标函数; 加入拉格朗日乘子把目标函数变成一个原始问题,在满足KKT条件的情况下,通过求解对偶问题获得原始问题的解; 在对偶问题的第一步求解之后,整个目标函数的初始参数$w,b$已经消失,取而代之的参数是拉格朗日乘子; 因为对偶问题的优良结构,我们可以引入核函数在高维空间中寻找超平面,还可以使用软间隔分类器允许噪声存在(同时目标函数结构几乎无变化),使得原先线性不可分的问题得以解决; 最后使用SMO算法对对偶问题进行第二步求解,求得参数拉格朗日乘子的值。 到此,SVM整个的参数求解过程完成。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值