SVM系列理论(十一)SMO序列最优化算法

支持向量机的的学习问题可以形式化为求解凸二次规划问题。求解凸二次规划问题可以借用一些凸二次规划求解工具,但这需要强大的计算能力支持。Platt提出SMO序列最小优化算法,可以高效地计算出对偶问题中最佳的拉格朗日乘子 α .

1. SMO 序列最小化算法的基本思想

SVM的对偶问题可以表示为:

m i n α         1 2 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                   ( 1 )


对应的KKT条件为:

α 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                  


SMO算法是一种快速学习的算法,其思想是

不断地选择两个两个变量 α 1 , α 2 ,将上面(1)这个二次规划问题分解成一个只有两个变量的二次规划子问题,然后对二变量子问题进行解析求解,直到所有变量都满足KKT条件为止。由于每个子问题都有解析解,计算很快,所以很高效。

重要定理KKT条件是最优化问题的充分必要条件


2. 选择两个变量的方法

上面说到SMO算法的思想,那么第一步应该明确怎么选择两个变量 α 1 , α 2

2.1 第一个变量的选择

选择第一个变量需要选择在训练集中违反KKT条件最严重的样本点。 这很容易理解,因为我们最终的目标是让所有的变量 α 满足KKT条件,选择违反KKT最大的作为优化对象。

  • 一般来说,我们首先选择违反 0 < α i < C y i g ( x i ) = 1 这个条件的 α

  • 如果这些支持向量都满足KKT条件,再选择违反 α i = C y i g ( x i ) 1 α i = 0 y i g ( x i ) 1 的点。

2.2 第二个变量的选择

为了选择第二个变量,首先定义函数 g ( x i ) = j = 1 N α j y j K ( x j , x i ) + b

并把预测值 g ( x i ) 与真实值 y i 之差记为 E i ,则

E i = g i ( x ) y i = ( j = 1 N α j y j K ( x j , x i ) + b ) y i ;               i = 1 , 2

第二个变量 α 2 的选择标准就是是让 | E 1 E 2 | 有足够大的变化。

  • 假设已经找到了 α 1 ,由于 α 1 定了,所以 E 1 也确定了。所以要想 | E 1 E 2 | 最大,只需要

    • E 1 为正时,选择最小的 E i 作为 E 2
    • E 1 为负时,选择最大的 E i 作为 E 2 ,因此可以将所有的 E i 保存下来加快迭代。
  • 如果上面找到的 α 2 不能让目标函数有足够的下降, 可以遍历支持向量,直到目标函数有足够的足够的下降.

  • 如果所有的支持向量做α2都不能让目标函数有足够的下降,可以跳出循环,重新选择α1 

3. SMO序列最小化算法的基本步骤

现在我们知道了选择变量的方法,那么就要把原来(1)中的凸二次优化问题转化为两个变量的二次规划子问题,然后对二变量子问题进行解析求解

第一步, 使用2中方法选取两个变量 α 1 , α 2 (选取的量应该是违反KKT比较大的变量,这样优化效果好), 其他的 α i 视为常量. 求解新的未经剪辑时 α 2 n e w , u n c u t .

最优化问题可以写为:

m i n α         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 j = 3 N α i y i K i 1 + y 2 α 2 j = 3 N α i y i K i 2                   ( 2 )

s . t .               α 1 y 1 + α 2 y 2 = i = 3 N α i y i = ξ                   ( 3 )

                        0 α i C , i = 1 , 2                   ( 4 )

如果不考虑 0 α i C , i = 1 , 2   的约束条件下,利用(3)代入(2),得到 α 2 的单变量问题

再对 W 求导并令其为 0,可以求到一个 α 2 解。我们称这个解是未经剪辑时的新解 α 2 n e w , u n c u t

α 2 n e w , u n c u t = α 2 o l d + y 2 ( E 1 E 2 ) η                   ( 5 )


注:

g ( x i ) = j = 1 N α j y j K ( x j , x i ) + b                   ( 6 )

η = K 11 + K 22 2 K 12 = | | ϕ ( x 1 ) ϕ ( x 2 ) | | 2                   ( 7 )

E i = g ( x i ) y i = ( j = 1 N α j y j K ( x j , x i ) + b ) y i ;               i = 1 , 2                   ( 8 )


第二步,按照下式求出剪辑后的 α 2 n e w ,进而由求出 α 1 n e w

实际上,我们还必须考虑约束条件 0 α i C , i = 1 , 2   ,因此考虑后得到:

α 2 n e w = { H L α 2 n e w , u n c > H α 2 n e w , u n c L α 2 n e w , u n c H L α 2 n e w , u n c < L                   ( 9 )

α 1 n e w = α 1 o l d + y 1 y 2 ( α 2 o l d α 2 n e w )                   ( 10 )

注:

具体推导参考 李航《统计学习方法》或


经历了前两步,我们已经或得了新的 α 1 , α 2 的值,那么什么时候终止呢?这需要在设定的一个精度e下检验终止条件。

第三步,计算 b n e w E i n e w ,方便下次选择变量.

在每次完成两个变量的优化之后,需要重新计算阈值 b n e w 和差值 E i n e w

b 1 n e w = E 1 y 1 K 11 ( α 1 n e w α 1 o l d ) y 2 K 21 ( α 2 n e w α 2 o l d ) + b o l d                   ( 11 )

b 2 n e w = E 2 y 1 K 12 ( α 1 n e w α 1 o l d ) y 2 K 22 ( α 2 n e w α 2 o l d ) + b o l d                   ( 12 )

b n e w = b 1 n e w + b 2 n e w 2                   ( 13 )

E i n e w = S y j α j K ( x i , x j ) + b n e w y i                   ( 14 )

S指所有的支持向量集合。
注:

具体推导参考 李航《统计学习方法》或


第四步,在精度 e 范围内检查是否满足如下的终止条件,如果满足则结束,返回最佳解 α 1 n e w , α 1 n e w ,否则转到第二步

i = 1 N α i y i = 0                   ( 15 )

0 α i C , i = 1 , 2... N                   ( 16 )

α i n e w = 0 y i g ( x i ) 1                   ( 17 )

0 < α i n e w < C y i g ( x i ) = 1                   ( 18 )

α i n e w = C y i g ( x i ) 1                   ( 19 )

猜你喜欢

转载自blog.csdn.net/promisejia/article/details/81540027