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 , ,三个参数,可以把Lp转化为只包括 的函数LD(对偶函数dual function),把求得的偏导代入Lp中
于是得到
问题就转化为最大化LD,但LD需要满足KKT条件:
我们可以看到:
如果y(i)(wTx(i) + b) > 1,也即x(i)是不在hyperplanes b11 or b12上,那么 = 0;
如果 > 0, 那么y(i)(wTx(i) + b) = 1,也即x(i)是在hyperplanes b11 or b12上。
在hyperplanes b11 or b12上的点就是支持向量(support vector)。
如果求出了,就可求出