西瓜书第6章之SVM_1
代码
SVM基本形式
d
=
∣
x
−
x
1
∣
cos
(
θ
)
=
∣
x
−
x
1
∣
∣
(
x
−
x
1
)
w
∣
∣
x
−
x
1
∣
∣
w
∣
=
∣
w
x
−
w
x
1
∣
∣
w
∣
=
∣
w
x
+
b
∣
∣
w
∣
d = |x-x_1|\cos(\theta)=|x-x_1|\dfrac{|(x-x_1)w|}{|x-x_1||w|}=\dfrac{|wx-wx_1|}{|w|}=\dfrac{|wx+b|}{|w|}
d=∣x−x1∣cos(θ)=∣x−x1∣∣x−x1∣∣w∣∣(x−x1)w∣=∣w∣∣wx−wx1∣=∣w∣∣wx+b∣
L
=
1
∣
w
∣
∣
w
x
+
b
∣
L = \dfrac{1}{|w|} |wx+b|
L=∣w∣1∣wx+b∣
去绝对值
L
=
1
∣
w
∣
∑
n
=
1
N
y
n
(
w
x
n
+
b
)
L =\dfrac{1}{|w|} \sum_{n=1}^{N} y_n(wx_n+b)
L=∣w∣1∑n=1Nyn(wxn+b)
令 y n ( w x n + b ) = 1 y_n(wx_n+b)=1 yn(wxn+b)=1,则原式可变为 L = m a x w , b m i n n 1 ∣ w ∣ L =max_{w,b} min_{n} \frac{1}{|w|} L=maxw,bminn∣w∣1 s . t . y n ( w x n + b ) = 1 s.t. y_n(wx_n+b)=1 s.t.yn(wxn+b)=1
变化为求最小值:
L
=
m
i
n
w
,
b
m
a
x
n
1
2
w
T
w
L = min_{w,b} max_{n} \frac{1}{2}w^Tw
L=minw,bmaxn21wTw
s
.
t
.
y
n
(
w
x
n
+
b
)
=
1
s.t. y_n(wx_n+b)=1
s.t.yn(wxn+b)=1
那么这个就是SVM的基本形式,即取最近的点距离最大。
拉格朗日乘子式
使用拉格朗日乘子式好处:1、对偶问题更容易求解。2、引入核函数(下面式子的x替换为z代表核变化)。
h表示约束函数,f表示优化函数。
h在A处的梯度与f在A处的梯度并不一致,所以A并非是最优解。因为h在A处的梯度除了与f在A处的梯度一致的分量外,还有一个向B运动的分量,然后沿此方向继续寻找最优解。当到达B处时,发现h与f在B处的梯度方向是一致的,那么B就是最优解。也就存在
λ
h
(
x
)
+
f
(
x
)
=
0
(
λ
!
=
0
,
最
优
解
处
求
导
为
0
)
\lambda h(x)+f(x)=0(\lambda !=0,最优解处求导为0)
λh(x)+f(x)=0(λ!=0,最优解处求导为0)。因此定义拉格朗日函数为
L
=
f
(
x
)
+
λ
h
(
x
)
L=f(x)+\lambda h(x)
L=f(x)+λh(x)
已知h(x)<=0。
当h(x)<0时,那么最优解在f(x)最中心处,等价于
λ
\lambda
λ=0可以使用梯度下降等方法求出最优解。
当h(x)=0时,因为h(x)与f(x)的梯度方向相反,就存在
λ
\lambda
λ>0,使得
λ
h
(
x
)
+
f
(
x
)
=
0
\lambda h(x)+f(x)=0
λh(x)+f(x)=0。
对以上两步总结为
λ
h
(
x
)
=
0
\lambda h(x)=0
λh(x)=0
K
K
T
{
h
(
x
)
≤
0
λ
≥
0
λ
h
(
x
)
=
0
KKT\begin{cases} h(x)\leq 0\\ \lambda \geq 0 \\ \lambda h(x) = 0 \end{cases}
KKT⎩⎪⎨⎪⎧h(x)≤0λ≥0λh(x)=0
以上便是拉格朗日乘子式的过程。
对偶
L = m i n w , b m a x n 1 2 w T w L = min_{w,b} max_{n} \frac{1}{2}w^Tw L=minw,bmaxn21wTw s . t . y n ( w x n + b ) = 1 s.t. y_n(wx_n+b)=1 s.t.yn(wxn+b)=1
因为最大数值中最小的那个值是大于等于最小数值中最大的那个值,即
m i n w , b m a x n L ≥ m a x n m i n w , b L min_{w,b} max_{n}L \geq max_{n} min_{w,b}L minw,bmaxnL≥maxnminw,bL
因此SVM的优化函数可表达为 L = m a x λ n m i n w , b 1 2 w T w L = max_{\lambda_n} min_{w,b} \frac{1}{2}w^Tw L=maxλnminw,b21wTw s . t . y n ( w x n + b ) = 1 s.t. y_n(wx_n+b)=1 s.t.yn(wxn+b)=1
根据拉格朗日乘子式可得:
L
=
m
a
x
λ
n
m
i
n
w
,
b
1
2
w
T
w
+
∑
n
=
1
N
λ
n
(
1
−
y
n
(
w
T
z
n
+
b
)
)
(
式
1
)
L = max_{\lambda_n} min_{w,b} \frac{1}{2}w^Tw + \sum_{n=1}^{N} \lambda_n (1-y_n(w^T z_n + b))(式1)
L=maxλnminw,b21wTw+n=1∑Nλn(1−yn(wTzn+b))(式1)
s
.
t
.
{
λ
n
≥
0
1
−
y
n
(
w
T
z
n
+
b
)
≤
0
λ
n
(
1
−
y
n
(
w
T
z
+
b
)
)
=
0
s.t. \begin{cases} \lambda_n \geq 0 \\ 1 - y_n(w^T z_n + b) \leq 0 \\ \lambda_n (1- y_n(w^T z + b)) = 0 \end{cases}
s.t.⎩⎪⎨⎪⎧λn≥01−yn(wTzn+b)≤0λn(1−yn(wTz+b))=0
∂
L
∂
b
=
∑
n
=
1
N
λ
n
y
n
=
0
(
式
2
)
\dfrac{\partial L}{\partial b} = \sum_{n=1}^{N}\lambda_n y_n = 0(式2)
∂b∂L=n=1∑Nλnyn=0(式2)
将式2带入式1中得:
L
=
m
a
x
λ
n
m
i
n
w
,
b
1
2
w
T
w
+
∑
n
=
1
N
λ
n
(
1
−
y
n
(
w
T
z
n
)
)
(
式
2
)
L = max_{\lambda_n} min_{w,b} \frac{1}{2}w^Tw + \sum_{n=1}^{N} \lambda_n (1-y_n(w^T z_n))(式2)
L=maxλnminw,b21wTw+n=1∑Nλn(1−yn(wTzn))(式2)
∂
L
∂
w
=
w
−
∑
n
=
1
N
λ
n
y
n
z
n
=
0
(
式
3
)
\dfrac{\partial L}{\partial w} = w - \sum_{n=1}^{N}\lambda_ny_nz_n = 0(式3)
∂w∂L=w−n=1∑Nλnynzn=0(式3)
将式3带入式1中得:
L
=
m
a
x
λ
n
m
i
n
w
,
b
−
1
2
∑
n
=
1
N
∑
m
=
1
M
λ
n
λ
m
y
n
y
m
z
n
z
m
+
∑
n
=
1
N
λ
n
L = max_{\lambda_n} min_{w,b} -\frac{1}{2} \sum_{n=1}^{N} \sum_{m=1}^{M}\lambda_n \lambda_m y_n y_m z_n z_m + \sum_{n=1}^{N}\lambda_n
L=maxλnminw,b−21n=1∑Nm=1∑Mλnλmynymznzm+n=1∑Nλn
即:
L
=
m
a
x
λ
n
−
1
2
∑
n
=
1
N
∑
m
=
1
M
λ
n
λ
m
y
n
y
m
z
n
z
m
+
∑
n
=
1
N
λ
n
L = max_{\lambda_n}-\frac{1}{2} \sum_{n=1}^{N} \sum_{m=1}^{M}\lambda_n \lambda_m y_n y_m z_n z_m + \sum_{n=1}^{N}\lambda_n
L=maxλn−21n=1∑Nm=1∑Mλnλmynymznzm+n=1∑Nλn
转换成最小化得:
L
=
m
i
n
λ
n
−
1
2
∑
n
=
1
N
∑
m
=
1
M
λ
n
λ
m
y
n
y
m
z
n
z
m
+
∑
n
=
1
N
λ
n
L = min_{\lambda_n}-\frac{1}{2} \sum_{n=1}^{N} \sum_{m=1}^{M}\lambda_n \lambda_m y_n y_m z_n z_m + \sum_{n=1}^{N}\lambda_n
L=minλn−21n=1∑Nm=1∑Mλnλmynymznzm+n=1∑Nλn
s
.
t
.
{
λ
n
≥
0
1
−
y
n
(
w
T
z
n
+
b
)
≤
0
λ
n
(
1
−
y
n
(
w
T
z
n
+
b
)
)
=
0
∑
n
=
1
N
λ
n
y
n
=
0
(
对
b
求
导
得
到
)
w
=
∑
n
=
1
N
λ
n
y
n
z
n
(
对
w
求
导
得
到
)
s.t. \begin{cases} \lambda_n \geq 0 \\ 1 - y_n(w^T z_n + b) \leq 0 \\ \lambda_n (1- y_n(w^T z_n + b)) = 0 \\ \sum_{n=1}^{N}\lambda_n y_n=0(对b求导得到) \\ w = \sum_{n=1}^{N}\lambda_n y_n z_n(对w求导得到) \end{cases}
s.t.⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧λn≥01−yn(wTzn+b)≤0λn(1−yn(wTzn+b))=0∑n=1Nλnyn=0(对b求导得到)w=∑n=1Nλnynzn(对w求导得到)
当
λ
n
=
0
时
\lambda_n = 0时
λn=0时,根据
λ
n
(
1
−
y
n
(
w
T
z
n
+
b
)
)
=
0
\lambda_n (1- y_n(w^T z_n + b)) = 0
λn(1−yn(wTzn+b))=0可得到
1
−
y
n
(
w
T
z
n
+
b
)
≠
0
1 - y_n(w^T z_n + b) \neq 0
1−yn(wTzn+b)̸=0,而又因为
1
−
y
n
(
w
T
z
n
+
b
)
≤
0
1 - y_n(w^T z_n + b) \leq 0
1−yn(wTzn+b)≤0,所以
1
−
y
n
(
w
T
z
n
+
b
)
<
0
1 - y_n(w^T z_n + b) < 0
1−yn(wTzn+b)<0,即该点到分类超平面距离小于1。
当 λ n > 0 \lambda_n>0 λn>0时,根据 λ n ( 1 − y n ( w T z n + b ) ) = 0 \lambda_n (1- y_n(w^T z_n + b)) = 0 λn(1−yn(wTzn+b))=0推出 1 = y n ( w T z n + b ) 1= y_n(w^T z_n + b) 1=yn(wTzn+b),那么这个点就是支持向量点。
软间隔(避免过拟合)
增加一个
ζ
\zeta
ζ代表犯错程度。当
ζ
\zeta
ζ=0时,没有犯错。
那么优化函数可以表达成:
L
=
m
a
x
λ
n
m
i
n
w
,
b
1
2
w
T
w
+
C
∑
n
=
1
N
ζ
n
L = max_{\lambda_n} min_{w,b} \frac{1}{2}w^Tw + C\sum_{n=1}^{N} \zeta_n
L=maxλnminw,b21wTw+Cn=1∑Nζn
s
.
t
.
{
ζ
n
≥
0
y
n
(
w
T
z
n
+
b
)
≥
1
−
ζ
n
s.t. \begin{cases} \zeta_n \geq 0 \\ y_n(w^T z_n + b) \geq 1 - \zeta_n \\ \end{cases}
s.t.{ζn≥0yn(wTzn+b)≥1−ζn
使用拉格朗日乘子式:
L
=
m
a
x
λ
n
m
i
n
w
,
b
1
2
w
T
w
+
C
∑
n
=
1
N
ζ
n
−
∑
n
=
1
N
λ
n
(
1
−
ζ
n
−
y
n
(
w
T
z
n
+
b
)
)
+
∑
n
=
1
N
β
n
(
−
ζ
n
)
(
式
4
)
L = max_{\lambda_n} min_{w,b} \frac{1}{2}w^Tw + C\sum_{n=1}^{N} \zeta_n - \sum_{n=1}^{N} \lambda_n (1-\zeta_n - y_n(w^T z_n + b)) + \sum_{n=1}^{N} \beta_n (-\zeta_n)(式4)
L=maxλnminw,b21wTw+Cn=1∑Nζn−n=1∑Nλn(1−ζn−yn(wTzn+b))+n=1∑Nβn(−ζn)(式4)
∂
L
∂
ζ
n
=
0
=
C
−
λ
n
−
β
n
\dfrac{\partial L}{\partial \zeta_n} = 0 = C - \lambda_n - \beta_n
∂ζn∂L=0=C−λn−βn
推出:
C
−
λ
n
=
β
n
≥
0
(
式
5
)
C - \lambda_n = \beta_n \geq 0(式5)
C−λn=βn≥0(式5)
因此:
0
≤
λ
n
≤
C
0 \leq \lambda_n \leq C
0≤λn≤C
将式5带入式4中得:
L
=
m
a
x
λ
n
m
i
n
w
,
b
1
2
w
T
w
−
∑
n
=
1
N
λ
n
(
1
−
y
n
(
w
T
z
n
+
b
)
)
(
式
6
)
L = max_{\lambda_n} min_{w,b} \frac{1}{2}w^Tw - \sum_{n=1}^{N} \lambda_n (1-y_n(w^T z_n + b))(式6)
L=maxλnminw,b21wTw−n=1∑Nλn(1−yn(wTzn+b))(式6)
与式1一致。
同样的式6分别对w和b求导,得到
∑
n
=
1
N
λ
n
y
n
=
0
w
=
∑
n
=
1
N
λ
n
y
n
z
n
\sum_{n=1}^{N}\lambda_n y_n=0\\ w = \sum_{n=1}^{N}\lambda_n y_n z_n
n=1∑Nλnyn=0w=n=1∑Nλnynzn
代入到式6中得到:
L
=
m
i
n
λ
n
1
2
∑
n
=
1
N
∑
m
=
1
M
λ
n
λ
m
y
n
y
m
z
n
z
m
−
∑
n
=
1
N
λ
n
L = min_{\lambda_n}\frac{1}{2} \sum_{n=1}^{N} \sum_{m=1}^{M}\lambda_n \lambda_m y_n y_m z_n z_m - \sum_{n=1}^{N}\lambda_n
L=minλn21n=1∑Nm=1∑Mλnλmynymznzm−n=1∑Nλn
s
.
t
.
{
0
≤
λ
n
≤
C
y
n
(
w
T
z
n
+
b
)
≥
1
−
ζ
n
λ
n
(
1
−
ζ
n
−
y
n
(
w
T
z
n
+
b
)
)
=
0
∑
n
=
1
N
λ
n
y
n
=
0
w
=
∑
n
=
1
N
λ
n
y
n
z
n
β
n
(
−
ζ
n
)
=
(
C
−
λ
n
)
ζ
n
=
0
s.t. \begin{cases} 0 \leq \lambda_n \leq C \\ y_n(w^T z_n + b) \geq 1 - \zeta_n \\ \lambda_n (1- \zeta_n - y_n(w^T z_n + b)) = 0 \\ \sum_{n=1}^{N}\lambda_n y_n=0 \\ w = \sum_{n=1}^{N}\lambda_n y_n z_n \\ \beta_n (-\zeta_n) = (C - \lambda_n)\zeta_n = 0 \end{cases}
s.t.⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧0≤λn≤Cyn(wTzn+b)≥1−ζnλn(1−ζn−yn(wTzn+b))=0∑n=1Nλnyn=0w=∑n=1Nλnynznβn(−ζn)=(C−λn)ζn=0
求解w和b:
w
=
∑
n
=
1
N
λ
n
y
n
z
n
w = \sum_{n=1}^{N}\lambda_ny_nz_n
w=n=1∑Nλnynzn
当
0
≤
λ
n
≤
C
0 \leq \lambda_n \leq C
0≤λn≤C即支持向量,那么因为
(
C
−
λ
n
)
ζ
n
=
0
(C - \lambda_n)\zeta_n = 0
(C−λn)ζn=0,所以推出
ζ
n
\zeta_n
ζn=0。对
λ
n
(
1
−
ζ
n
−
y
n
(
w
T
z
+
b
)
)
=
0
\lambda_n (1- \zeta_n - y_n(w^T z + b)) = 0
λn(1−ζn−yn(wTz+b))=0推出
y
n
(
w
T
z
n
+
b
)
=
1
y_n(w^T z_n + b)=1
yn(wTzn+b)=1。这个点就是支持向量点,并且
y
i
2
=
1
y_i^2 = 1
yi2=1。得出
b
=
y
s
−
w
T
z
s
=
y
s
−
(
∑
n
=
1
N
λ
n
y
n
z
n
)
T
z
s
b = y_s - w^T z_s = y_s - (\sum_{n=1}^{N}\lambda_n y_n z_n)^T z_s
b=ys−wTzs=ys−(n=1∑Nλnynzn)Tzs
其中s表示支持向量点。
当
λ
n
=
C
\lambda_n = C
λn=C时,根据
(
C
−
λ
n
)
ζ
n
=
0
(C - \lambda_n)\zeta_n = 0
(C−λn)ζn=0推出
ζ
n
≠
0
\zeta_n \neq 0
ζn̸=0,且又因为
λ
n
(
1
−
ζ
n
−
y
n
(
w
T
z
n
+
b
)
)
=
0
\lambda_n (1- \zeta_n - y_n(w^T z_n + b)) = 0
λn(1−ζn−yn(wTzn+b))=0,得出
1
−
ζ
n
−
y
n
(
w
T
z
n
+
b
)
=
0
1- \zeta_n - y_n(w^T z_n + b) = 0
1−ζn−yn(wTzn+b)=0,所以得到
y
n
(
w
T
z
n
+
b
)
=
1
−
ζ
n
≤
1
y_n(w^T z_n + b) = 1 - \zeta_n \leq 1
yn(wTzn+b)=1−ζn≤1。表示错误点,与分类超平面距离小于1。
当 λ n = 0 \lambda_n = 0 λn=0时,根据 ( C − λ n ) ζ n = 0 (C - \lambda_n)\zeta_n = 0 (C−λn)ζn=0,推出 ζ n = 0 \zeta_n = 0 ζn=0,又因为 y n ( w T z n + b ) ≥ 1 − ζ n y_n(w^T z_n + b) \geq 1 - \zeta_n yn(wTzn+b)≥1−ζn。所以可得分类正确,与分类超平面距离大于等于1。
未完待续。