- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)