支持向量机(SVM)凸二次规划的求解——序列最小最优化算法(SMO)原理及python实现

本文详细介绍了支持向量机(SVM)的序列最小最优化(SMO)算法,包括两个变量的二次规划求解、变量选择方法以及阈值b与差值Ei的计算。SMO通过解决两个变量的子问题逐步逼近最优解,文中还给出了Python实现的概述。最终,训练出的SVM模型精度达到98%。

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

原问题:
min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i \min_\alpha\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum_{i=1}^N\alpha_i αmin21i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαi
s.t.
∑ i = 1 N α i y i = 0 \sum_{i=1}^N\alpha_iy_i=0 i=1Nαiyi=0
0 ⩽ α i ⩽ C , i = 1 , 2 , ⋯   , N 0\leqslant\alpha_i\leqslant C, i=1,2,\cdots,N 0αiC,i=1,2,,N
SMO算法的基本思想是:
如果所有变量的解都满足最优化问题的KKT条件,那么这个最优化问题的解就得到了。否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。
这样做的目的是,通过求解两个变量的二次规划问题,能不断靠近原有凸二次规划问题的解,并且计算方法有解析方法。

子问题有两个变量,其中一个为违反KKT条件最严重的那一个,另一个由约束条件自动确定。由与约束条件的存在,子问题实际上只有一个自由变量。
整个SMO算法包含两个部分:求解两个变量二次规划的解析方法和选择变量的启发式算法。

两个变量的二次规划求解方法

假设 α 1 , α 2 \alpha_1, \alpha_2 α1,α2为变量,其余的量为固定量
设问题的原始可行解为 α 1 o l d , α 2 o l d \alpha_1^{old}, \alpha_2^{old} α1old,α2old,最优解为 α 1 n e w , α 2 n e w \alpha_1^{new},\alpha_2^{new} α1new,α2new,并且在沿着约束方向未经剪辑时 α 2 \alpha_2 α2的最优解为 α 2 n e w , u n c \alpha_2^{new,unc} α2new,unc
由于约束条件存在,因此 α 2 n e w \alpha_2^{new} α2new的取值范围为:
L ⩽ α 2 n e w ⩽ H L\leqslant\alpha_2^{new}\leqslant H Lα2newH
其中 L L L H H H α 2 n e w \alpha_2^{new} α2new所在的对角线段端点的界。
如果 y 1 ≠ y 2 y_1\not=y_2 y1=y2,则
L = max ⁡ ( 0 , α 2 o l d − α 1 o l d ) ,       H = min ⁡ ( C , C + α 2 o l d − α 1 o l d ) L=\max(0,\alpha_2^{old}-\alpha_1^{old}),\,\,\,\,\,H=\min(C,C+\alpha_2^{old}-\alpha_1^{old}) L=max(0,α2oldα1old),H=min(C,C+α2oldα1old)
如果 y 1 = y 2 y_1=y_2 y1=y2,则
L = max ⁡ ( 0 , α 2 o l d + α 1 o l d − C ) ,       H = min ⁡ ( C , α 2 o l d + α 1 o l d ) L=\max(0,\alpha_2^{old}+\alpha_1^{old}-C),\,\,\,\,\,H=\min(C,\alpha_2^{old}+\alpha_1^{old}) L=max(0,α2old+α1oldC),H=min(C,

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值