支持向量机SVM(四):对偶问题求解的SMO算法

版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_34072381/article/details/83996778


前言

前面几节无论对于线性可分SVM、线性SVM还是非线性SVM,原始问题的对偶问题均转化为以下形式
min α 1 2 i = 1 N j = 1 N α i α j y i y j K ( x i , x j ) i = 1 N α i s.t. i = 1 N α i y i = 0 0 α i C , i = 1 , 2 ,   , N \begin{aligned} \min\limits_{\bm\alpha}&\quad\frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N\alpha_i\alpha_jy_iy_jK(\bm x_i, \bm x_j)- \sum\limits_{i=1}^N\alpha_i \\ \text{s.t.} &\quad\sum\limits_{i=1}^N\alpha_iy_i=0\\ &\quad 0\leq\alpha_i\leq C, \qquad i=1,2,\cdots,N \end{aligned}

之前章节未给出如何求解该约束问题的解,对于这类凸二次规划问题有较多的优化求解算法,但当训练样本容量大时,这些算法计算低效,本节主要介绍用于快速求解凸二次规划问题的SMO算法。


对偶问题求解的SMO算法

算法思路

序列最小化最优化算法(SMO)是一种启发式算法(约束条件限制,不能使用梯度下降法),基本思路:
若所有变量的解满足KKT条件(最优解充要条件),则解为最优解。否则,选择两个变量,固定其他变量,构建二次规划子问题,然后对子问题使用解析方法(效率高)求出使原始目标函数值变小的解。如此迭代,直到所有变量均满足KKT条件。

最优化子问题(两个变量的二次规划问题)

选择 α 1 , α 2 \alpha_1,\alpha_2 两个变量作为优化目标,其他变量作为常量,若在原始目标函数中省略常量 α 3 ,   , α n \alpha_3,\cdots,\alpha_n ,得最优化子问题
min α 1 , α 2 W ( α 1 , α 2 ) = 1 2 K 11 α 1 2 + 1 2 K 22 α 2 2 + y 1 y 2 K 12 α 1 α 2 ( α 1 + α 2 )    + y 1 α 1 i = 3 N y i α i K i 1 + y 2 α 2 i = 3 N y i α i K i 2 s.t. α 1 y 1 + α 2 y 2 = i = 3 N α i y i = ς 0 α i C , i = 1 , 2 \begin{aligned} \min\limits_{\alpha_1,\alpha_2}&\quad W(\alpha_1, \alpha_2)=\frac{1}{2}K_{11}\alpha_1^2+\frac{1}{2}K_{22}\alpha_2^2+y_1y_2K_{12}\alpha_1\alpha_2-(\alpha_1+\alpha_2)\\ &\qquad\qquad\qquad\ \ +y_1\alpha_1\sum_{i=3}^Ny_i\alpha_iK_{i1}+y_2\alpha_2\sum_{i=3}^Ny_i\alpha_iK_{i2}\\ \text{s.t.} &\quad\alpha_1y_1+\alpha_2y_2=-\sum\limits_{i=3}^N\alpha_iy_i=\varsigma\\ &\quad 0\leq\alpha_i\leq C, \qquad i=1,2 \end{aligned}

约束条件分析

仅两个变量的二次规划问题,约束条件为位于 [ 0 , C ] × [ 0 , C ] [0, C]\times[0,C] 的正方形内线段,如下

图1 二变量优化问题图示

若以 α 2 \alpha_2 为优化目标,且初始可行解为 α 1 old , α 2 old \alpha_1^\text{old},\alpha_2^\text{old} ,令最优解为 α 1 new , α 2 new \alpha_1^\text{new},\alpha_2^\text{new} ,因此
L α 2 new H L\leq\alpha_2^\text{new}\leq H

由于初始解与最优解均在约束线段上,故约束线段所在直线: α 1 new y 1 + α 2 new y 2 = α 1 old y 1 + α 2 old y 2 , y { + 1 , 1 } \alpha_1^\text{new}y_1+\alpha_2^\text{new}y2=\alpha_1^\text{old}y_1+\alpha_2^\text{old}y2,\quad y\in\{+1,-1\}

