线性SVM的推导

线性SVM算法的一般过程

线性SVM的推导

超平面方程

SVM是用来分类的。给定一系列输入数据(n维向量),需要找到一个切分界线(n-1维的超平面),这里假定数据是线性可分的。比如,二维数据的超平面是直线,三维数据的超平面是二维平面。以二维数据为例:

二维平面的直线一般式:\(Ax+By+C=0\),可以写成向量的形式:

\[\pmatrix {A \ B}\pmatrix {x\\y}+C=0 \]

\(\vec w=\pmatrix {A\\B}\),\(\vec x=\pmatrix{x\\y}\)\(b=C\),则有:

\[\vec w^T \vec x + b = 0 \]

这里的向量都是列向量。懂线性代数学的请无视~
将上述公式中向量的维度推广到n维,就得到n维数据的超平面。直观理解就是两个类别的分界。

functional margin

functional margin直译是:函数间距。听起来抽象~
在前面定义的超平面公式基础上,设\(f(\vec x)=\vec w^T \vec x + b\),则:

\[f(\vec x)表示\begin{cases} 超平面左侧的数据点, &f(\vec x)>0\cr 超平面上的数据点, &f(\vec x)=0 \cr 超平面右侧的数据点, &f(\vec x)<0\end{cases} \]

超平面上的点显然是几乎没有的,暂不考虑,剩余的就是两个类别各自的数据点了,分居在超平面两侧。按惯例用\(y_i\)表示第\(i\)个类别,这里取:

\[y=sign(f(\vec x))=\begin{cases}1, \ \ \ \ \ f(\vec x)<0 \cr -1, \ f(\vec x)>0 \end{cases} \]

这里用1和-1而不是0和-1,是为了后续推导方便。\(sign(x)\)是取符号函数。

好了,终于可以定义functional margin了:

\[\hat \gamma = y(\vec w^T\vec x + b) = yf(\vec x) = sign(f(\vec x))f(\vec x)=|f(\vec x)| \]

\(f(\vec x)\)和它的符号相乘,得到的结果始终是正的:\(\forall \vec x, \hat \gamma > 0\)

geometrical margin

geometrical margin直译为几何距离,也就是点到超平面的距离,也就是点到直线距离再乘以1或者-1。1和-1分别对应两个分类,也就是分类标签\(y\)的取值。前面对于\(y\)值的设定就是为此处考虑的。
几何距离
如图,\(\vec x_0\)是超平面上一点,\(\vec x\)是任意一个点。这两个点都是n维向量,先试着计算它们的距离\(\gamma\)

\[\gamma=d(\vec x, \vec x_0)=||\vec x - \vec x_0|| \\ =\frac{\vec x - \vec x_0}{\vec e} \\ =\frac{\vec x - \vec x_0}{\frac{\vec w}{||\vec w||}} \\ =>... \]

这里的问题在于,使用了向量除法,其中\(\vec e\)表示和\(\vec x - \vec x_0\)同方向的单位向量,虽然类似定比分点的公式,但是还是不严格。好在只要稍微转换下书写形式,把除法写成乘法,就OK了:

\[\vec x-\vec x_0 = \gamma \vec e =\gamma \frac{\vec w}{||\vec w||} \\左乘\vec w^T: \vec w^T(\vec x-\vec x_0)=\gamma \frac{\vec w^T \vec w}{||\vec w||} \\ 考虑f(\vec x_0)=0,f(\vec x)=\vec w^T\vec x,且\frac{\vec w^T \vec w}{||\vec w||}=||\vec w|| \\因此有: \gamma=\frac{f(\vec x)}{||\vec w||} \]

需要指出的是:这里的\(\vec x\)不一定处在\(\vec w\)所指向的一侧,它也许在相反一侧,因而\(\gamma\)可正可负,所以需要定义一个始终是正值的几何距离,即:根据functional margin来定义geometrical margin:

\[\hat \gamma=yf(\vec x) \\ \gamma=\frac{f(\vec x)}{||\vec w||} \\ =>\tilde \gamma=y\gamma = \frac{\hat \gamma}{||\vec w||} \]

注意!这里出现了新变量\(\tilde \gamma\),是geometrical margin\(\hat \gamma\)则表示functional margin\(\gamma\)则表示向量\(\vec x\)\(\vec x_0\)之间的距离。显然,\(\tilde \gamma\)\(\hat \gamma\)只相差一个缩放因子\(||\vec w||\),而且他们都是大于0的值。

最大化几何距离\(\tilde \gamma\)

