序列最小优化算法

✍ dations ◷ 2025-08-07 23:44:44 #序列最小优化算法

序列最小优化算法(英语:Sequential minimal optimization, SMO)是一种用于解决支持向量机训练过程中所产生优化问题的算法。SMO由微软研究院的约翰·普莱特(英语:John Platt)于1998年发明,目前被广泛使用于SVM的训练过程中,并在通行的SVM库LIBSVM中得到实现。 1998年,SMO算法发表在SVM研究领域内引起了轰动,因为先前可用的SVM训练方法必须使用复杂的方法,并需要昂贵的第三方二次规划工具。而SMO算法较好地避免了这一问题。

SMO算法主要用于解决支持向量机目标函数的最优化问题。考虑数据集 ( x 1 , y 1 ) , , ( x n , y n ) {displaystyle (mathbf {x_{1}} ,y_{1}),ldots ,(mathbf {x_{n}} ,y_{n})} 的二分类问题,其中 x i {displaystyle mathbf {x_{i}} } 是输入向量, y i { 1 , 1 } {displaystyle y_{i}in {-1,1}} 是向量的类别标签,只允许取两个值。一个软间隔支持向量机的目标函数最优化等价于求解以下二次规划问题的最大值:

其中, C {displaystyle C} 是SVM的参数,而 K ( x i , x j ) {displaystyle K(mathbf {x_{i}} ,mathbf {x_{j}} )} 是核函数。这两个参数都需要使用者制定。

SMO是一种解决此类支持向量机优化问题的迭代算法。由于目标函数为凸函数,一般的优化算法都通过梯度方法一次优化一个变量求解二次规划问题的最大值,但是,对于以上问题,由于限制条件 i = 1 n y i α i = 0 {displaystyle sum _{i=1}^{n}y_{i}alpha _{i}=0} 存在,当某个 α i {displaystyle alpha _{i},} α i o l d {displaystyle alpha _{i}^{old}} 更新到 α i n e w {displaystyle alpha _{i}^{new}} 时,上述限制条件即被打破。为了克服以上的困难,SMO采用一次更新两个变量的方法。

假设算法在某次更新时更新的变量为 α 1 {displaystyle alpha _{1},} α 2 {displaystyle alpha _{2},} ,则其余变量都可以视为常量。为了描述方便,规定

因而,二次规划目标值可以写成

由于限制条件 i = 1 n y i α i = 0 {displaystyle sum _{i=1}^{n}y_{i}alpha _{i}=0} 存在,将 α 3 , , α n , y 3 , , y n {displaystyle alpha _{3},ldots ,alpha _{n},y_{3},ldots ,y_{n}} 看作常数,则有 α 1 y 1 + α 2 y 2 = C {displaystyle alpha _{1}y_{1}+alpha _{2}y_{2}=C,} 成立( C {displaystyle C,} 为常数)。由于 y i { 1 , 1 } {displaystyle y_{i}in {-1,1},} ,从而 α 1 = γ s α 2 {displaystyle alpha _{1}=gamma -salpha _{2},} γ {displaystyle gamma ,} 为变量 y 1 C {displaystyle y_{1}C} s = y 1 y 2 {displaystyle s=y_{1}y_{2},} )。取 α 2 {displaystyle alpha _{2},} 为优化变量,则上式又可写成

α 2 {displaystyle alpha _{2},} 求偏导以求得最大值,有

因此,可以得到

规定误差项 E i = f ( x i ) y i {displaystyle E_{i}=f(mathbf {x} _{i})-y_{i}} ,取 γ = α 1 o l d + s α 2 o l d {displaystyle gamma =alpha _{1}^{old}+salpha _{2}^{old}} ,并规定 K = K 11 + K 22 2 K 12 {displaystyle K=K_{11}+K_{22}-2K_{12},} ,上述结果可以化简为

再考虑限制条件 0 α i C {displaystyle 0leqslant alpha _{i}leqslant C} ( α 1 , α 2 ) {displaystyle (alpha _{1},alpha _{2}),} 的取值只能为直线 α 1 y 1 + α 2 y 2 = γ {displaystyle alpha _{1}y_{1}+alpha _{2}y_{2}=gamma ,} 落在 × {displaystyle times } 矩形中的部分。因此,具体的SMO算法需要检查 α 2 n e w {displaystyle alpha _{2}^{new}} 的值以确认这个值落在约束区间之内。

SMO算法是一个迭代优化算法。在每一个迭代步骤中,算法首先选取两个待更新的向量,此后分别计算它们的误差项,并根据上述结果计算出 α 2 n e w {displaystyle alpha _{2}^{new}} α 1 n e w {displaystyle alpha _{1}^{new}} 。最后再根据SVM的定义计算出偏移量 b {displaystyle mathbf {b} } 。对于误差项而言,可以根据 α 1 n e w {displaystyle alpha _{1}^{new}} α 2 n e w {displaystyle alpha _{2}^{new}} b {displaystyle b} 的增量进行调整,而无需每次重新计算。具体的算法如下:

