SVM求硬间隔最大超平面

SVM求硬间隔最大超平面

题目描述

正例点 x 1 = ( 3 , 3 ) T x_1=(3,3)^{T} x1=(3,3)T, x 2 = ( 4 , 3 ) T x_2=(4,3)^{T} x2=(4,3)T,负样例点 x 3 = ( 1 , 1 ) T x_3=(1,1)^{T} x3=(1,1)T,求最大硬间隔分离超平面。

解法

求硬间隔最大分离超平面的问题也就是求:
m i n w , b   1 2 ∣ ∣ w ∣ ∣ 2 {min}_{w,b}\ \frac{1}{2}{||w||}^2 minw,b 21w2
s . t .   y i ( w   ⋅   x i + b ) − 1 ≥ 0 , i = 1 , 2 , . . . , N s.t.\ y_i(w\ \cdot\ x_i +b)-1 \geq 0,i=1,2,...,N s.t. yi(w  xi+b)10,i=1,2,...,N

代入到本题,也就是求:
m i n w , b   1 2 ( w 1 2 + w 2 2 ) {min}_{w,b}\ \frac{1}{2}({w_1}^2+{w_2}^2) minw,b 21(w12+w22)
s . t .   2 w 1 + 3 w 2 + b − 1 ≥ 0 4 w 1 + 3 w 2 + b − 1 ≥ 0 − w 1 − w 2 − b − 1 ≥ 0 s.t.\ 2w_1+3_w2+b-1\geq0 \\ 4w_1+3_w2+b-1\geq0 \\ -w_1-w_2-b-1\geq0 s.t. 2w1+3w2+b104w1+3w2+b10w1w2b10
约束条件变换一下,得:
1 − 3 w 1 − 3 w 2 − b ≤ 0 (1) 1-3w_1-3w_2-b\leq0 \tag{1} 13w13w2b0(1)
1 − 4 w 1 − 3 w 2 − b ≤ 0 (2) 1-4w_1-3w_2-b\leq0 \tag{2} 14w13w2b0(2)
1 + w 1 + w 2 + b ≤ 0 (3) 1+w_1+w_2+b\leq0 \tag{3} 1+w1+w2+b0(3)

构造拉格朗日函数:
L = 1 2 ( w 1 2 + w 2 2 ) + α ∗ ( 1 ) + β ∗ ( 2 ) + γ ∗ ( 3 ) L = \frac{1}{2}({w_1}^2+{w_2}^2)+\alpha*(1)+\beta*(2)+\gamma*(3) L=21(w12+w22)+α(1)+β(2)+γ(3)
拉格朗日函数满足ktt条件 ( ∇ x L = 0 ) (\nabla_xL=0) (xL=0),此处 ∇ w , b L = 0 \nabla_{w,b}L=0 w,bL=0,即:
∂ L ∂ w 1 = w 1 − 3 α − 4 β + γ = 0 (4) \frac{\partial{L}}{\partial{w_1}}=w_1-3\alpha-4\beta+\gamma=0 \tag{4} w1L=w13α4β+γ=0(4)
∂ L ∂ w 2 = w 2 − 3 α − 3 β + γ = 0 (5) \frac{\partial{L}}{\partial{w_2}}=w_2-3\alpha-3\beta+\gamma=0 \tag{5} w2L=w23α3β+γ=0(5)
∂ L ∂ b = − α − β + γ = 0 (6) \frac{\partial{L}}{\partial{b}}=-\alpha-\beta+\gamma=0 \tag{6} bL=αβ+γ=0(6)
另一个ktt条件是 α i ∗ ⋅ c j ∗ = 0 {\alpha}^{*}_i \cdot c^{*}_j=0 αicj=0 c j ∗ c^*_j cj分别为(1),(2),(3), α i ∗ {\alpha}^{*}_i αi分别为 α \alpha α, β \beta β, γ \gamma γ,即有:
α ( 1 − 3 w 1 − 3 w 2 − b ) = 0 (7) \alpha(1-3w_1-3w_2-b)=0 \tag{7} α(13w13w2b)=0(7)
β ( 1 − 4 w 1 − 3 w 2 − b ) = 0 (8) \beta(1-4w_1-3w_2-b)=0 \tag{8} β(14w13w2b)=0(8)
γ ( 1 + w 1 + w 2 + b ) = 0 (9) \gamma(1+w_1+w_2+b)=0 \tag{9} γ(1+w1+w2+b)=0(9)
α , β , γ ≥ 0 , c j ≤ 0 \alpha,\beta,\gamma \geq0,c_j\leq0 α,β,γ0,cj0

解(4),(5),(6),(7),(8),(9)这六个方程组可以得出最优解为 w 1 = w 2 = 1 2 , b = − 2 w_1=w_2=\frac{1}{2},b=-2 w1=w2=21,b=2,所求得分离超平面为:
1 2 x ( 1 ) + 1 2 x ( 2 ) − 2 = 0 \frac{1}{2}x^{(1)}+\frac{1}{2}x^{(2)}-2=0 21x(1)+21x(2)2=0,
其中 x 1 = ( 3 , 3 ) T x_1=(3,3)^{T} x1=(3,3)T x 3 = ( 1 , 1 ) T 为 支 持 向 量 x_3=(1,1)^{T}为支持向量 x3=(1,1)T
求上面六个方程组可以用以下代码求解:

from scipy.optimize import fsolve

def solve_f(value):
    w1,w2,A,B,C,b = value[0],value[1],value[2],value[3],value[4],value[5]
    return [
        w1-3*A-4*B+C,
        w2-3*A-3*B+C,
        -A-B+C,
        A*(1-3*w1-3*w2-b),
        B*(1-4*w1-3*w2-b),
        C*(1+w1+w2+b),
    ]
solved = fsolve(solve_f,[0.5,0.5,0.5,0.5,0.5,0.5])
print(solved)

输出结果为:
[ 5.00000000e-01 5.00000000e-01 2.50000000e-01 -3.36817019e-13
2.50000000e-01 -2.00000000e+00]
其中,第一第二个分别为 w 1 w_1 w1, w 2 w_2 w2的值,最后一个为 b b b的值。

Reference

1,李航 统计学习方法第二版
2,b站某阿婆主svm公式视频讲解

  • 6
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值