支持向量机(SVM)前戏-手动求解超平面方程

本文通过代数、几何及专业方法求解了基于三个数据点的最大间隔超平面方程,探讨了支持向量机的基本原理。

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

问题:训练集有3个数据点,其中两个正例点:x1=(3,3)T,x2=(4,3)T,一个负例点:x3=(1,1)Tx_1=(3,3)^T,x_2=(4,3)^T,一个负例点:x_3=(1,1)^Tx1=(3,3)T,x2=(4,3)T,x3=(1,1)T。试求最大间隔分离超平面(在二维空间即为一条直线)。

构建模型:设超平面方程为w1x+w2y+b=0w_1x+w_2y+b=0w1x+w2y+b=0,则上述问题等价于下列约束最优化问题:
minwi,b,i=1,212(w12+w22)\underset{w_i,b,i=1,2}{min} \frac{1}{2}(w_1^2+w_2^2)wi,b,i=1,2min21(w12+w22)
s.t.
3w1+3w2+b>=13w_1+3w_2+b>=13w1+3w2+b>=1
4w1+3w2+b>=14w_1+3w_2+b>=14w1+3w2+b>=1
−w1−w2−b>=1-w_1-w_2-b>=1w1w2b>=1

1,代数解法

构建拉格朗日函数:
L(w1,w2,b,μ1,μ2,μ3)=12(w12+w22)+μ1(1−3w1−3w2−b)+μ2(1−4w1−3w2−b)+μ3(w1+w2+b+1)\mathcal{L}(w_1,w_2,b,\mu_1,\mu_2,\mu_3)=\frac{1}{2}(w_1^2+w_2^2)+\mu_1(1-3w_1-3w_2-b)+\mu_2(1-4w_1-3w_2-b)+\mu_3(w_1+w_2+b+1)L(w1,w2,b,μ1,μ2,μ3)=21(w12+w22)+μ1(13w13w2b)+μ2(14w13w2b)+μ3(w1+w2+b+1)

求偏微分:
∂L∂w1=w1−3μ1−4μ2+μ3=0\frac{\partial\mathcal{L}}{\partial w_1}=w_1-3\mu_1-4\mu_2+\mu_3=0w1L=w13μ14μ2+μ3=0
∂L∂w2=w2−3μ1−3μ2+μ3=0\frac{\partial\mathcal{L}}{\partial w_2}=w_2-3\mu_1-3\mu_2+\mu_3=0w2L=w23μ13μ2+μ3=0
∂L∂b=−μ1−μ2+μ3=0\frac{\partial\mathcal{L}}{\partial b}=-\mu_1-\mu_2+\mu_3=0bL=μ1μ2+μ3=0
用KKT条件对其进行约束:
3w1+3w2+b−1>=03w_1+3w_2+b-1>=03w1+3w2+b1>=0
4w1+3w2+b−1>=04w_1+3w_2+b-1>=04w1+3w2+b1>=0
−w1−w2−b−1>=0-w_1-w_2-b-1>=0w1w2b1>=0
μi>=0,i=1,2,3\mu_i>=0,i=1,2,3μi>=0,i=1,2,3
μ1(3w1+3w2+b−1)=0\mu_1(3w_1+3w_2+b-1)=0μ1(3w1+3w2+b1)=0
μ2(4w1+3w2+b−1)=0\mu_2(4w_1+3w_2+b-1)=0μ2(4w1+3w2+b1)=0
μ3(−w1−w2−b−1)=0\mu_3(-w_1-w_2-b-1)=0μ3(w1w2b1)=0
分情况进行讨论:
1)假设μ1=0,可以计算得w1=3μ2,w2=2μ2,带入三个不等式得:b>=1−15μ2,b>=1−18μ2,b<=−5μ2−1\mu_1=0,可以计算得w_1=3\mu_2,w_2=2\mu_2,带入三个不等式得:b>=1-15\mu_2,b>=1-18\mu_2,b<=-5\mu_2-1μ1=0w1=3μ2,w2=2μ2,b>=115μ2,b>=118μ2,b<=5μ21
此时μ2=μ3>=1/5,则4w1+3w2+b−1=0,−w1−w2−b−1=0,即18μ2+b−1=0,−5μ2−b−1=0,即μ2=2/13,矛盾,所以μ1大于0\mu_2=\mu_3>=1/5,则4w_1+3w_2+b-1=0,-w_1-w_2-b-1=0,即18\mu_2+b-1=0,-5\mu_2-b-1=0,即\mu_2=2/13,矛盾,所以\mu_1大于0μ2=μ3>=1/54w1+3w2+b1=0w1w2b1=018μ2+b1=0,5μ2b1=0,μ2=2/13μ10

