(一)SVM的原始问题
假设所有点,可以被超平面
正确分割。
即
这样每个点到超平面的几何距离为
,我们希望被超平面分割后的间隔最大化,即所有点到超平面的几何距离中最小的几何距离即
,被称为分割间隔.
从而SVM的原始问题为:
(1)
我们不妨假定,将原始问题变形如下:
(2)
理由如下:
假设为问题(1)的解,记
,那么
|也是问题(1)的解。对任意
,
第一个等式,根据的定义,第二个不等式根据
为问题(1)的解,可见
确实是问题(1)的解。
下面首先说明为问题(2)的解,假设任意
,我们需要证明
。
由于为问题(1)的解,因而
再根据,上面的不等式变为
,即说明
为问题(2)的解。
其次还需要证明问题(2)的解也是问题(1)的解。设
为任意值,我们需要证明
记,令
,则
,从而
其中第一个等式根据满足问题(2)的条件,第二个不等式根据
是问题(2)的解,第三个等式根据
满足问题(2)的的条件,第四个等式根据
的定义带入,至此证明了问题(2)和问题(1)的等价性。
(二)原始问题的条件弱化:引入松弛变量
问题(2)的另一种等价描述:
(3)
这里要求所有点到超平面的几何距离都要大于或等于最小间隔1,而现实中很多问题并不能够通过超平面将所有样本点完全分割开,即有可能出现甚至为负数的情况,即允许出现误分类的情况,其数学表达为:
,其中
表示容错的程度,即为松弛变量,但是我们又希望这种误分类的程度尽可能小,这中间的权衡可以通过将松弛变量引入到优化目标函数中,赋予其惩罚因子C,这里的C为人为确定的超参数,代表了对误分类的惩罚力度。此时问题可以进一步转化为:
(4)
至此,问题转化为一个纯优化问题。
(三)利用拉格朗日乘子法,向对偶问题转化
利用拉格朗日法,问题(4)转化为:
(5)
此处可以理解为当突破(4)的松弛条件时,首先利用,
进行无穷大力度的惩罚,自然也就不可能突破松弛条件的限制。
问题(5)的对偶问题为:
(6)
先解决(6)的内层,将关于
分别求偏导数得到:
此为K.K.T条件
将其代入(6)得到:
(7)
如果我们得到了问题(7)的解,再利用K.K.T条件我们可以得到
进一步分析,发现,之前提到过
,都代表惩罚力度。
当,表明
,表明该点并非支持向量,且在分割区间外部;
当,表明
,表明该点并非支持向量,且在分割区间内部;
当,表明
,表明该点是支持向量。
此处的分析,可以通过(5)式得到,由于,我们在利用(5)式进行惩罚时,其最后两项,哪一项较大,那么惩罚的力度也就分配得越多,才能保证内层表达式的最大性。
(四)利用SMO算法来解决快速优化问题
1.SMO算法思想及可供优化条件
要解决问题(7),传统的优化方法效率比较低,主要原因是样本量m一般都很大。SMO算法的思想在于每次选中两个来进行优化,而固定其他的保持不变,直到循环达到上限N次或者没有可供优化的
对为止。
首先,需要给出一个可供优化的条件,假设已经随机初始化,b,那么。这里给出可供优化的条件为:
其中
条件说明,在给定时,可以根据K.K.T条件得到
,因而
,第一项表示样本点
到超平面的距离,如果此距离为负数,表示被误分类了;如果此距离比1小,表示此样本点在分割间隔内部,条件一可以理解为,当样本点被误分类了或者被判定到了分割间隔内部距离间隔边缘小于-
可以忍受的范围,然而惩罚力度却没有达到最大值
,那么这个
是可供优化的。同理,如果样本点已经被判定到分割边缘的足够的外部,即此样本点不需要惩罚,但是惩罚力度却并没有消失,那么这个
是可供优化的。简化版的SMO算法,只选择一个可供优化的
即可,另外一个
是随机选取的。为了叙述简洁,假设可供优化的为
。
2.利用抛物线顶点原理确定
假设选择待优化的为,固定
。那么问题(7)转化为:
(8)
根据限制条件三,我们可以进一步将目标函数转化为仅关于的二次函数。
记,则
。
其中
将上述四个中括号内的式子分别记为I,II,III,IV。可知,II=III。在固定时,
和IV为常数,从而
为常数,记为
。
从而
根据限制条件三,,两边同时乘以
,得到
,将其代入L,得
记
求此关于的抛物线顶点为
至此,我们基本上完成了对的更新,但是存在两个方面的问题a)
未必满足问题(8)的限定范围,即对称轴可能落在取值区间之外;b)此更新公式未能充分利用
的不变性,每次计算
这种遍历所有样本的求和问题将大大降低计算速度。
3.更新
由于问题b)比较容易说明,这里先解决问题b)。考虑到在选择可供优化的
时,已经计算,我们再进一步分析
的表达式:
将
代入的更新公式得
此更新公式充分利用了的信息且具有更新形式。
下面考虑问题a),首先考虑问题(8)的限制条件确定的的取值范围:
(9)
更具下图
当时,下限和上限分别为
当时,下限和上限分别为
从而的最终更新公式为:
这里的更新公式根据(9)式中的第三个条件很容易推出。
4.更新
根据第三部分最后的说明,当时,表明
为支持向量,即
同理,若表明
为支持向量,即
从而,b的更新公式为:
当时,取
的平均数,并没有什么效益,因为对应样本点不是支持向量,这里只是一种启发式取平均值,事实上b取
之间的任何数都可以,属于无效估计的范畴,只是起到更新的作用。