1 随机数初始化向量权重                              α                      i                                        {displaystyle alpha _{i},}  ,并计算偏移                    b              {displaystyle b}  2 初始化误差项                              E                      i                                        {displaystyle E_{i},}  3 选取两个向量作为需要调整的点4 令                              α                      2                                n            e            w                          =                  α                      2                                o            l            d                          +                                                            y                                  2                                            (                              E                                  1                                                                          E                                  2                                            )                        K                                {displaystyle alpha _{2}^{new}=alpha _{2}^{old}+{frac {y_{2}(E_{1}-E_{2})}{K}}}  5 如果                              α                      2                                n            e            w                          >        V              {displaystyle alpha _{2}^{new}>V}  6     令                              α                      2                                n            e            w                          =        V              {displaystyle alpha _{2}^{new}=V}  7 如果                              α                      2                                n            e            w                          <        U              {displaystyle alpha _{2}^{new}<U}  8     令                              α                      2                                n            e            w                          =        U              {displaystyle alpha _{2}^{new}=U}  9 令                              α                      1                                n            e            w                          =                  α                      1                                o            l            d                          +                  y                      1                                    y                      2                          (                  α                      2                                o            l            d                                            α                      2                                n            e            w                          )              {displaystyle alpha _{1}^{new}=alpha _{1}^{old}+y_{1}y_{2}(alpha _{2}^{old}-alpha _{2}^{new})}  10 利用更新的                              α                      1                                n            e            w                                {displaystyle alpha _{1}^{new}}                                α                      2                                n            e            w                                {displaystyle alpha _{2}^{new}}  修改                              E                      i                                        {displaystyle E_{i},}                      b              {displaystyle b}  的值11 如果达到终止条件,则停止算法,否则转3

其中, U {displaystyle U} V {displaystyle V} α 2 n e w {displaystyle alpha _{2}^{new}} 的下界和上界。特别地,有

这一约束的意义在于使得 α 1 n e w {displaystyle alpha _{1}^{new}} α 2 n e w {displaystyle alpha _{2}^{new}} 均位于矩形域 × {displaystyle times } 中。

可以采用启发式的方法选择每次迭代中需要优化的向量。第一个向量可以选取不满足支持向量机KKT条件的向量,亦即不满足

的向量。而第二个向量可以选择使得 | E 1 E 2 | {displaystyle |E_{1}-E_{2}|,} 最大的向量。

SMO算法的终止条件可以为KKT条件对所有向量均满足,或者目标函数 W ( α ) {displaystyle W(alpha ),} 增长率小于某个阈值,即

相关

  • 白眉蓝姬鹟白眉蓝姬鹟(学名:)为鹟科姬鹟属的鸟类。该物种的模式产地在印度。
  • 二河 (淮沭新河)二河是中国江苏省北部的一条人工河道,为淮沭新河的上段。二河是明、清两代修筑高家堰大堤时于东侧取土而形成。今二河起自洪泽县西顺河镇洪泽湖畔的二河闸,东北流至淮安市青浦
  • F小调F小调是从F音开始的音乐的小调,组成的音有F、G、降A、降B、C、降D、降E及F(如在和声小调中,则降E改以E(♮E)取代。而在旋律小调中,上行时降D和降E会还原成♮D和♮E,下行时则以降D和
  • 破天神记《破天神记三部曲》是一部由日本作家荻原规子于1988年所开始发表的出道作,三部曲的名称分别是《空色勾玉》、《白鸟异传》和《薄红天女》。 此系列为以古代日本为舞台背景的
  • 粒子衰变粒子衰变是一基本粒子变成其他基本粒子的自发过程。在这个过程中,一基本粒子变成质量更轻的另一种基本粒子,及一中间粒子,例如μ子衰变中的W玻色子。这中间粒子随即变成其他粒
  • 盛国政盛国政(17世纪-1676年),字寰宇,绍兴府山阴县人,明朝、南明军事人物。盛国政身体健壮,身长八尺,少年时经常来往宣府和大同,精通兵法和骑射。崇祯十三年(1640年),他在武进士殿试获得第三,授
  • 1999年8月11日日食1999年8月11日日食是一次日全食,发生于1999年8月11日。新月当天(即朔日),地球上观测到月球和太阳的角距离极小,此时月球如果恰好在月球交点附近,穿过太阳和地球之间,与地球、太阳接
  • 帕维尔·切尔尼帕维尔·切尔尼(1962年10月11日-),捷克足球运动员,捷克国家足球队成员。从1989年到1991年,他共为捷克斯洛伐克国家足球队出场4次。
  • 辐射功率在辐射度学中,辐射通量或辐射功率是对单位时间内通过某一面积的所有电磁辐射(包括红外、紫外和可见光)总功率的度量,既可以指一辐射源发出辐射的功率,也可以指到达某一特定表面的
  • 瑞年国际瑞年国际有限公司,简称瑞年国际(英语:Real Nutriceutical Group Limited,港交所:2010),于1997年由王福才(主席及总裁),于无锡市(总部)创立“无锡瑞年实业有限公司”。现时业务在国内经营