上一节我们介绍了SVM在处理二分类问题时的经典概念,但是现实场景中的数据往往有很多噪音,这个时候如何处理才能让模型更鲁棒呢?
松弛变量(Slack variables)
引入松弛变量的想法是,让基础SVM中关于margin的约束不再那么严格。(必须保证边界之外的样本预测值要么是+1要么是-1,且边界上的样本预测值为0)
同时还要对约束的松弛度进行一定的惩罚。
我们为每一个训练样本都定义一个松弛变量
,来表示该样本违反margin的程度。

于是我们的分类表达式变成了:
for
for
它们可以合并成:
for all
引入松弛变量之后,原来的cost function就从 变成了
表示对于违反margin边界的惩罚力度。当
时,整个函数又变回了hard-margin SVM
求最优解
minimize:
subject to:
and for
备注:这里的惩罚项我们使用了L1-norm ,也可以用L2-norm的形式
,取决于数据本身的特性以及噪音的类型,这里不做过多讨论。
拉格朗日Primal problem
(1)
(2)
(3)
(3)式中,由于拉格朗日中,
,于是我们有:
拉格朗日Dual problem
maximize:
subject to
这和普通的SVM的dual problem几乎完全一致,只是多了 这个约束。它保证了
的最大值是有界限的,而不会变得无限大。

可以看到当C比较小的时候,margin里是允许有训练样本越界的。当C的值越来越大,margin的范围也在缩小,直到不允许任何样本出现在margin内部。
加入Hinge Loss到SVM中
让我们再回头看看soft margin SVM的优化问题:
minimize:
subject to:
and for
很明显可以看出松弛变量的最优解为:
因此,我们可以把objective function改写成hinge loss的形式:
有了这个表达式,我们直接利用基于梯度的方式对其进行优化。
Reference
本文的内容总结自慕尼黑工业大学由Prof. Stephan Günnemann教授的Machine Learning课程。未经允许请勿转载。