错分问题与离群点问题
之前的SVM(http://blog.youkuaiyun.com/ice110956/article/details/23436171)推导前提条件是样本线性可分,或者至少在高维空间中线性可分。但是许多情况下,并不是高维可分的。先考虑如下面这种情况:
由于一个小的离群点,整个分隔平面发生了很大的改变。于是我们寻求宽松的限制原则来改进之前的严格SVM,从而也能够处理高维不可分情况。
考虑加入正则化项,如下:
其中,也就是不是所有的样本的函数间隔都要大于1,这个条件弱化的离群点的影响。
当时,函数间隔为负,也就是样本错分。这样也就是允许一定的错分。
在目标函数中加入惩罚项
其给离群的点,错分的点一定惩罚。
根据之前的对偶规划,我们也能得到:
对比之前的公式,两者唯一的不同是KKT互补条件由变为
。
之前论述过,alfa !=0的项是少数的几个支持向量。同样的,我们有类似结论:
SMO算法
之前的推导到以alfa为变量的最优化为最后形式。下面讨论如何解这个问题。
坐标上升法
考虑解下面的最优化问题:
其中alfa为m维的量。
我们直观地用逐一求解的方法,求解i时,固定其他所有的未知量,依次迭代求解,步骤如下:
称为坐标上升法,其二维上的求解图如下:
比较其他常见的下降法,如最速下降,牛顿法等。一般的方法以alfa向量为单位,根据矩阵求导的方法,每次更新整个向量。
相比而言,坐标上升法迭代步骤更多,但是每次求解是都把问题化简为一维的最优化问题。也就是虽然步骤增加,但是每次都更简单。这是坐标上升法的优势。接下来把这种方法运用到SVM的求解中。
SMO算法
考虑我们最后得到的SVM优化公式如下:
其中的最后一个约束项,使得我们不能简单运用坐标上升法。因为如果固定其他alfa,求解alfa(i)那么根据最后一个约束项
Alfa(i)也是不可改变的。
于是,我们一次改变两个变量。
每次根据一定的策略,如顺序,选择两个变量,固定其他变量,求解两个变量的最优化,步骤如下:
假设现在选取alfa1,alfa2两个变量,得到:
简化表示如下:
其约束在二维空间上表示如下:
Alfa1用alfa2表示:
带入原问题,得到:
上述可以化为以alfa2为变量的一元二次方程:
求解后,再考虑得到的解是否满足上面的alfa2定义域,如果不满足,则做一定的裁切,使得得到的结果在定义域内: