您的位置:首页 > 其它

线性SVM的推导

2015-07-07 16:48 369 查看

线性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}^{l}\alpha_i(y_i(\vec w^T \vec x_i+b)-1)=\frac{1}{2}||\vec w||^2-\sum_{i=1}^{l}\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)式,可得:



再把(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}^{l}\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}^{l}\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)式代入上式中,得到:



化简得到:

$$

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

$$

又因为约束(1)式和(4)式,有:



所以要使(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)的详细推导过程及注解(一)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: