序列最小优化算法

✍ dations ◷ 2025-05-19 05:41:18 #序列最小优化算法

序列最小优化算法(英语: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 ),} 增长率小于某个阈值,即

相关

  • 雪山雪山,位处苗栗县泰安乡梅园村与台中市和平区平等里之间,属于雪山山脉,为全台湾第二高峰,标高 3,886 米,仅次于玉山山脉的玉山主峰(3,952 米)。雪山在日治时代被称做次高山,是两座超
  • 癶部癶部,为汉字索引中的部首之一,康熙字典214个部首中的第一百〇五个(五划的则为第十一个)。就繁体和简体中文中,癶部归于五划部首。癶部通常是从正上方为部字。且无其他部首可用者
  • LOT波兰航空5055号班机空难1987年5月9日,LOT波兰航空5055号班机于波兰华沙的卡巴迪森林(Kabaty Woods)自然保护区外围坠毁。出事的客机是一架伊尔-62M,命名为塔德乌哥斯。据波兰委员会调查,客机失事的原因
  • .bn.bn为文莱国家及地区顶级域(ccTLD)的域名。A .ac .ad .ae .af .ag .ai .al .am .ao .aq .ar .as .at .au .aw .ax .az  B .ba .bb .bd .be .bf .bg .bh .bi .bj .bm .bn .
  • 内尔·哈维森内尔·哈维森(英语:Neil Harbisson),出生于西班牙的英国人与爱尔兰人,是一位赛博格艺术家与纽约的透明运动主义者。他是世界上第一位在他的头骨上植入天线的人,并被政府合法认
  • 黑森伯国黑森伯国(德语:Landgrafschaft Hessen),或黑森方伯国,是神圣罗马帝国内的一个诸侯国(英语:Princes of the Holy Roman Empire)。黑森伯国存在于1264年至1567年。1567年,腓力一世逝世
  • 高从让高从让,中国五代十国时代人物,南平武信王高季兴的儿子。文献王高从诲的弟弟。929年1月28日,高季兴去世后,高从诲继位,948年,高从诲去世后,高从诲的儿子高保融继任,960年,高保融去世,高
  • 辜家明辜家明(1964年-),中国前女子羽毛球运动员。她在1987年IBF世界锦标赛中获得女子单打铜牌。第二年,她在著名的全英羽毛球锦标赛中击败了韩国选手李英淑,赢得了女子单打冠军,并为中国
  • 乌兹别克河流列表乌兹别克河流列表,列举全部或部分在乌兹别克境内的河流,并依照流域排列;支流则由河口至源头排序。
  • 贾伊米·加维兰贾伊米·加维兰·马丁内斯(Jaime Gavilán Martínez,1985年5月12日-)是一名西班牙足球运动员,担任左中场。