序列最小优化算法

✍ dations ◷ 2025-07-11 07:13:52 #序列最小优化算法

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

相关

  • 硝酸盐类药物硝酸盐是一个多原子离子其分子式NO3−和分子量62.0049克/mol。硝酸盐同样描述为有机官能团RONO2。这些硝酸酯是一专业炸药。CP#3是硝酸根离子NO3−形成的盐。许多金属都能形
  • 榛果俪榛果俪(意大利语:Frangelico)是一款意大利皮埃蒙特大区库内奥省Canale市出产的榛子香草风味力娇酒,酒精浓度20%。20世纪80年代最初发布的时候,榛果俪的酒精浓度为24%。榛果俪的酒
  • 市政厅剧院市政厅剧院(法语:Théâtre du Capitole) 是位于法国城市图卢兹的图卢兹市政厅内的一个剧院。现在的剧院修建于1818年,在1917年曾遭遇火灾,但在1923年修复。剧院有1156个座位。
  • 克氏症候群克氏综合征(Klinefelter's syndrome)或称XXY、47XXY综合征、俗称次雄性综合征,是一系列由于男性有两条或两条以上的X染色体所导致的疾病。该疾病的主要特征是不孕。通常症状都
  • 危险物质危险物质指的是在使用或运输的过程中,会对环境、健康、安全及财产等造成危害的物质。这些物质依其化学性质分做几大类,每一类都有专属的标志及明显的颜色以兹识别。危险品不能
  • 卜姓卜姓为中文姓氏之一,在《百家姓》中排名第92位。古代从事占卜之职的人,其后代以此职业为姓。《元和姓纂》记载:“周礼有卜人氏,以官命氏,晋卜偃、秦卜徒父、鲁卜楚丘,皆为卜筮官,其
  • 斯特凡·彼得汉塞尔斯特凡·彼得汉塞尔(Stéphane Peterhansel,1965年8月6日-)是一位法国拉力赛车手。他驾驶雅马哈摩托车赢得了1991年、1992年、1993年、1995年、1997年和1998年的达喀尔拉力赛摩
  • 爨云爨云,北魏末年爨氏首领,是建宁郡同乐县(今云南省陆良县)人。北魏孝明帝元诩时历任使持节、骠骑大将军、开府仪同三司、南宁州刺史,封同乐县侯。当时北魏并没有掌控云南地区,爨云的
  • 安德裕安德裕(940年-1002年),字益之,一字师皋,河南洛阳人。 后晋成德军节度使安重荣之子。生于晋高祖天福五年(940年),安重荣败亡后,德裕被秦习收养,德裕“博贯文史。精于礼传,嗜《西汉书》”,
  • 劳里山坐标:84°33′S 64°9′W / 84.550°S 64.150°W / -84.550; -64.150劳里山(英语:Mount Lowry)是南极洲的山峰,位于伊丽莎白女王地,属于彭萨科拉山脉中帕图克森特山脉的一部分,处于