前面引入了超平面、几何距离等概念。显然超平面上的点其所属类别是模糊的,而当超平面上的点离开超平面,离开的越远,其所属分类就越明晰,也有人称为:当点到超平面的margin越大,分类的confidence越大。总之,要让分类效果明显,就应当设法最大化margin。成千上万的数据点,都去计算margin肯定不行,而且显然只需要考虑距离超平面最近的那些点:这些点就是支持向量,支持向量到超平面的margin是所有点中最小的那一撮,设法最大化它们的margin就能完成最终的分类任务了。

那么,该最大化哪个margin呢?\(\tilde \gamma\)还是\(\hat \gamma\)呢?\(\tilde \gamma\)表示的是几何距离,直觉上应该选择它。试着考虑其具体表达式:

\[\hat \gamma=|\vec w^T\vec x+b| \\ \tilde \gamma=\frac{|\vec w^T\vec x+b|}{||\vec w||} \\ =|\frac{\vec w^T}{||\vec w||}\vec x+\frac{b}{||\vec w||}| \]

对于一个确定的超平面,\(\vec w\)\(b\)的取值并不唯一,\(||\vec w||\)可大可小,通过缩放\(\vec w\)\(b\)能保持超平面不变。但\(\frac{\vec w}{||\vec w||}\)\(\frac{b}{\vec w}\)是唯一的,因而考虑最大化\(\tilde \gamma\)。实际上,不妨取\(||\vec w||=1\),那么等比例缩放\(b\),就能保持等式成立,而且此时\(\hat \gamma\)\(\tilde \gamma\)取值相等。

此时,我们对于训练数据集\(S=\{x^{(i)}, y^{(i)};i=1,...,m\}\),我们重新定义参数\((\vec w,b)\)下的geometrical margin为:

\[\gamma=\min_{i=1,...,m} \gamma^{(i)} \]

直观理解为:将超平面向1和-1两个类的方向分别移动,最先触碰到的那些点到分界超平面的距离为几何距离\(\gamma\)。而这些最先被触碰到的点,称为支持向量(support vector)。当然,先前处于分界超平面上的点不算。

进一步确定极值条件

当前的目标是:

\[\max (\min d(\vec x, \vec x_0)) $$,也就是: \]

\max_{\gamma,\vec w,b} \frac {\hat \gamma}{||\vec w||} \
s.t. \ \ \ \ y_i(\vec w^T \vec x_i+b) \ge \gamma, \ \ i=1,...,m

\[这里从凸优化的方法,否定了取$||\vec w||=1$的做法,采取了让$\hat \gamma=1$的做法:**支持向量到分解超平面的几何距离为1**。而最小化"支持向量到分界超平面的几何距离",等价于“最小化支持向量之间在垂直于分界超平面的方向上的距离”,也就是: \]

\max Margin = 2/||\vec w|| \ \ \ \ (cond1)

\[同时,现在的情况是:不算分界超平面上的点,所有点满足: $\vec w^T \vec x_i+b \ge 1$,对于所有$y_i=1$ $\vec w^T \vec x_i+b \le -1$,对于所有$y_i=-1$ 也就是: \]

y_i(\vec w^T \vec x_i + b)-1 \ge 0 \ \ \ \ (cond2)

\[要满足`cond1`和`cond2`,就能得到最终解。而`cond1`等价于:计算$\min ||\vec w||^2/2$。 对于不等式约束的条件极值问题,可以用拉格朗日方法求解。而拉格朗日方程的构造规则是:用约束方程乘以非负的拉格朗日系数,然后再从目标函数中减去。于是得到拉格朗日方程如下: \]

L(\vec w,b,\alpha_i)=\frac{1}{2}||\vec w||2-\sum_{i=1}\alpha_i(y_i(\vec w^T \vec x_i+b)-1)=\frac{1}{2}||\vec w||2-\sum_{i=1}\alpha_i y_i(\vec w^T \vec x_i+b)+\sum_{i=1}^{l}\alpha_i

\[其中: \]

\alpha_i \ge 0 \ \ \ \ (4)

\[那么我们要处理的规划问题就变为: \]

\min_{\vec w,b} \max_{\alpha_i \ge 0} L(\vec w,b,\alpha_i) \ \ \ \ (5)

\[上市才是严格的不等式约束的拉格朗日条件极值的表达式。对于这一步的变换,很多文章都没有多做表述,或者理解有偏差,从而影响了读者后续的推演。在此我将详细地一步步推导,以解困惑。 (5)式是一个凸规划问题,其意义是先对$\alpha$求偏导,令其等于0消掉α,然后再对w和b求L的最小值。要直接求解(5)式是有难度的,通过消去拉格朗日系数来化简方程,对我们的问题无济于事。所幸这个问题可以通过拉格朗日对偶问题来解决,为此我们把(5)式做一个等价变换: \]

