SVM(1)Linear separable

Our training data consists of m tuples (x(1), y(1)), (x(2), y(2)), . . . , (x(m), y(m)), where x(i) = (x(i1), x(i2), …,x(id))T and y(i) ∈ {−1, 1},denote the class label. The hyperplane(decision boundary) of a linear classifier can be written in the following form: wTx + b = 0, where w and b are parameters of the model. 

如图:对任意样本x有:

我们可以缩放w和b的值,使得:

在b11和b12上分别去样本点x1,x2,则

w·(x1-x2) = 2

||w|| × d = 2

得:d = 2/||w||

SVM的目标就是最大化margin 且满足y(i)(wTx(i) + b) > 1

等价于:

min ||w||2/2           subject to y(i)(wTx(i) + b) ≥ 1

上面的目标函数可有以下解释:

****************************************************************************

函数间隔(functional margin)和几何间隔(geometric margin)

样本的函数间隔:

考虑w和b,如果同时加大w和b,比如在(wTx(i) + b)前面乘个系数比如2,那么所有点的函数间隔都会增大二倍,这个对求解问题来说不应该有影响,因为我们要求解的是wTx + b=0,同时扩大w和b对结果是无影响的。这样,我们为了限制w和b,可能需要加入归一化条件||w||=1,毕竟求解的目标是确定唯一一个w和b,而不是多组线性相关的向量。

上面定义的函数间隔是针对某一个样本的,而全局样本上的函数间隔为

几何间隔:

r(i)实际上就是点到平面距离。

再换种更加优雅的写法:

当||w||=1时就是函数间隔。因为函数间隔是我们定义的,在定义的时候就有几何间隔的色彩。同样,同时扩大w和b,w扩大几倍,||w||就扩大几倍,结果无影响。

同样定义全局的几何间隔

我们的目标是寻找一个hyperplane,使得离hyperplane最近的点能有更大的margin。即:

        subject to y(i)(wTx(i) + b) ≥ γ , ||w||=1

这里用||w||=1规约w,使得wTx + b是几何间隔。

到此,我们已经将模型定义出来了。如果求得了w和b,那么来一个特征x,我们就能够分类了,称为最优间隔分类器。接下的问题就是如何求解w和b的问题了。

由于||w||=1不是凸函数,我们想先处理转化一下,考虑几何间隔和函数间隔的关系,我们改写一下上面的式子:

这时候其实我们求的最大值仍然是几何间隔,只不过此时的w不受||w||=1的约束了。然而这个时候目标函数仍然不是凸函数,没法直接代入优化软件里计算。前面说到同时扩大w和b对结果没有影响,但我们最后要求的仍然是w和b的确定值,因此,我们对做一些限制,以保证我们解是唯一的。这里为了简便我们取。这样的意义是将全局的函数间隔定义为1,也即是将离hyperplane最近的点的距离定义为1/||w|| 。此时margin为2/||w|| ,求2/||w||的最大值相当于求

****************************************************************************

上面得到后,下面的任务就要求w和b

这是个凸优化问题(目标函数是自变量的二次函数,且只有线性约束了),可用标准的Lagrange multiplier解决。

The Lagrange (primal) function:

分别对w, b求偏导,并令其等于0

上面求最小化Lp中包括w, b , clip_image033[6],三个参数,可以把Lp转化为只包括clip_image033[6] 的函数LD(对偶函数dual function),把求得的偏导代入Lp

于是得到

问题就转化为最大化LD,但LD需要满足KKT条件:

我们可以看到:

如果y(i)(wTx(i) + b) > 1,也即x(i)是不在hyperplanes b11 or b12上,那么 clip_image033[6] = 0;

如果clip_image033[6] > 0, 那么y(i)(wTx(i) + b) = 1,也即x(i)是在hyperplanes b11 or b12上。

在hyperplanes b11 or b12上的点就是支持向量(support vector)。

如果求出了clip_image033[6],就可求出clip_image073[6]

原文地址:https://www.cnblogs.com/liangzh/p/2738450.html