网站大量收购独家精品文档,联系QQ:2885784924

SMO算法笔记及个人理解.pdf

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SMO算法笔记及个⼈理解 SMO算算法法介介绍绍 SMO算法是⼀种启发式算法,其基本思路是 :如果所有 量的解都满⾜此优化问题的KKT条件,那么这个最优化问题的解就得到了。(KKT 条件是该最优化问题的充分必要条件)。否则,选择两个 量,固定其他 量针对这两个 量构建⼀个⼆次规划问题。 特特点点 :: 将原始的⼆次规划问题分解为只含有两个 量的⼆次规划⼦问题,对⼦问题不断求解,使得所有的 量满⾜KKT条件 包包含含 两两部部分分 :: 1、求解两个 量⼆次规划的解析⽅法 2、选择 量的启发式⽅法 (1)第 1个 量的选择 :确定在当前的分类器中,违反KKT条件的元组Xi ; SMO称第 1个 量的选择称为外循环。外循环在训练样本中选取违反KKT条件最严重的样本点,将其作为第⼀个 量。遍历的时候⾸先遍历 满⾜ 的样本点,也就是在间隔边界上的⽀持向量点,检验是否满⾜KKT条件 ;如果都满⾜,那么遍历整个训练集,检验是否满⾜KKT条件。 (2)第2个 量的选择 :根据Xi,找到使得 |Ei−Ej |最⼤的元组Xj ; SMO称第2个 量的选择称为内循环。在找到第⼀个 量的基础上,第⼆个 量的标准是希望能使 有⾜够⼤的 化。由于 是依赖 于|E1−E2 |,为了加快计算的速度,所以选择|E1−E2 |最⼤时的。 当E1为正时,那么选择最⼩的Ei作为E2 ;如果E1为负,选择最⼤Ei作为E2。 为了节省时间,通常为每个样本的Ei保存在⼀个列表中,选择最⼤的|E1−E2 |来近似最⼤化步长。 SMO算算法法步步骤骤 总总结结 :: 1.初始化 α,⼀般情况下令初始的αi全部为0 ; 2.选取优化 量 α1和 α2,执⾏相关的优化计算,得到更新后的α1, α2 ; 3.开始新的⼀轮迭代,重复执⾏上⾯的第2步,直到全部的αi满⾜公式(2)的KKT条件以及公式(1)中的约束条件 ; (借鉴其他博主的图解) 代代码码细细节节 下⾯的伪代码描述了整个SMO算法: target = desired output vector point = training point matrix procedure takeStep(i1,i2) if (i1 == i2) return 0 alph1 = Lagrange multiplier for i1 y 1 = target[i1] E1 = SVM output on point[i1] – y 1 (check in error cache) s = y 1*y2 Compute L, H via equations (13) and (14) if (L == H) return 0 k11 = kernel(point[i1],point[i1]) k12 = kernel(point[i1],point[i2]) k22 = kernel(point[i2],point[i2]) eta = k11+k22-2*k12 if (eta 0) { a2 = alph2 + y2* (E1-E2)/eta if (a2 L) a2 = L else if (a2 H) a2 = H } else { Lobj = obj ective function at a2=L Hobj = obj ective function at a2=H if (Lobj Hobj -eps) a2 = L else if (Lobj Hobj +eps) a2 = H else a2 = alph2 } if (|a2-alph2 | eps* (a2+alph2+eps)) return 0 a1 = alph1

文档评论(0)

细雨滴梧桐 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档