y 1 = y 2 y_1 = -y_2 时(上图左图),最优解 α 2 new \alpha_2^\text{new} 的上下界满足
L = max ( 0 , α 2 old α 1 old ) , H = min ( C , C + α 2 old α 1 old ) L = \max(0,\alpha_2^\text{old}-\alpha_1^\text{old}), \quad H = \min(C, C+\alpha_2^\text{old}-\alpha_1^\text{old})
y 1 = y 2 y_1 = y_2 时(上图右图),最优解 α 2 new \alpha_2^\text{new} 的上下界满足
L = max ( 0 , α 2 old + α 1 old C ) , H = min ( C , α 2 old + α 1 old ) L = \max(0,\alpha_2^\text{old}+\alpha_1^\text{old}-C), \quad H = \min(C, \alpha_2^\text{old}+\alpha_1^\text{old})

子问题求解

g ( x ) = i = 1 N α i y i K ( x i , x ) + b g(\bm x)=\displaystyle\sum\limits_{i=1}^N\alpha_iy_iK(\bm x_i, \bm x) + b ,则预测误差 E i = g ( x i ) y i E_i=g(\bm x_i)-y_i
利用 α 1 = y 1 ( ς α 2 y 2 ) \alpha_1=y_1(\varsigma-\alpha_2y_2) W W 消元,得到关于 α 2 \alpha_2 单变量二次规划问题可利用解析法求出闭式解。因此,对 α 2 \alpha_2 求偏导得
W α 2 = K 11 α 2 + K 22 α 2 2 K 12 α 2 K 11 ς y 2 + K 12 ς y 2 + y 1 y 2 1 y 2 i = 3 N y i α i K i 1 + y 2 i = 3 N y i α i K i 2 \frac{\partial W}{\partial\alpha_2}=K_{11}\alpha_2+K_{22}\alpha_2 - 2K_{12}\alpha_2 - K_{11}\varsigma y_2 + K_{12}\varsigma y_2 + y_1y_2-1 - y_2\sum_{i=3}^Ny_i\alpha_iK_{i1} + y_2\sum_{i=3}^Ny_i\alpha_iK_{i2}

α 2 \alpha_2 的最优解 α 2 new \alpha_2^\text{new} 位于偏导为0处,即
( K 11 + K 22 2 K 12 ) α 2 new = y 2 ( y 2 y 1 + ς K 12 ς K 12 + i = 3 N y i α i K i 1 i = 3 N y i α i K i 2 ) (K_{11}+K_{22}-2K_{12})\alpha_2^\text{new}=y_2(y_2-y_1+\varsigma K_{12}-\varsigma K_{12}+\sum_{i=3}^Ny_i\alpha_iK_{i1}-\sum_{i=3}^Ny_i\alpha_iK_{i2})

ς = α 1 old y 1 + α 2 old y 2 \varsigma=\alpha_1^\text{old}y_1+\alpha_2^\text{old}y_2 代入,并考虑到解的约束条件,则沿约束方向经剪辑之后的最优解为
α 2 new = max ( L , min ( H , α 2 old + y 2 ( E 1 E 2 ) K 11 + K 22 2 K 12 ) ) , α 1 new = α 1 old + y 1 y 2 ( α 2 old α 2 new ) \alpha_2^\text{new}=\max(L, \min(H, \alpha_2^\text{old}+\frac{y_2(E_1-E_2)}{K_{11}+K_{22}-2K_{12}})), \qquad \alpha_1^\text{new}=\alpha_1^\text{old}+y_1y_2(\alpha_2^\text{old}-\alpha_2^\text{new})

变量选择与优化计算

初始解 α = 0 \bm\alpha=\bm0 ,若使用 α 1 , α 2 \alpha_1,\alpha_2 构建优化子问题,则应使得 α 1 , α 2 \alpha_1,\alpha_2 在更新后使 α \bm\alpha 更趋向于最优解。因此,第一个变量 α 1 \alpha_1 应首选违反KKT条件最严重的变量,第二个变量 α 2 \alpha_2 应选择使目标函数下降最快的那个,为简化计算,选择与 α 1 \alpha_1 间隔最大的 α 2 \alpha_2 (周志华《机器学习》)。

一、第一个变量 α 1 \alpha_1 的选择(外层循环)
首选满足 0 < α i < C 0\lt\alpha_i\lt C 的样本点(间隔边界上的支持向量),检查是否满足KKT条件,若均满足,则再遍历 α i = 0 \alpha_i=0 α i = C \alpha_i=C 样本点,查找不满足KKT条件的样本点;

如何检验是否满足KKT条件?

