@zsh-o
2018-08-26T19:47:46.000000Z
字数 14062
阅读 1920
机器学习
代码请移步:7 - SVM-SMO —— 代码
首先对于线性可分的数据必然存在一个分离超平面能够把数据完全正确的分开,我们的目标就是要求该分离超平面的形式。前面的感知器通过最小化分错的点到超平面的距离
为所有被分离超平面错误分类的点的集合。上式中个人感觉因为上面的式子不好算所以用了下面的式子来代替,然后用迭代的方法更新,但这时得到的解不是唯一的,有无穷多个,线性可分的SVM用间隔最大化来求解分离超平面,相当于在原始感知器的基础上加了一个间隔最大化的条件,使解是唯一的
对于超平面样本点的函数间隔为
但对于函数间隔来说,当等比例变化时表示的该超平面不变,但函数间隔变为原来的倍,故不能直接用函数间隔来表示
现有间隔表示几何上点到超平面的距离
由此SVM表示为了最大化样本点中最小的几何间隔
由于当成比例的变化时函数距离也成比例变化,但该超平面不变,几何间隔也不变,故此时的函数间隔可取任意值,现取,也就是说样本点到超平面的最小函数距离设为,故此时的优化问题变为
该优化问题等价于
这样就消去了上面的最小化间隔形式中的,转变成了一个单纯的二次优化问题,该优化问题存在不等式约束故需要用KKT条件,现插播一下KKT条件
KKT条件使用松弛变量法推出来的,现有优化问题
用松弛变量使不等式约束转变为等式约束
然后根据拉格朗日乘子法得到
然后求偏导
得到,现在可分为两种情况
所以等价于或者也就消去了松弛变量
故此时有
并且对应的KKT条件为
由上一节可以得到
故现在优化问题变为一个极小极大问题
其与一个极大极小问题对应
由上面的KKT条件可以消去里面的
故现在优化问题变为
关于支持向量的图示网上有很多这里就不再画一个了,只说下在优化的角度支持向量的解释
支持向量是那些在分割带边缘的点,也即满足最小化间隔的点,在上述的优化问题中就是满足的点,支持向量有一个性质,SVM的解只与支持向量有关,而非支持向量的变化不改变SVM求解的超平面,再由前面的KKT条件的得到,支持向量需满足,这时改点构成的约束起作用,并且该约束退化为等式约束也同样表示了在分隔带边缘的点,而其他点满足约束而,此时对应的约束失效,同样表示为非支持变量的变化不影响最终优化的解
解上面的对偶优化问题可以得到最优的,要得到最终的学习机的形式需要得到该超平面,由上面可以得到,想要得到具体的学习机的形式还需要知道的值,这里用的是支持向量的性质,由上面得到支持向量满足等式得到
则分离超平面为
并且对应的决策函数为
可以看到不管是对偶优化,还是分割平面和最终的决策函数都只与样本的的内积有关
SVM为了应对线性不可分的情况采取了一种软间隔策略,首先看下SVM如何看待线性不可分,其把线性不可分的数据看成了在线性可分基础上的一些少量离群点,线性可分的形式在最小间隔下所有的点需要满足,由于有少量离群点的存在,该间隔用松弛变量法成了一个软间隔的形式
可以看作是每一个点对应的与最小间隔边界的误分类的函数距离,而反过来的存在也模糊化了该最小间隔的边界,此时优化目标函数加了一个该误分类距离的惩罚项,让该误分类距离尽量小,现在优化目标变为
这里表示对误分类距离的惩罚系数
由拉格朗日乘子法得
带入上式可得到
并且由得到,由于故
最后由上面的极大极小转化为极小极大,最终优化问题变为
分析一下对偶情况下样本点的约束情况,此时需要满足两个重要的KKT条件有
故此时有:
最后看一下惩罚项的影响,本身松弛因子是不影响最终优化结果的,但SVM在原始目标函数上加了一个包含松弛因子的正则化项,使得惩罚项对应的松弛因子对最终的优化结果产生了影响。由上面可知,由于对偶因子和代表了该等式约束在该优化问题中的影响力,当,两个等式约束项同时起作用,但越大越小,故虽然此时点均在分离间隔边界上,但其仍然是不同的,其与的大小有关,越大该点在优化中越重要,但对应的松弛因子越“容易”变大,当时,松弛因子突破0,此时的松弛因子对应的等式约束不再起作用,表现在分类数据集上是两个不同的类点越靠近(越“杂糅”)越大,当到达一定程度松弛因子开始起作用,其使该“离群点”不影响最终的优化,从而达到该离群点不影响最终优化结果的目的。由后面的SMO优化过程可知,优化过程通过求解得到的,故当比较大时,会有更多的点在分离间隔的边界上。
个人赶脚SVM作为统计模型还缺点啥,如果换成随机变量来分析会不会有不一样
关于核方法已经超出我现在理解的能力范围,只是拿来主义的说下核方法的形式
首先SVM划分了输入空间和特征空间,都是基于上面的内积(内积空间是数分里面的内容,我现在的理解还不够)的性质
为了能够解决非线性问题,SVM引入了核方法,通过把原始的输入空间映射为特征空间,使原始非线性的输入空间转变为线性可分的特征空间,并在特征空间进行线性分类。再由上面可知,SVM只与的内积有关,此时的在特征空间,而且只与当前所有样本点的特征向量的内积有关,故提出了一种核函数的方法
输入空间为,特征空间为,而SVM的输入是在特征空间中,原始输入空间非线性问题被映射为了一个特征空间成为一个线性可分问题,设映射为,然而特征空间有可能是非常高的维度或者是无穷维,故提出了一种核函数的方法能够用输入空间中的函数的形式来表示在特征空间中的内积
这样就能只需要显式的定义核函数,而不需要显式的再定义具体的映射,我们都知道SVM通过把样本映射到高维空间,使其变成一个线性可分,如果直接按照原始形式在高维特征空间进行求解,那么参数的维度也很大,而对偶内积的形式所求解的参数数量只与样本量相等,相当于每一个样本构成了一个约束,而由特征空间内积引发的核函数使特征空间中的内积变成了一个输入空间中函数的形式,使得不必映射到高维空间也仍然能达到相同的效果。
但需要特别注意的一个问题是,SVM的核方法把输入样本映射为高维的特征空间,在高维空间中如何保证算法的有效性,如何分析其误差,这才是SVM真正的难点所在
那么优化问题就变为
核方法还是比较难,涉及到的理论也比较深,可扩展性很强,等我数分到达一定程度再来写核方法相关部分
现在就剩下如何对该对偶问题进行优化,这里用的是SMO(序列最小最优化算法),该方法是每次只选取两个变量进行优化,直至所有变量都满足约束条件(KKT条件)的时候即完成了优化,但这个方法需要证明收敛和等价,但好像都没有相关证明
每次只选择其中两个变量进行优化并固定其他变量,设这两个变量为,根据有
那么这时该优化问题的子问题为
这里有
把代入原式得
这里可以进一步化简,有
接下来是根据上文中的约束条件对上式求得的进行裁剪
有上文可知需要满足的约束为
上式第一个约束条件把约束在了平行于正方形对角线的一条线段上,这时分为两种情况
由图很容易得出
故经过裁剪后的为
由此有
接下来需要根据更新后的的值更新,前面提到,更新依赖需要有一个位于决策边界的点才行,也就是说要有一个满足,故这时需要判断求得的和是否满足条件
当时,
由前面可知,的更新依赖于,故依赖于上次迭代的,故需要用和
可得到
代入上式得
当时,同理得
故当和同时满足时,而当和同时取或时,书上说和都是符合KKT条件的阈值,这时选择他们的中点,但不知道为啥
最后再更新E的值
书上说这里用的是所有支持向量,但非支持向量的,故效果相同
终止条件是让SVM不再变化并且尽量满足KKT条件,这里加了一个KKT条件的阈值,就是SVM中常见的,在判断KKT条件时只要满足范围内即可,其在一定程度上控制了SVM的最终精度和运行时间。另外一个常见的是eps
,其控制每次的变化量的阈值?
这样迭代过程为,每次先找到一个不满足-KKT的变量,然后再找另外一个变量来执行子优化过程,当遍历完成一遍整个数据集,找不到这样的变量对时结束
过程如下
是为了让第二个变量能够有最大的变化,因为
这个地方原始论文上说只让最大,因为核的计算需要花费时间,但这里我们预先把所有样本点的核矩阵保存起来了,这个地方个人认为可以改为
SVM的原始思想还是非常简单的,但伴随其的数学方法却很有难度,其把一种很简单的思想转换成了一种数学问题一种求解优化问题,并完美的把核方法带入进去
最后的SVM另外重要的一块是其误差分析,和核方法的误差分析,这部分等我把统计学习理论搞懂了再来写:>