72-Soft Margin和SVM的正则化
Soft Margin和SVM的正则化
上一篇博客介绍了 Hard Margin SVM,这篇博客主要介绍怎样在 Hard Margin SVM 改进为 Soft Margin SVM。
下面来看看什么是 Soft Margin SVM?
对于 Hard Margin SVM,其实是求解这样一个有条件的最优化问题。
但是之前的例子存在一个问题,如果有一个蓝色的点靠近红色点的区域,对于 Hard Margin SVM 来说,首先它要保证能够正确的分出这两类。
那么在这种情况下,这个决策边界很有可能是这样一条直线。
虽然这条直线很好的将这些样本点分开了,但是单看这个图,我们可能会对这个模型的泛化能力产生怀疑。很显然,对于大多数蓝色的点都集中在左下角的区域,只有那一个蓝色点在决策边界那个位置,这个决策边界很显然非常强的受到这一个蓝色点的影响。很有可能这个蓝色点是一个 Outlier 或者根本错误的点,或者它是一个正确的点但是是一个极度特殊的点,并不能代表一般情况。这种情况,很有可能这样的决策边界(红线)是一个更好的。
这个决策边界虽然将其中一个蓝色点进行了错误的分类,但是很有可能我们将这个模型放在真实的环境中进行实际预测的时候它的预测能力会更强,也就是泛化能力更好。所以我们必须思考一个机制,对于这个机制来说,SVM 算法得到的决策边界要能够有一定的容错能力,在一些情况下,它应该考虑到可以把一些点进行错误的分类,最终达到的结果还是希望泛化能力尽可能的高。
再假设一种情况,如果我们蓝色点位于这样一个位置:
此时我们地数据根本就是线性不可分的,没有任何一条直线能够将我们现在的样本点分成两类,在这种情况下, Hard Margin SVM 算法就已经不是泛化能力强不强的问题了,而是无法应用无法得到结果这样的问题。不管从哪个角度分析,我们都必须做出一个具有容错能力的 SVM,这种 SVM 就叫做 Soft Margin SVM。
回顾之前学习 Hard Margin SVM 时,它有一个限制条件:
这个式子表示所有的数据点到要在
y
i
(
w
T
x
i
+
b
)
=
1
y^i(w^Tx^i + b) = 1
yi(wTxi+b)=1 和
y
i
(
w
T
x
i
+
b
)
=
−
1
y^i(w^Tx^i + b) = -1
yi(wTxi+b)=−1 这两条直线的外面,现在我们对这个条件加以宽松,允许所有的数据点不一定位于这个区域的外面,给它一个宽松量
ξ
i
ξ_i
ξi,但是这个
ξ
i
ξ_i
ξi 必须是大于等于 0 的,我们在图像上表示如下:
而且
ξ
i
ξ_i
ξi 不是一个固定的值,而是对于每一个样本数据
i
i
i 都有一个相应的
ξ
i
ξ_i
ξi 。换句话说,我们假设有
m
m
m 个数据点的话,那么
ξ
i
ξ_i
ξi 的值相应也有
m
m
m 个,其实就是对于每一个数据点,我们都求出它相应的容错空间。在这里,我们只有这个条件是不够的,我们很容易使得
ξ
i
ξ_i
ξi 取正无穷,很显然我们的数据点都满足这个条件,我们这个容错的范围就太大了。
ξ
i
ξ_i
ξi 所做的事情是希望有一定的容错空间,但是这个容错空间又不能太大。那么我们怎么表征容错空间不能太大这个条件呢?
答案很简单,就是在我们的目标函数后面加上一项:
这样一来,我们最小化的式子同时顾及了前半部分是 Hard Margin SVM 最优化的内容,后半部分使得我们的 SVM 算法能够容忍一定的错误,但是这个容忍的程度要尽量小。这二者之间应该取得一个平衡,这个式子就是 Soft Margin SVM 最优化问题完整的数学表达式。
但是这个式子现在表达的是前后两部分所占比例是 1:1,但是按照惯例,它们所占的比例不一定是一样的,所以我们可以在后面一部分乘以一个参数 C C C 来平衡这两部分所占的比例。那么 C C C 就是一个新的超参数,我们可以使用网格搜索的方法来找到一个最好的 C C C 的取值。
现在我们所要解决的问题如下:
仔细观察这个式子,我们会发现我们相当于引入了一个
L
1
L1
L1 正则项。当然我们也可以引入
L
2
L2
L2 正则,那么式子相应的就变成:
到此,我们就将 SVM 的思想介绍完了,准确来说应该是线性 SVM,下一篇博客将会实际使用 sklearn 中的线性 SVM~~