2)假设μ2=0,可以计算得w1=w2=2μ1>0,带入三个不等式(有两个已经变成了等式)得:b=1−12μ1,b>=1−14μ1,b=−4μ1−1\mu_2=0,可以计算得w_1=w_2=2\mu_1>0,带入三个不等式(有两个已经变成了等式)得:b=1-12\mu_1,b>=1-14\mu_1,b=-4\mu_1-1μ2=0w1=w2=2μ1>0,b=112μ1,b>=114μ1,b=4μ11
此时μ2=0,μ1=μ3=1/4,w1=w2=1/2,b=−2\mu_2=0,\mu_1=\mu_3=1/4,w_1=w_2=1/2,b=-2μ2=0μ1=μ3=1/4,w1=w2=1/2,b=2

假设μ2不等于0,则4w1+3w2+b−1=0,3w1+3w2+b−1=0,即w1=0,易得μ3=0,μ2=−μ1,显然出现了矛盾,此种情况不可能。\mu_2不等于0,则4w_1+3w_2+b-1=0,3w_1+3w_2+b-1=0,即w_1=0,易得\mu_3=0,\mu_2=-\mu_1,显然出现了矛盾,此种情况不可能。μ204w1+3w2+b1=03w1+3w2+b1=0w1=0,μ3=0,μ2=μ1

3)假设μ3=0,由前面的条件易知μ1=0,出现了矛盾\mu_3=0,由前面的条件易知\mu_1=0,出现了矛盾μ3=0μ1=0

综上所述:
μ2=0,μ1=μ3但不等于0,此时μ2=0,μ1=μ3=1/4,w1=w2=1/2,b=−2\mu_2=0,\mu_1=\mu_3但不等于0,此时\mu_2=0,\mu_1=\mu_3=1/4,w_1=w_2=1/2,b=-2μ2=0,μ1=μ30μ2=0μ1=μ3=1/4,w1=w2=1/2,b=2

所以超平面方程为1/2x+1/2y−2=01/2x+1/2y-2=01/2x+1/2y2=0

Note:使得μi\mu_iμi不等于0的点都是支持向量上的点,其他点并没有起到约束效果。对于求最小值,构造拉格朗日函数时,应该使约束条件的方向是g(x)<=0,这样才能保证KKT乘子是正数。

2,几何解法

约束条件在三维空间对应着三个面所夹的范围,函数f(x)=x2+y2f(x)=x^2+y^2f(x)=x2+y2可以看成是一个动态的往外扩展的圆。如下图:
在这里插入图片描述
圆与这个空间想切的地方,即是最小值出现的地方。

附上图实现的代码:

require(rgl)
x = seq(-10, 10, len = 100)
df <- expand.grid(x=x,y=x,z=x)
df$ind <- with(df, 3*x+3*y+z>=1 & 4*x+3*y+z>=1 & x+y+z<=-1)
plot3d(df$x, df$y, df$z, type = 'n')
with(df[df$ind, ], points3d(x, y, z, color = 'red', size = 10))

3,专业解法

上述问题的对偶问题是
minμf(μ1,μ2,μ3)=12∑i=13∑j=13μiμjyiyj(xi.xj)−∑i=13μi\underset{\mu}{min} \quad f(\mu_1,\mu_2,\mu_3)=\frac{1}{2}\sum_{i=1}^{3}\sum_{j=1}^{3}\mu_i\mu_jy_iy_j(x_i.x_j)-\sum_{i=1}^{3}\mu_iμminf(μ1,μ2,μ3)=21i=13j=13μiμjyiyj(xi.xj)i=13μi
s.t.
μ1+μ2−μ3=0\mu_1+\mu_2-\mu_3=0μ1+μ2μ3=0
μi>=0,i=1,2,3\mu_i>=0,i=1,2,3μi>=0i=1,2,3

可以简化为
minμ\underset{\mu}{min}μmin f(μ1,μ2)=4μ12+132μ22+10μ1μ2−2μ1−2μ2f(\mu_1,\mu_2)=4\mu_1^2+\frac{13}{2}\mu_2^2+10\mu_1\mu_2-2\mu_1-2\mu_2f(μ1,μ2)=4μ12+213μ22+10μ1μ22μ12μ2
此方程的解与上述情况一样。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值