本次的笔记参考了点击打开链接中的一部分观点,用了作者的一部分图像,若有侵权,请及时联系我。
本讲首先介绍了核的概念——它在SVM以及许多学习算法中都有重要的应用,之后介绍了L1 norm软间隔SVM——它是一种SVM的变化形式,可以处理非线性可分隔的数据,最后介绍了SMO算法——一种高效的可以解决SVM优化问题的算法。
核函数
在最初提出的房价问题中,特征是面积x,结果y是房子的价格。假如我们看出来样点x和y的分布符合3次曲线,那么我们最好使用x的三次多项式来逼近这些样点。接下来要做的工作是将特征x扩展到三维,然后寻找特征和结果之间的关系。这一过程称作特征映射。映射函数称作
,在这里:
我们希望将得到的特征映射后的特征应用于SVM分类,而不是最初的特征。这样,我们需要将前面公式中的内积从
,映射到
。
至于为什么需要映射后的特征而不是最初的特征来参与计算,上面提到的为了更好地拟合是其中一个原因,另外的一个重要原因是样例可能存在线性不可分的情况(类似于样本分布在一维空间上),而将特征映射到高维空间后,往往就可分了。
将核函数形式化定义,如果原始特征内积是 ,映射后为
,那么定义核函数(Kernel)为:
。
假设核函数:
与其对应的为(n=3):
如上式所示,若先计算,然后计算
是非常低效的。因为例如最初的特征是n维的,我们将其映射到n^2维,然后再计算,这样需要O(n^2)的时间复杂度。而经过核函数可以达到同样的效果,却只用计算始特征x和z内积然后再将得数平方即可,这样的时间复杂度为O(n)。
核函数可以有很多形式,对于上面的核函数,其更为一般的形式为:
与其对应的为:
更为一般的形式为,它能够映射出维度为
的特征向量。
还有另外一种形式的核函数:
针对这种核函数,如果x和z很相似,即 ,那么核函数值趋近于1;如果x和z很不同,即
,那么核函数值趋近于0。这个核函数能够把原始特征映射到无穷维。
核函数的合法性
给定一个函数K,我们能否使用K来替代计算,即核函数K的合法性如何确定?比如给出了
,我们是否能够认为K是一个有效的核函数?
给定m个训练样本 ,每一个元素对应一个特征向量。那么,我们可以将任意两个不同的元素和带入K中,计算得到
。I可以从1到m,j可以从1到m,这样可以计算出m*m的核函数矩阵K。为了方便,我们将核函数矩阵和核函数都使用K来表示。
如果假设K是有效地核函数,那么根据核函数定义:
可见,矩阵K应该是个对称阵。让我们得出一个更强的结论,首先使用符号来表示映射函数
的第k维属性值。那么对于任意向量z,得
从这个公式我们可以看出,如果K是个合法的核函数,那么,在训练集上得到的核函数矩阵K应该是半正定的(K>=0)。
这样我们得到一个核函数的必要条件:
K是有效的核函数==> 核函数矩阵K是对称半正定的。
同时,经过证明,这个条件也是充分的,由Mercer定理来表达,具体定义太繁琐,这里不列出。(其实是我没看懂…那个视频的翻译太坑爹…)
核函数的应用范围很广,除了应用在SVM上,只要在一个模型的算法中出现了<x,z>,就可以使用K(x,z)去替换,这可以改善算法。
L1 norm软间隔SVM
我们之前讨论的情况都是建立在样例线性可分的假设上,当样例线性不可分时,我们可以尝试使用核函数来将特征映射到高维,这样很可能就可分了。然而,映射后我们也不能100%保证可分。那怎么办呢,我们需要将模型进行调整,以保证在不可分的情况下,也能够尽可能地找出分隔超平面。
看下面两张图:
可以看到一个离群点(可能是噪声)可以造成超平面的移动,间隔缩小,可见以前的模型对噪声非常敏感。再有甚者,如果离群点在另外一个类中,那么这时候就是线性不可分了。
这时候我们应该允许一些点游离并在在模型中违背限制条件(函数间隔大于1)。我们设计得到新的模型如下(也称软间隔):
拉格朗日算子如下:
对偶问题
这与之前模型唯一不同在于 又多了 的限制条件
。需要提醒的是,b的求值公式也发生了改变,改变结果在SMO算法里面介绍。先看看KKT条件的变化:
第一个式子表明在两条间隔线外的样本点前面的系数为0,离群样本点前面的系数为C,而支持向量(也就是在超平面两边的最大间隔线上)的样本点前面系数在(0,C)上。通过KKT条件可知,某些在最大间隔线上的样本点也不是支持向量,相反也可能是离群点。
坐标上升
坐标上升法的基本原理如下:
假设要求解下面的优化问题:
(在这里没有约束条件)
最里面语句的意思是固定除之外的所有
,这时W可看作只是关于
的函数,那么直接对
求导优化即可。这里我们进行最大化求导的顺序i是从1到m,可以通过更改优化顺序来使W能够更快地增加并收敛。如果W在内循环中能够很快地达到最优,那么坐标上升法会是一个很高效的求极值方法。
下面通过一张图来展示坐标上升方法:
椭圆代表了二次函数的各个等高线,变量数为2,起始坐标是(2,-2)。图中的直线式迭代优化的路径,可以看到每一步都会向最优值前进一步,而且前进路线是平行于坐标轴的,因为每一步只优化一个变量。
坐标上升方法相比于牛顿方法等求极值的方法通常会用更多的步骤,但由于其每次只针对一个参数求极值,所以代价非常小。总而言之,它在通常情况下是一个相当高效的算法。
SMO算法
我们要解决的问题为:;我们可以采用坐标上升的方式来求解极值。但是坐标上升方法的基本形式不能满足要求,因为在对偶问题中有约束条件:
,
如果每次仅仅允许一个参数变化,那从本质上说那个参数并不是变量,因为根据约束条件可以由其他固定的参数推出这个参数。所以在SMO中,我们每次改变两个参数,而不再是一个。
SMO的步骤
(1)由启发式法则或者经验法则选择两个参数
(2)保持除了之外的所有参数不变
(3)在满足所有约束条件的情况下,用这两个参数最优化