kkt条件例题求最优解_第七章 支持向量机(第4节 序列最小最优化算法 第2,3小节)...

本文详细介绍了SMO算法的选择变量策略,包括外层循环选择违反KKT条件最严重样本点作为第一个变量,内层循环根据特定条件选择第二个变量。通过对两个变量的优化求解,更新阈值,实现支持向量机的训练过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.变量的选择方法

SMO算法在每个子问题中选择两个变量进行优化,其中至少一个变量是违反KKT条件的。

这一小节,将告诉我们,到底选取哪两个变量最合适?也就是说,选择的标准是什么?

我们将这一小节分三步来讲:第一步,如何选择第一个变量?第二步,如何选择第二个变量?第三步,更新阈值

和差值

(1)第1个变量的选择

SMO称选择第1个变量的过程为外层循环。

外层循环在训练样本中选取违反KKT条件最严重的样本点,并将其对应的变量作为第1个变量。具体地,检验训练样本点

是否满足KKT条件,即

其中,

该检验是在

范围内进行的。在检验过程中,外层循环首先遍历所有满足条件
的样本点,即在间隔边界上的
支持向量点,检验它们是否满足KKT条件。如果这些样本点都满足KKT条件,那么遍历整个训练集,检验它们是否满足KKT条件。

(2)第2个变量的选择

SMO称选择第2个变量的过程为内层循环。

假设在外层循环中已经找到第1个变量

,现在要在内层循环中找到第2个变量
。第2个变量选择的标准是希望能使
足够大的变化

由上一小节内容,我们知道,

是依赖于
的,为了加快计算速度,一种简单地做法是选择
,使其对应的
最大。因为
已定,
也确定了。由于
取值可正可负,故如果
是正的,那么选择最小的
作为
;如果
是负的,那么选择最大的
作为

特殊情况下,如果内层循环通过以上方法选择的

不能使目标函数有足够的下降,那么采用以下启发式规则继续选择
。——遍历在间隔边界上的
支持向量点,一次将其对应的变量作为
试用,直到目标函数有足够的下降。如果遍历完了所有的支持向量点,仍然找不到合适的
,那么遍历整个
训练数据集;如果遍历整个数据集还找不到,则放弃第1个
,再通过
外层循环重新寻求另外的

(3)计算阈值

和差值

经过前两步,我们选择了合适的两个变量,然后用上一篇介绍的两个变量二次规划的求解方法,求出两个变量的最优解

。每次完成两个变量的优化后,都要
重新计算阈值
,进而再计算出对应的

时,由KKT条件可知:

于是,有

而由

的定义式(参考上一篇)可得,未更新的
满足:

上式可以写成:

带入到上面

的表达式中,可得:

同样,如果

,那么:

如果

同时满足条件
,那么

如果

是0或者是
,那么
以及它们之间的数都是
符合KKT条件的阈值,这时选择它们的中点作为

上面就完成了阈值

的更新。还必须更新对应的
值。
值的更新需要用到
值,以及所有支持向量对应的
:

其中,S是所有支持向量

的集合。

3.SMO算法

输入:训练数据集

,其中,
,精度

输出:近似解

(1)取初值

,令

(2)选取优化变量

,解析求解两个变量的最优化问题(按照上一篇所述的
两个变量二次规划的求解方法求解),求得最优解
,更新

(3)若在精度

范围内满足停机条件:

a3a9ff571e7cf2921d3678257900aeed.png

14a0b839669a9313f84b2c52140576c5.png

1b98da91d9b241d0192169cac20ffc4d.png

其中,

则转(4);否则令

,转(2);

(4)取

如果从前面顺着看到了这里,相信不难理解的~当然可能是因为我之前也学习过,如果那里有疑问,直接百度博客知乎哈~

到此,第3重境界也修炼好了,SVM心法很强大,恭喜你等级达到了——宗师

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值