\min_{\vec w, b} \max_{\alpha_i \ge 0} L(\vec w,b,\alpha_i)= \max_{\alpha_i \ge 0}L(\vec w,b,\alpha_i)

\[上式即为对偶变换,这样就把这个凸规划问题转换成了对偶问题: \]

\max_{\alpha_i \ge 0} \min_{\vec w,b}L(\vec w, b, \alpha_i) \ \ \ \ (6)

\[其意义是:原凸规划问题可以转化为先对w和b求偏导,令其等于0消掉w和b,然后再对α求L的最大值。下面我们就来求解(6)式,为此我们先计算w和b的偏导数。由(3)式有: \]

\frac{\partial L(\vec w,b,\alpha_i)}{\partial \vec w}=\vec w-\sum_{i=1}^{l}\alpha_i y_i x_i \
\frac{\partial L(\vec w,b,\alpha_i)}{\partial b}=-\sum_{i=1}^{l}\alpha_i y_i \ \ \ \ (7)

\[为了让L在w和b上取到最小值,令(7)式的两个偏导数分别为0,于是得到: \]

\vec w=\sim_{i=1}^{l}\alpha_i y_i x_i \
\sum_{i=1}^{l}\alpha_i y_i=0 \ \ \ \ (8)

\[将(8)代回(3)式,可得: ![](http://s5.sinaimg.cn/middle/4298002etbb9440237c94&690) 再把(9)代入(6)式有: \]

\max_{\alpha_i \ge 0} \min_{\vec w,b}L(\vec w,b,\alpha_i)=\max_{\alpha_i \ge 0}=\max_{\alpha_i \ge 0}{\sum_{i=1}{l}\alpha_i-\frac{1}{2}\sum_{i=1}\sum_{j=1}^{l}\alpha_i \alpha_j y_i y_j(x_i·x_j)} \ \ \ \ (10)

\[考虑到(8)式,我们的对偶问题就变为: \]

\max_{\alpha_i}{\sum_{i=1}{l}\alpha_i}-\frac{1}{2}\sum_{i=1}\sum_{j=1}^{l}\alpha_i \alpha_j y_i y_j(x_i · x_j) \
s.t. \ \ \sum_{\alpha_i}^{y_i}=0 \
\alpha_i \ge 0

\[上式这个规划问题可以直接从数值方法计算求解。 需要指出的一点是,(2)式的条件极值问题能够转化为(5)式的凸规划问题,其中隐含着一个约束,即 \]

\alpha_i(y_i(\vec w · x_i + b)-1)=0 \ \ \ \ (12)

\[这个约束是这样得来的,如果(2)和(5)等效,必有: \]

\max_{\alpha_i \ge 0}L(\vec w, b, \alpha_i) = \frac{1}{2}||\vec w||^2

\[把(3)式代入上式中,得到: ![](http://s2.sinaimg.cn/middle/4298002etbb945ba1a291&690) 化简得到: \]

\min_{\alpha_i \ge 0}{\sum_{i=1}^{l}\alpha_i (y_i(\vec w · x_i + b)-1)}=0 \ \ \ \ (13)

\[又因为约束(1)式和(4)式,有: ![](http://s5.sinaimg.cn/middle/4298002etbb945bad05f4&690) 所以要使(13)式成立,只有令:$\alpha_i(y_i(\vec w·x_i + b)-1) = 0$,由此得到(12)式的约束。该约束的意义是:如果一个样本是支持向量,则其对应的拉格朗日系数非零;如果一个样本不是支持向量,则其对应的拉格朗日系数一定为0。由此可知大多数拉格朗日系数都是0。 一旦我们从(11)式求解出所有拉格朗日系数,就可以通过(8)式的 \]

\vec w=\sum_{i=1}^{l}\alpha_i y_i x_i

\[计算得到最优分割面H的法向量w。而分割阈值b也可以通过(12)式的约束用支持向量计算出来。这样我们就找到了最优的H1和H2,这就是我们训练出来的SVM。 ## 参考 [支持向量机: Maximum Margin Classifier](Maximum Margin Classifier](http://blog.pluskid.org/?p=632) [支持向量机(SVM)的详细推导过程及注解(一)](http://blog.sina.com.cn/s/blog_4298002e010144k8.html)\]

posted @ 2015-07-07 16:48  ChrisZZ  阅读(1090)  评论(0编辑  收藏  举报