全文字数:3672字
阅读时间:12分钟
前言
本系列是《玩转机器学习教程》一个整理的视频笔记。前面两个小节具体介绍了Hard Margin SVM算法的思想,并将这种思想转换为数学中的最优化问题。这一小节:
a
什么是Soft Margin SVM?
Hard Margin SVM算法的本质其实就是在求解一个有条件的最优化问题,求解出对应的w和b以后就可以得到决策平面的方程。
▲Hard Margin SVM本质求解有条件最优化问题
下图例子中红色箭头所标识的蓝色样本点远离蓝色样本点集中的区域。这里存在一个问题,如果使用Hard Margin SVM算法对下面的数据集进行二分类,Hard Margin SVM算法首先要保证能够正确的将红色和蓝色两个类别区分开。
▲远离样本分布的样本点
这种情况下使用Hard Margin SVM算法求解出来的决策边界很有可能是下图这样的一条直线。
▲此时的决策边界
可以发现上图中的决策边界能够正确的将训练数据集的两个类别区分开,不过显然这根决策边界的泛化能力不强,因为绝大多数的蓝色类别的样本点都集中在下面的区域中,只有一个红色箭头标识的蓝色样本点远离了这片集中的区域,而这个决策边界显然受到了这个被红色箭头标识的蓝色样本点非常强的影响,但是这个被红色箭头标识的蓝色样本点很有可能是一个outlier离群值或者是一个错误的样本点,即使是一个正确的样本点也是一个极度特殊的样本点,并不能代表一般的情况。
这种情况下很有可能下图中的决策边界是一个更好的决策边界。
▲更好的决策边界
虽然此时的决策边界将其中一个蓝色类别的样本点错误分类,但是很有可能将这样的训练结果放到真实的环境中、放到生产环境中进行真实的预测,它的预测能力比将所有的训练数据集都正确分类的决策边界还要好,也就是所谓的泛化能力更强。因此我们需要使用一个机制,这个机制能够使SVM算法得到的决策边界有一定的容错能力。我们最终的目标是希望模型的泛化能力尽可能的强,因此在一些情况下需要考虑将一些样本点错误的分类以提高模型的泛化能力。
来看一个更加一般的情况,假设现在这个蓝色类别的样本点在绿色箭头标识的位置。
▲更加一般的情况
此时数据集是线性不可分的,没有任何一条直线能够正确的将现在的数据集划分成两个类别。这种情况下Hard Margin SVM算法就已经不是泛化能力强不强的问题了,而是根本无法将两个类别的数据集正确划分开,无法得到一根合适的直线来充当决策边界。上面的两种情况不管从那个角度分析都必须做出一个拥有容错能力的SVM算法。
这种拥有容错能力的SVM算法叫做Soft Margin SVM,在介绍Soft Margin SVM算法之前先来回顾一下Hard Margin SVM算法,Hard Margin SVM算法的本质就是求解有条件的最优化问题。
▲有条件的最优化问题
对于Hard Margin SVM算法来说条件的式子一定是大于等于1,大于等于1的意思就是我们找到的margin区域中一定没有任何样本点,换句话说所有的样本点都必须在wTx + b = ±1这两根直线的外面。
现在我们对这个条件加以宽松,让所有的样本点不一定在margin区域的外面,而是给一个宽松量ζ。此时这个有条件的最优化问题中的条件变成了下图中s.t.中的式子。
▲加以宽松量的条件
接下来直观的理解一下,先来回顾之前介绍的Hard Margin SVM算法,我们最终要得到的这根决策边界对应的方程为wTx + b = 0,相应的可以找到wTx + b = ±1这两根直线,这两根直线之间的距离就是我们定义的margin。
▲加以宽松条件后区域
此时最优化问题实际上就是在最大化这个margin值,现在要允许SVM犯一定的错误。换句话说,允许一些样本点的范围在直线和虚线之间,此时打破了Hard Margin SVM算法的限制,也就是说可以犯一定的错误,此时这根虚线对应的方程为wTx + b = 1 - ζ。需要注意这个ζ也是有条件的,ζ ≥ 0,换句话说这根虚线要在上面wTx + b = 1这根直线的下面或者要在wTx + b = -1这根直线的上面,这样才可以让它犯错误。如果ζ ≤ 0为负数,相应的这根虚线就在wTx + b = ±1这两根实线的外面,相当于这个条件更加严格了,在这里需要注意对ζ的限定。
将条件最优化中的条件改成wTx + b = 1 - ζ,这就是Soft Margin SVM算法。还需要注意,ζ不是一个固定的值,而是对于每一个样本点i来说,都有一个对应的ζi。换句话说,假设此时有m个样本点,那么这个ζ相应的就应该有m个,也就是对于每一个样本点都求出它相对应的一个容错空间。
当然单单有这个条件是不够的,ζ≥0,当ζ取正无穷时,也就是让我们的这根虚线在wTx + b = -1这根直线下面无限远的地方,那么显然对于所有的样本点都将满足这样的条件,此时的容错的范围太大了。我们希望ζ有一定的容错空间,但是这个容错空间又不能太大。我们该如何表征容错空间不能太大这件事情呢?其实答案非常简单,就是在最小化方程的时候加上一项。
▲防止容错空间太大
加上的这一项就是所有求出来的ζ之和,这样一来我们最小化的这个式子就同时顾及了:
这两者之间应该取得一个平衡,此时这个最小化的数学表达式分成了两个部分,这样写其实相当于这两个部分所占的重要程度比为1:1,也就是它们是一样重要的。
之前介绍正则化的时候提到过这两个部分的比例不一定是一样的。我们可以在最优化式子的后半部分加上一个参数C,依然和前面介绍的一样,C用来平衡这两部分所占的比例。
我们用这样的一个参数来平衡Soft Margin SVM算法最优化式子中两部分的重要程度。参数C是一个新的超参数,我们可以使用网格搜索这样的策略来找到对于你所解决问题、你所采集的数据集而言最合适的超参数C的值。
下图就是Soft Margin SVM算法对应的最优化问题的数学表达式,Soft Margin SVM算法的本质依然是一个有条件的最优化问题。
▲Soft Margin SVM算法的最优化问题
b
Soft Margin SVM的正则化
通常下面的这种写法又称在Soft Margin SVM算法中加入了L1正则化。
▲Soft Margin SVM算法的L1正则化
我们可以把最优化式子中加入的ζ之和这一项理解成Soft Margin SVM算法的正则项,这一项避免我们训练出来的模型向一个极端方向发展。前面介绍的无论是为线性回归算法还是逻辑回归算法加入正则项的本质就是让模型针对训练数据集有更高的容错能力,拥有了容错能力之后,使得我们的模型对训练数据集中的那些极端的样本点不再那么敏感,通过这种方式当面对那些极端样本点的时候,预测能力能够有所提升,也就是所谓的模型泛化能力得到增强。
Soft Margin SVM算法有L1正则,相应的就有L2正则。
▲L1正则与L2正则
L2正则非常简单,L1和L2正则的具体区别表现在ζ的求和方式上。对于Soft Margin SVM算法来说,L2正则在最优化式子的后半部分变成了ζ的平方和。在线性回归和逻辑回归算法中,L1和L2正则是在最优化式子中加上θi求和的一项:
为什么在SVM算法中L1正则不是对ζ的绝对值进行求和呢?非常好理解,这是因为我们已经对ζ进行了限定,ζ≥0,ζ取绝对值之后还是ζ本身,所以我们不需要加上这个绝对值符号。其实在表达式的形式上和之前介绍的线性回归和逻辑回归对应的正则项是一致的,只不多在正则项的具体意思上,这个ζi表示的几何意义和线性回归、逻辑回归中θi表示的几何意义是有所区别的。
另外一方面注意到对于SVM的正则化来说,超参数C放在正则项的前面,但是回忆之前介绍的线性回归算法和逻辑回归算法相应的超参数C是放在MSE损失函数的前面。在SVM算法中超参数C的位置虽然变了,但是它的意思和之前在线性回归算法和逻辑回归算法中介绍的正则化超参数C的意思是一样的,超参数C越大表征的容错空间越小。
▲简单小结
小结
深入理解了Hard Margin SVM算法之后,再来看Soft Margin SVM算法的思路其实非常简单。至此将SVM算法的理论部分介绍完了,其实更准确的说是将线性SVM,Linear SVM算法的理论部分介绍完了。
到目前为止SVM算法求解出w参数和b参数,进而得到的决策边界是一个线性的方程。在二维平面中决策边界是一条直线,在高维空间中决策边界就是一个超平面。下一小节将会使用Sklearn库中为我们封装好的Linear SVM来实现SVM算法。