根据 α i \alpha_i y i g ( x i ) y_ig(\bm x_i) 的关系,进行判断
α i = 0       y i g ( x i ) 1   0 < α i < C       y i g ( x i ) = 1   α i = C       y i g ( x i ) 1 \alpha_i=0 \iff y_ig(\bm x_i)\geq 1\\\,\\ 0 \lt \alpha_i \lt C \iff y_ig(\bm x_i) = 1\\\,\\ \alpha_i=C \iff y_ig(\bm x_i)\leq 1

二、第二个变量 α 2 \alpha_2 的选择(内层循环)
由于 α 2 new \alpha_2^\text{new} 依赖于 E 1 E 2 |E_1-E_2| ,为了更快地得到全局最优解, α 2 \alpha_2 应使 E 1 E 2 E_1-E_2 具有较大变化。当 E 1 < 0 E_1<0 ,选择具有最大 E 2 E_2 α 2 \alpha_2 ;当 E 1 > 0 E_1>0 ,选择具有最小 E 2 E_2 α 2 \alpha_2 ;若所有的 α 2 \alpha_2 均不能使 E 1 E 2 E_1-E_2 具有较大变化,跳出内循环重新选择 α 1 \alpha_1

注:保存 E i E_i 的值可节省计算时间

三、计算阈值 b b 和差值 E i E_i
每次完成 α 1 , α 2 \alpha_1,\alpha_2 的优化后,需更新 b b 。当 0 < α 1 new < C 0\lt\alpha_1^\text{new}\lt C ,由KKT条件知该样本点为间隔边界上的支持向量,即
i = 1 N α i y i K i 1 + b = y 1 \sum_{i=1}^N\alpha_iy_iK_{i1}+b=y_1

因此
b 1 new = y 1 i = 3 N α i y i K i 1 α 1 new y 1 K 11 α 2 new y 2 K 21 b_1^\text{new}=y_1-\sum_{i=3}^N\alpha_iy_iK_{i1}-\alpha_1^\text{new}y_1K_{11}-\alpha_2^\text{new}y_2K_{21}

使用保存的 E 1 E_1 减少不必要的计算,由 E 1 = i = 3 N α i y i K i 1 + α 1 old y 1 K 11 + α 2 old y 2 K 21 + b old y 1 E_1=\displaystyle\sum_{i=3}^N\alpha_iy_iK_{i1}+\alpha_1^\text{old}y_1K_{11}+\alpha_2^\text{old}y_2K_{21}+b^\text{old}-y_1 ,得
b 1 new = E 1 y 1 K 11 ( α 1 new α 1 old ) y 2 K 21 ( α 2 new α 2 old ) + b old b_1^\text{new}=-E_1-y_1K_{11}(\alpha_1^\text{new}-\alpha_1^\text{old})-y_2K_{21}(\alpha_2^\text{new}-\alpha_2^\text{old})+b^\text{old}

0 < α 2 new < C 0\lt\alpha_2^\text{new}\lt C ,则 b 1 new = b 2 new b_1^\text{new} = b_2^\text{new} ;若 α 2 new = 0 \alpha_2^\text{new}=0 C C ,则 b 1 new b_1^\text{new} b 2 new b_2^\text{new} 之间任意值均满足KKT条件,一般令 b new = ( b 1 new + b 2 new ) / 2 b^\text{new}=(b_1^\text{new}+b_2^\text{new})/2

为什么当 α 1 new , α 2 new \alpha_1^\text{new},\alpha_2^\text{new} 同时满足 0 < α i new < C 0\lt\alpha_i^\text{new}\lt C ,则 b 1 new = b 2 new b_1^\text{new}=b_2^\text{new}

0 < α i new < C 0\lt\alpha_i^\text{new}\lt C ,对应样本点位于间隔边界(支持向量),超平面的截距 b b 被唯一确定(第一节已证)。

更新完 α 1 , α 2 , b \alpha_1,\alpha_2,b 后,需更新 E 1 , E 2 E_1,E_2 ,即
E i new = S y j α j K ( x i , x j ) + b new y i E_i^\text{new}=\displaystyle\sum_{\mathcal S}y_j\alpha_jK(\bm x_i, \bm x_j)+b^\text{new}-y_i

式中, S \mathcal S 是支持向量集合(消去 α j = 0 \alpha_j = 0 的项)。

猜你喜欢

转载自blog.csdn.net/sinat_34072381/article/details/83996778
今日推荐