( 保证能看懂系列)SVM系列(二)soft-margin SVM 详细原理以及一点点的kernel SVM
本篇继续针soft-margin 软间隔SVM原理进行梳理,需要先对hard-margin SVM 有所掌握,具体见SVM系列(一)hard-margin SVM 详细原理 https://blog.****.net/Lee_Yu_Rui/article/details/107420870
soft-margin SVM 思想
感谢https://www.youtube.com/watch?v=ZF2QR7nSUhg&list=PLOxMGJ_8X74Z1N3OcacUaCxiXaGNHtFw2的相关推导和讲解
针对硬间隔SVM,我们的目标函数式如下形式:
, s.t.
(1)
但硬间隔中,我们假设数据是完全线性可分的,但实际上这是比较难以实现的,所以准备不那么严格,在目标函数上加一点点loss,这个loss表示每个点错分的情况,所以(1)就可以写成
s.t. ,
(2)
对(2)目标函数的理解,我们说希望加入一点的loss,回顾一下(1)中的目标函数是在的前提下推导出来的,那现在这里
,如果
表明最小值不可能是1,该值越大距离1的偏离程度越远,也就是错分的样本就可能越多。目标函数中加了一个C的惩罚项,因为我们希望目标函数最小,C较大的时候,希望目标函数较小,则此时loss
就应该较小,也就是说对错分的要求是很高的。如果C较小,则希望目标函数较小,则此时loss
就可以较大,也就是说可以有一定的错分。
利用拉格朗日求解SVM
利用拉格朗日乘子法,对以下目标函数进行变形
s.t. ,
(2)
可以发现
可得到拉格朗日函数(这部分看不懂就去看系列一的讲解):
(3)
s.t. ,
需要经历对偶问题的转换得到如下(强烈建议把 SVM系列(一)hard-margin SVM 详细原理 公式(12)下面的关于为什么加min和max的解释在这里走一遍,因为下一篇的SMO算法里会用到)
然后就是对,w,b的求导,结果和hard-margin一致;另外增加了对 loss的求导
==>
==>
(4)
因为要求 ,
,
所以可以合并成 ,
,因为(4)中其他的条件都没有改变,所以最终样子和以前一样:C哪去了?自己带入以下就知道了。都抵消了
s.t. and
(5)
总结KKT条件,在整个过程中的限制条件:
,
,
,
,
,
,
(6)
kernel SVM
(三)数据是线性不可分的,利用非线性的转换,提高数据的维度,使得数据在高维度上线性可分,称为kernel SVM。下图中左编的图是无法用一条线分割的,但是如果我们通过某些中变化,可能就会使得数据在高维度线性可分,比如右图的情况,在中间产生一个平面就可以将其区分。
无论是hard 还是soft ,最终得到的都是这个式子,就是KKT条件不太一样,
这个式子在整理下
这中间的每一个x都是一个带有特征的数据,特征可能有很多,所以每一个都可能是高维度的数据,两个相乘就相当于向量的内积操作;上图对于线性不可分的操作经过一个
的操作,增加一个维度,使得数据变得线性可分;但是这个是因为左面的形式看起来比较容易得到
,但实际上,我们很难得到一个高维度的
。而且大量求内积也是非常困难的、
所以从聪明的人就想,能不能找到一个函数可以直接求得的结果,而不需要求
,这就是kernel函数
常用的kernel有线性的,多项式的,高斯的,还有一个radial 选择哪一种,以及里面的参数都怎么选择,我想就是交叉验证了吧。
hard-margin 求解实例
到目前为止,三种SVM的原理都已经阐述明白。可能你发现,好像还没有算出来呢?先以一个简单的低维度数据为例看一下整个的求解过程,
s.t. and
(7)
总结KKT条件,在整个过程中的限制条件:按照(11)可得
,
,
,
(8)
求出满足KKT条件的u,然后就可以得到w,b,若存在(xk,yk)满足
(9)
则最终的分类决策函数
(10)
题就是,求下图的最大间隔分离超平面,求解过程下面都给了,最后要计算b的地方简单提一下,就是将在直线中的点带入即可,任何一个都行,就是u不等于零的哪一个都可以
最后的结果是右边的红色和黄色部分,与我们最开始的直观看见的直线方程一致