Python手撸机器学习系列(九):硬间隔SVM对偶形式求解
作者:互联网
硬间隔SVM对偶形式求解
原始形式梯度下降法求解请参考我的上一篇博客:硬间隔SVM原始形式梯度下降法求解
1、对偶形式求解原理
引入拉格朗日乘子法
L
(
w
,
b
,
λ
)
=
1
2
∣
∣
w
∣
∣
2
+
∑
i
=
1
N
λ
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
L(w,b,\lambda) = \frac{1}{2}||w||^2+\displaystyle\sum_{i=1}^N\lambda_i(1-y_i(w^Tx_i+b))
L(w,b,λ)=21∣∣w∣∣2+i=1∑Nλi(1−yi(wTxi+b))
则原问题可以写作:
min
w
,
b
max
λ
L
(
w
,
b
,
λ
)
s
.
t
.
λ
i
≥
0
\min\limits_{w,b}\ \max\limits_{\lambda} \ L(w,b,\lambda) \\s.t. \lambda_i\geq 0
w,bmin λmax L(w,b,λ)s.t.λi≥0
这样写的好处在于:任取一点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)
当 1 − y i ( w T x i + b ) > 0 1-y_i(w^Tx_i+b)>0 1−yi(wTxi+b)>0时, max λ L ( w , b , λ ) = + ∞ \max\limits_{\lambda}\ L(w,b,\lambda) = +\infin λmax L(w,b,λ)=+∞,而当当 1 − y i ( w T x i + b ) < = 0 1-y_i(w^Tx_i+b)<=0 1−yi(wTxi+b)<=0时, max λ L ( w , b , λ ) = 1 2 ∣ ∣ w ∣ ∣ 2 \max\limits_{\lambda}\ L(w,b,\lambda) = \frac{1}{2}||w||^2 λmax L(w,b,λ)=21∣∣w∣∣2
这样 min w , b max λ L ( w , b , λ ) = min w , b ( + ∞ , 1 2 ∣ ∣ w ∣ ∣ 2 ) = min w , b 1 2 ∣ ∣ w ∣ ∣ 2 \min\limits_{w,b}\ \max\limits_{\lambda} \ L(w,b,\lambda) = \min\limits_{w,b} (+\infin,\frac{1}{2}||w||^2) = \min\limits_{w,b}\frac{1}{2}||w||^2 w,bmin λmax L(w,b,λ)=w,bmin(+∞,21∣∣w∣∣2)=w,bmin21∣∣w∣∣2
相当于把不符合条件的点给筛除,而且将约束条件写在了 L L L里,把带约束的原问题变为无约束的原问题
但现,我们首先就要面对带有需要求解的参数
w
,
b
w,b
w,b的方程,而
λ
\lambda
λ又是不等式约束,这个求解过程不好做。所以,我们需要使用拉格朗日函数对偶性,将最小和最大的位置交换一下,这样就变成了:
max
λ
min
w
,
b
L
(
w
,
b
,
λ
)
s
.
t
.
λ
i
≥
0
\max\limits_{\lambda}\ \min\limits_{w,b}\ L(w,b,\lambda) \\s.t. \lambda_i\geq 0
λmax w,bmin L(w,b,λ)s.t.λi≥0
要实现这样的转化,需要满足两个条件:
- 是凸优化问题
- 满足KKT条件
显然我们以及满足了第一个条件,而要满足第二个条件,即要求:
{
∂
L
∂
w
=
0
,
∂
L
∂
b
=
0
λ
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
=
0
λ
i
≥
0
1
−
y
i
(
w
T
x
i
+
b
)
≤
0
\large\begin{cases}\large\frac{\partial L}{\partial w}=0\ ,\ \frac{\partial L}{\partial b }=0 \\ \lambda_i(1-y_i(w^Tx_i+b))=0 \\\lambda_i\geq0\\1-y_i(w^Tx_i+b)\leq0\end{cases}
⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧∂w∂L=0 , ∂b∂L=0λi(1−yi(wTxi+b))=0λi≥01−yi(wTxi+b)≤0
让我们重新回到原问题,对于
w
,
b
w,b
w,b而言,
min
w
,
b
L
(
w
,
b
,
λ
)
\min\limits_{w,b}L(w,b,\lambda)
w,bminL(w,b,λ)是一个无约束问题,那么对他两求偏导就好了:
对 b b b求偏导, ∂ L ∂ b = ∑ i = 1 N λ i y i = 0 \frac{\partial L}{\partial b} = \displaystyle\sum_{i=1}^N\lambda_iy_i = 0 ∂b∂L=i=1∑Nλiyi=0,其中( ∣ ∣ w ∣ ∣ 2 ||w||^2 ∣∣w∣∣2可以写作 w T w w^Tw wTw)
带入
L
(
w
,
b
,
λ
)
=
1
2
∣
∣
w
∣
∣
2
+
∑
i
=
1
N
λ
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
L(w,b,\lambda) = \frac{1}{2}||w||^2+\displaystyle\sum_{i=1}^N\lambda_i(1-y_i(w^Tx_i+b))
L(w,b,λ)=21∣∣w∣∣2+i=1∑Nλi(1−yi(wTxi+b)),得:
L
(
w
,
b
,
λ
)
=
1
2
∣
∣
w
∣
∣
2
+
∑
i
=
1
N
λ
i
−
∑
i
=
1
N
λ
i
y
i
w
T
x
i
L(w,b,\lambda) = \frac{1}{2}||w||^2+\displaystyle\sum_{i=1}^N\lambda_i-\displaystyle\sum_{i=1}^N\lambda_iy_iw^Tx_i
L(w,b,λ)=21∣∣w∣∣2+i=1∑Nλi−i=1∑NλiyiwTxi
再对
w
w
w求导,
∂
L
∂
w
=
w
−
∑
i
=
1
N
λ
i
y
i
x
i
=
0
\large\frac{\partial L}{\partial w} =w-\displaystyle\sum_{i=1}^N\lambda_iy_ix_i = 0
∂w∂L=w−i=1∑Nλiyixi=0,可得
w
=
∑
i
=
1
N
λ
i
y
i
x
i
w = \displaystyle\sum_{i=1}^N\lambda_iy_ix_i
w=i=1∑Nλiyixi
带入
L
L
L,得:
L
(
w
,
b
,
λ
)
=
−
1
2
∑
i
=
1
N
∑
j
=
1
N
λ
i
λ
j
y
i
y
j
x
i
T
x
j
+
∑
i
=
1
N
λ
i
L(w,b,\lambda) = -\frac{1}{2}\displaystyle\sum_{i=1}^N\displaystyle\sum_{j=1}^N \lambda_i\lambda_jy_iy_jx_i^Tx_j + \displaystyle\sum_{i=1}^N\lambda_i
L(w,b,λ)=−21i=1∑Nj=1∑NλiλjyiyjxiTxj+i=1∑Nλi
最后得到:
min
w
,
b
max
λ
L
(
w
,
b
,
λ
)
=
−
1
2
∑
i
=
1
N
∑
j
=
1
N
λ
i
λ
j
y
i
y
j
x
i
T
x
j
+
∑
i
=
1
N
λ
i
s
.
t
.
λ
i
≥
0
\min\limits_{w,b}\ \max\limits_{\lambda} \ L(w,b,\lambda) = -\frac{1}{2}\displaystyle\sum_{i=1}^N\displaystyle\sum_{j=1}^N \lambda_i\lambda_jy_iy_jx_i^Tx_j + \displaystyle\sum_{i=1}^N\lambda_i\\s.t.\ \lambda_i\geq0
w,bmin λmax L(w,b,λ)=−21i=1∑Nj=1∑NλiλjyiyjxiTxj+i=1∑Nλis.t. λi≥0
其中,
λ
=
{
λ
1
,
λ
2
.
.
.
,
λ
N
}
\lambda=\{\lambda_1,\lambda_2...,\lambda_N\}
λ={λ1,λ2...,λN}为一组向量
在求梯度时已经得到
w
=
∑
i
=
1
N
λ
i
y
i
x
i
w = \displaystyle\sum_{i=1}^N\lambda_iy_ix_i
w=i=1∑Nλiyixi,而对于支持向量
(
x
k
,
y
k
)
(x_k,y_k)
(xk,yk),总有
1
−
y
k
(
w
T
x
k
+
b
)
=
0
1-y_k(w^Tx_k+b) = 0
1−yk(wTxk+b)=0,转化一下:
y
k
(
w
T
x
k
+
b
)
=
1
y
k
2
(
w
T
x
k
+
b
)
=
y
k
w
T
x
k
+
b
=
y
k
b
=
y
k
−
w
T
x
k
\begin{aligned} y_k(w^Tx_k+b ) &= 1\\ y_k^2(w^Tx_k+b)&=y_k\\ w^Tx_k+b &= y_k\\ b &= y_k - w^Tx_k \end{aligned}
yk(wTxk+b)yk2(wTxk+b)wTxk+bb=1=yk=yk=yk−wTxk
即最后可根据
λ
\lambda
λ算出
w
w
w和
b
b
b,即确定分离超平面。
而求解
λ
\lambda
λ,需要用到SMO算法
2、SMO算法求解 λ \lambda λ
待更
3、代码实现
待更
标签:yi,SVM,min,Python,max,sum,对偶,displaystyle,lambda 来源: https://blog.csdn.net/qq_43601378/article/details/122027005