支持向量机SVM(1)——间隔最大化
支持向量机SVM——间隔最大化
主要参考西瓜书…
1.什么是超平面
相信了解过逻辑回归的都知道,我们对于n=2(特征为2个,这里只是方便可视化)是通拟合一条曲线,作为决策边界。
那么如果特征n等于3、4 . . . 1000呢?这个时候我们我们就称这个用来分割不同类别的“线”称为超平面(hyperplane),这里的超我理解的就是多维的意思。
2.为什么要间隔最大化
如果我们要用一条直线来将下面这张图中的两种类别(“+”和“-”)分开,可看到我们是可以有多条曲线的,那么那一条是最好的呢?
直观上我们应该选红色的这条线,感觉它是“最能”分开这两种类的。因为如果选择黑色的线,那么可能存在一些点刚好越过黑色的线,导致被错误分类,但是红线的容错率会更好,也就不容易出错。
例如下面这种情况,如果我选择绿色的线,蓝色的那个点本来属于“+”,但是却会被分到“-”这一类,但是红线就不会。也就是说诸如蓝色的这样一些点(噪声)对红线的影响最小,这也称为鲁棒性(即健壮性)。
这里我们补充一下间隔最大化中的“间隔”指的是什么?
从上面的例子中我们很容易直观的感受到红线的间隔最大;这里间隔就是上面图中的这些点到直线的距离中的最小值,最大化间隔就是想让这个最小值最大,也就是让红线的容错率尽可能的大。
并且这些到直线最短的点也被称为支持向量(support vector)
3.如何实现间隔最大化
(1)首先介绍一下点到平面的距离公式:
设我们的超平面为:,
样本空间中任意一点到超平面的距离为:
【注:w,x表示的是向量】
距离公式的证明
(2)对训练样本进行分类:
为了方便,这里我们把上面的“+”和“-”这两类分别用+1和-1表示
假设超平面能将训练集分类,那么训练集中的样本则满足以下条件:
看到下图,这里我们找了两条虚线(和),而这两条虚线之间的间隔就是我们要找的最大间隔,因为下图中我们圈起来的“+”和“-”点正是两种类别数据集中到超平面距离最小的点。
此时上面的条件就可以变为:
也可以简写为:
将虚线的值带入上面(1)中的的距离公式得到最大间隔:
(这里的是两个类别中的最小距离之和,因此分子是2)
那么为什么上面的我们要取+1和-1呢,这是否具有普遍性?
其实【】不一定要取1,可以是其他大于0的数,这里取1只是为了计算更方便,取其他值我们也可以通过缩放w,b来达到一样的效果。
因此我们的目标是让间隔最大,也就是在满足条件下,让最大,也就是让最小就可以,等价于最小化。
总结: