对于线性可分SVM和线性SVM而言,其实默认数据是线性可分,或近似线性可分的。但是实际数据大多数为线性不可分的,因此,为了能够对数据进行准确划分,需要引入一些 tricks(kernal tricks),这就是核函数要做的事情,通过将低维数据映射到维核空间,使得数据在高维核空间可分,进而实现对类别的准确划分,其工作原理如图1所示。
图1 核函数的工作原理示意图(摘自资料[1])
一、常见核函数
1) 多项式核函数:
其中,a,b,r都为常数。
2) 高斯核函数:
3) sigmoid核函数:
其中,都为常数。
核函数具有什么性质?下面这个例子来自于资料[1]。
假设存在两个数据点,核函数,因此有:
直接计算有:
先求,再做核映射,有:
不难发现,我们先将点X1,X2做高维核变换之后再求内积,等价于先对点X1,X2求内积,再做高维核变换。这样做的好处在于,如果先做核变换,再对高维数据求内积,当维度过大时,计算量爆炸,因此,一般采用先在低维上做内积,再将内积值映射到高维。
二、SMO算法,求解及决策超平面
其实不难发现,线性可分SVM为线性SVM的特例,因此,只需要求解线性SVM即可。原问题最大化问题:
可以转换成对应最小化:
按照前面描述,等价于,保证和前面核函数描述一致,记为
SMO(Sequential Minimal Optimization)即序列最小优化,通过固定其中N+2个参数,将原始问题就转换成了求解二元函数问题。
假设,当前选取的变量为,有:
2.1 边界条件
这里可以分为两种情况:同号和异号。
2.1.1 异号
异号时有:
1、则:
2、则:
而,所以异号时,图像如图2所示。
图2 异号
即要在正方形区域内,又要在直线上,可以由表示,的取值范围为:
而L中,H中,有:
2.1.2 同号
同号时,为保证与异号时符号的一致性,即,有:
1、则:
2、则:
而,所以同号时,图像如图3所示。
图3 同号
即要在正方形区域内,又要在直线上,可以由表示,的取值范围为:
而L中,H中,有:
最后,求解有,取值应该位于区间,如果求取得到的超出这个范围,取边界条件,然后进行验证。
2.2 求解
由于假定为变量,其余为常量,求目标函数最小值时,我们只需要考虑包含的项,则目标函数变为:
由假设有:
由于,两边同时乘以有:
则:
令:
将回代到中有:
将对求导数并令其为0,有:
我们然后用表示有:
回代到上面式子有:
定义残差:
则:
将代入有:
两边同时除以两边常量有:
利用上式,就可以迭代的得到,利用与之间线性关系,就可以得到,终于得到这个递推式子,非常感谢刘建平Pinard的博客[3],终于对照着推出来了。
最后贴一下SMO的步骤,这两页ppt摘自参考资料[4].。
三、Hinge Loss
求解SVM除了采用SMO来做,还可以采用优化的思路,定义一个误差,使用梯度下降法来进行优化,通过最小化误差项来求解SVM。
参考资料
[1] 唐宇迪的机器学习课程
[2] http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html
[3] https://www.cnblogs.com/pinard/p/6111471.html
[4] 2016小象学院-机器学习升级版II(邹博)