版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_34072381/article/details/83996778
前言
前面几节无论对于线性可分SVM、线性SVM还是非线性SVM,原始问题的对偶问题均转化为以下形式
αmins.t.21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαii=1∑Nαiyi=00≤αi≤C,i=1,2,⋯,N
之前章节未给出如何求解该约束问题的解,对于这类凸二次规划问题有较多的优化求解算法,但当训练样本容量大时,这些算法计算低效,本节主要介绍用于快速求解凸二次规划问题的SMO算法。
对偶问题求解的SMO算法
算法思路
序列最小化最优化算法(SMO)是一种启发式算法(约束条件限制,不能使用梯度下降法),基本思路:
若所有变量的解满足KKT条件(最优解充要条件),则解为最优解。否则,选择两个变量,固定其他变量,构建二次规划子问题,然后对子问题使用解析方法(效率高)求出使原始目标函数值变小的解。如此迭代,直到所有变量均满足KKT条件。
最优化子问题(两个变量的二次规划问题)
选择
α1,α2两个变量作为优化目标,其他变量作为常量,若在原始目标函数中省略常量
α3,⋯,αn,得最优化子问题
α1,α2mins.t.W(α1,α2)=21K11α12+21K22α22+y1y2K12α1α2−(α1+α2) +y1α1i=3∑NyiαiKi1+y2α2i=3∑NyiαiKi2α1y1+α2y2=−i=3∑Nαiyi=ς0≤αi≤C,i=1,2
约束条件分析
仅两个变量的二次规划问题,约束条件为位于
[0,C]×[0,C]的正方形内线段,如下
图1 二变量优化问题图示
若以
α2为优化目标,且初始可行解为
α1old,α2old,令最优解为
α1new,α2new,因此
L≤α2new≤H
由于初始解与最优解均在约束线段上,故约束线段所在直线:
α1newy1+α2newy2=α1oldy1+α2oldy2,y∈{+1,−1}
当
y1=−y2时(上图左图),最优解
α2new的上下界满足
L=max(0,α2old−α1old),H=min(C,C+α2old−α1old)
当
y1=y2时(上图右图),最优解
α2new的上下界满足
L=max(0,α2old+α1old−C),H=min(C,α2old+α1old)
子问题求解
令
g(x)=i=1∑NαiyiK(xi,x)+b,则预测误差
Ei=g(xi)−yi。
利用
α1=y1(ς−α2y2)对
W消元,得到关于
α2的单变量二次规划问题,可利用解析法求出闭式解。因此,对
α2求偏导得
∂α2∂W=K11α2+K22α2−2K12α2−K11ςy2+K12ςy2+y1y2−1−y2i=3∑NyiαiKi1+y2i=3∑NyiαiKi2
α2的最优解
α2new位于偏导为0处,即
(K11+K22−2K12)α2new=y2(y2−y1+ςK12−ςK12+i=3∑NyiαiKi1−i=3∑NyiαiKi2)
将
ς=α1oldy1+α2oldy2代入,并考虑到解的约束条件,则沿约束方向经剪辑之后的最优解为
α2new=max(L,min(H,α2old+K11+K22−2K12y2(E1−E2))),α1new=α1old+y1y2(α2old−α2new)
变量选择与优化计算
初始解
α=0,若使用
α1,α2构建优化子问题,则应使得
α1,α2在更新后使
α更趋向于最优解。因此,第一个变量
α1应首选违反KKT条件最严重的变量,第二个变量
α2应选择使目标函数下降最快的那个,为简化计算,选择与
α1间隔最大的
α2(周志华《机器学习》)。
一、第一个变量
α1的选择(外层循环)
首选满足
0<αi<C的样本点(间隔边界上的支持向量),检查是否满足KKT条件,若均满足,则再遍历
αi=0和
αi=C样本点,查找不满足KKT条件的样本点;
如何检验是否满足KKT条件?
根据
αi与
yig(xi)的关系,进行判断
αi=0⟺yig(xi)≥10<αi<C⟺yig(xi)=1αi=C⟺yig(xi)≤1
二、第二个变量
α2的选择(内层循环)
由于
α2new依赖于
∣E1−E2∣,为了更快地得到全局最优解,
α2应使
E1−E2具有较大变化。当
E1<0,选择具有最大
E2的
α2;当
E1>0,选择具有最小
E2的
α2;若所有的
α2均不能使
E1−E2具有较大变化,跳出内循环重新选择
α1。
注:保存
Ei的值可节省计算时间
三、计算阈值
b和差值
Ei
每次完成
α1,α2的优化后,需更新
b。当
0<α1new<C,由KKT条件知该样本点为间隔边界上的支持向量,即
i=1∑NαiyiKi1+b=y1
因此
b1new=y1−i=3∑NαiyiKi1−α1newy1K11−α2newy2K21
可使用保存的
E1减少不必要的计算,由
E1=i=3∑NαiyiKi1+α1oldy1K11+α2oldy2K21+bold−y1,得
b1new=−E1−y1K11(α1new−α1old)−y2K21(α2new−α2old)+bold
若
0<α2new<C,则
b1new=b2new;若
α2new=0或
C,则
b1new和
b2new之间任意值均满足KKT条件,一般令
bnew=(b1new+b2new)/2。
为什么当
α1new,α2new同时满足
0<αinew<C,则
b1new=b2new?
当
0<αinew<C,对应样本点位于间隔边界(支持向量),超平面的截距
b被唯一确定(第一节已证)。
更新完
α1,α2,b后,需更新
E1,E2,即
Einew=S∑yjαjK(xi,xj)+bnew−yi
式中,
S是支持向量集合(消去
αj=0的项)。