- 软间隔的提出
- 对偶问题及其化简
- 参数的求解
- 参数的调优
1.软间隔的提出
上一篇文章(手推SVM(二)-核方法 )我们用核方法来解决线性不可分问题,但如果即使映射到高维空间中,仍然有部分点不能完美的区分开呢?
如图,无论核函数怎么选取,都不能完美区分开数据,即使能完美的区分开数据,也会很容易导致过拟合的发生,这时候我们该怎么办呢?
既然人在做某事的时候,能允许犯一点小错,那模型为什么就不能允许犯一点小错呢?这就是软间隔的想法,既然确实无法区分开,那我就允许部分点分类错误就OK了,因为那部分点也有可能是离群点或噪声数据。
换成公式就是:
pocket表示允许部分点的预测标签与真实标签不一致,但只要这个不一致的数据数量最小就好了。
把两者结合起来,就是:
对于部分样本允许它的值大于负无穷,也就意味着允许它分类错误,参数C的作用就是为限制分错的样本数量,调整C可以让模型是更注重margin还是更注重分错的数量,使模型的准确率保持在一定范围内。
把两个条件合成一个条件,表示如果它分类正确的话,就让我们更注重margin。
但是,发现这个条件约束不是一个线性函数,如果不是线性函数,那我们之前所推导的对偶问题,核函数就都不能使用了,那该怎么办才好呢?
那我们上面是看分类错误的个数,那既然分类错误了,我们能不能看一下错的有多离谱呢?就像我们和你偶像之间的距离,你应该想知道你和他到底差了多少个级别,哪里离得比较远,你就知道自己哪里不足了,然后慢慢的学习,私底下慢慢的改进,模型也一样呀,那我们可以不记录到底错了多少个,我们看一下分类错误的样本还差多少能被分类正确,因此定义了 ξn ,它表示分类错误的时候,还需要多少距离,才能被分类正确。
用图形表示 就是希望如下违规点的violation的长度越小越好,最好小于等于0.其中C在其中的作用就是控制间隔的大小和违规的样本数量。C越大,就代表我们希望违规的样本越少越好,哪怕这个margin(街宽)变小也无所谓;C越小,就代表允许有很多违规的样本,但希望我们的margin大一点比较好。
其实这样的计算误差的方法就是SVM中的损失函数,我们通过一个图像识别的例子看一下它具体是怎么做的?
详细例子:
hinge loss/线性SVM的损失函数
假设上面那张猫的图片数据为 xi ,其他还有狗和船的,在W下有一个得分向量
用公式表示: