机器学习——Soft-Margin Support Vector Machine
之前提到的之前的SVM会overfitting除了模型过于复杂,另一个问题就是它要将样本分类在训练集上做到完全正确。这时候一些噪声就会很大程度上影响结果。为了适应这些噪声,不得不做出很复杂的模型。
因此有时候我们希望可以容忍一些样本被错误分类。因此原有的数学条件就需要改变一下了。
现在我们回到最开始描述的问题:
min
$s.t. y_n(W^TX_n+b) ,n =1,2,…,N $.
现在我们不要求所有的$ y_n(W^TX_n+b) _n$,那么问题可以被描述为下:
min
$s.t. y_n(W^TX_n+b) - _n,n =1,2,…,N $.
仔细看上面的描述我们可以发现,如果一个样本没有犯错,那么它对应的.如果一个样本犯错了,那么它对应的.
因此实际上上面的问题也可以被描述成下面的形式:
min
where is the hinge loss defined by .
常数的作用在于我们可以接受的犯错程度大小。可以想象的是如果比较大,整个目标既然在最小化上面的式子,那么的值就会变得非常小,也就是我们可以对划分错误的容忍度是比较小的,如果比较大,那么容忍度则较大,因此这里也有一个权衡。
我们从上面的描述出发继续推导这个问题的Lagrange Dual Problem:
这个时候,实际上所有的关于的偏导数与之前都是一致的。在这里就不详细推导了,只是最后我们需要对求偏导:
由上式可以得到:因为我们有参数限制,,因此实际上我们可以得到的约束是:$ 0 _n C$.
同时由上面的结论,再结合原来的式子,还可以消掉的是.
因此最后得到的那些KKT条件与原来HardMagin唯一的不同就在于的限制变了。从这里可以看出来的作用:很大的时候,说明这个限制相对原来较小,也就是要求犯错较少(因为原来的情况我们是不允许犯错误的)。
通过二次规划,我们可以一样得到$_n Wbb$与之前的算法不一样了。
之前我们通过,通过找到是支持向量的点(),从而通过该点计算出来.
而此时,我们想要计算的.
有个问题,我们不知道的值啊(其实我们是知道的,不过这是要等求出来之后)。但是我们知道另一个信息,这意味着如果的点,.所有实际上我们需要的是的点,这时候,可以计算出,这样的点叫free Support Vector.个别时候我们无法找到,那么这个的值只能用kkt条件来限制了。
这里,我们希望可以仔细思考一下背后是否有什么指示。
如果,那么,可以得到的是这些点一般是完全没有错误的,这点和之前是一样的。
否则,,则我们通过上面的推导也知道.这意味着,它们对应的.所以这些点是Support Vector,它们定义了最宽的分界线。
还有一种情况,.这种点就是被分错的点了,,但是$ 1 - - y_n(W^TX_n+b) = 0$.要注意的是这里的分错并不一定是分类结果错误,还有可能是在分到margin中间去了。
上面的内容就是Soft Margin SVM,但是值得注意的是,我们需要调一个参数:C,如果C过大,仍然可能会overfitting。
Soft Margin SVM可以与Kernel结合,在实际中使用比Hard Margin SVM更加频繁。