给出数学推导,每个向量的意义不再赘述
转换原问题
确定每个支持向量下的超平面:min y(w^T+b)/||w||
间隔最大的为所求最优的超平面 max min y(w^T+b)/||w|| ,
即求:
a
r
g
m
a
x
w
T
,
b
{
m
i
n
x
y
i
×
(
w
T
x
i
+
b
)
1
∣
∣
w
∣
∣
}
,
y
i
即
l
a
b
e
l
i
arg \space \underset{w^T,b} {max} \{ \underset{x}{min} \space y_i \times (w^T x_i+b) \frac{1}{||w||} \},y_i 即 label_i
arg wT,bmax{xmin yi×(wTxi+b)∣∣w∣∣1},yi即labeli
y
i
y_i
yi=+1或-1,不影响结果。
为了便于计算,我们可以认为在支持向量上的这一部分为 1,支持向量上的点也为所有点里的最近的点
y
i
×
(
w
T
x
i
+
b
)
y_i \times (w^T x_i+b)
yi×(wTxi+b)
那么其他点满足不等式:
y
i
(
w
T
+
b
)
≥
1
y_i(w^T+b) \geq 1
yi(wT+b)≥1
这个式子转换为:
m
i
n
x
y
i
×
(
w
T
x
i
+
b
)
1
∣
∣
w
∣
∣
=
>
1
∣
∣
w
∣
∣
\underset{x}{min} \space y_i \times (w^T x_i+b) \frac{1}{||w||} => \frac {1}{||w||} \\
xmin yi×(wTxi+b)∣∣w∣∣1=>∣∣w∣∣1
即
{
m
a
x
w
T
,
x
1
∣
∣
w
∣
∣
s
.
t
.
y
i
(
w
T
+
b
)
≥
1
\begin{cases} \underset{w^T,x}{max} \frac {1}{||w||} \\ s.t. \space y_i(w^T+b) \geq 1 \end{cases}
⎩⎨⎧wT,xmax∣∣w∣∣1s.t. yi(wT+b)≥1
对于
m
a
x
1
∣
∣
w
∣
∣
max\frac {1}{||w||}
max∣∣w∣∣1,它取得 max 和
1
2
∣
∣
w
∣
∣
2
\frac 1 2 {||w||}^2
21∣∣w∣∣2 取得 min 的情形是一致的(1/2和平方便于后续计算)
问题转换为
{
m
a
x
x
1
2
∣
∣
w
∣
∣
2
s
.
t
.
y
i
(
w
T
+
b
)
≥
1
\begin{cases} \underset{x}{max} \space \frac 1 2{||w||}^2 \\ s.t. \space y_i(w^T+b) \geq 1 \end{cases}
{xmax 21∣∣w∣∣2s.t. yi(wT+b)≥1
拉格朗日乘子法
关于拉格朗日乘子法的原理和证明:
深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
其中严谨的拉格朗日对偶的证明没有明白,但是直观上是能理解的。
强对偶和KKT条件也非常严格,这里没有写出来。
有不等式约束的优化问题,可以写为:
min f(x),
s.t. g_i(x) <= 0; i =1, ..., n
h_j(x) = 0; j =1, ..., m
对于含有不等式约束的优化问题,如何求取最优值呢?常用的方法是KKT条件.
同样地,把所有的不等式约束、等式约束和目标函数全部写为一个式子L(a, b, x)= f(x) + a*g(x)+b*h(x),
KKT条件是说最优值必须满足以下条件:
1. L(a, b, x)对x求导为零;
2. h(x) =0;
3. a*g(x) = 0;
求取这三个等式之后就能得到候选最优值。其中第三个式子非常有趣,因为g(x)<=0,
如果要满足这个等式,必须a=0或者g(x)=0. 这是SVM的很多重要性质的来源,如支持向量的概念。
我们按照拉格朗日乘子法:
构造
L
(
w
T
,
x
,
b
)
=
1
2
∣
∣
w
∣
∣
2
+
∑
i
m
α
i
[
1
−
y
i
(
w
T
x
i
+
b
)
]
L(w^T,x,b)=\frac 1 2{||w||}^2+\sum_i^{m}\alpha_i[1-y_i(w^Tx_i+b)]
L(wT,x,b)=21∣∣w∣∣2+i∑mαi[1−yi(wTxi+b)]
令其对各分量求偏导等于0,即分别对
w
T
w^T
wT,
b
b
b求导
∣
∣
w
∣
∣
2
即
w
T
∗
w
||w||^2即 w^T*w
∣∣w∣∣2即wT∗w
可以得到
①
w
T
−
∑
i
m
α
i
y
i
x
i
=
0
w^T -\sum_i^m\alpha_iy_ix_i=0
wT−∑imαiyixi=0
②
∑
i
m
α
i
y
i
=
0
\sum_i^m\alpha_iy_i=0
∑imαiyi=0
把上述结论代入 L,
即
L
(
ω
,
b
,
α
)
=
1
2
∥
ω
∥
2
+
∑
i
=
1
m
α
i
[
1
−
y
i
(
ω
T
x
i
+
b
)
]
=
1
2
∥
∑
i
=
1
m
α
i
y
i
x
i
∥
2
+
∑
i
=
1
m
α
i
−
ω
T
∑
i
=
1
m
α
i
y
i
x
i
=
1
2
ω
T
∑
i
=
1
m
α
i
y
i
x
i
+
∑
i
=
1
m
α
i
−
ω
T
∑
i
=
1
m
α
i
y
i
x
i
=
∑
i
=
1
m
α
i
−
1
2
(
∑
i
=
1
m
α
i
y
i
x
i
T
)
(
∑
i
=
1
m
α
i
y
i
x
i
)
=
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
x
i
T
x
j
\begin{aligned} L(\omega,b,\alpha)&=\frac{1}{2}\|\omega\|^2 + \sum_{i=1}^m\alpha_i\Big[1-y_i(\omega^Tx_i+b)\Big] \\ &= \frac{1}{2}\left\| \sum_{i=1}^{m}\alpha_iy_ix_i \right\|^2 + \sum_{i=1}^{m}\alpha_i - \omega^T\sum_{i=1}^{m}\alpha_iy_ix_i \\ &=\frac{1}{2}\omega^T\sum_{i=1}^{m}\alpha_iy_ix_i+\sum_{i=1}^{m}\alpha_i - \omega^T\sum_{i=1}^{m}\alpha_iy_ix_i \\ &=\sum_{i=1}^{m}\alpha_i - \frac 1 2 \left(\sum_{i=1}^{m}\alpha_iy_ix_i^T\right)\left(\sum_{i=1}^{m}\alpha_iy_ix_i\right) \\ &=\sum_{i=1}^{m}\alpha_i - \frac 12\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j \end{aligned}
L(ω,b,α)=21∥ω∥2+i=1∑mαi[1−yi(ωTxi+b)]=21∥∥∥∥∥i=1∑mαiyixi∥∥∥∥∥2+i=1∑mαi−ωTi=1∑mαiyixi=21ωTi=1∑mαiyixi+i=1∑mαi−ωTi=1∑mαiyixi=i=1∑mαi−21(i=1∑mαiyixiT)(i=1∑mαiyixi)=i=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxj
资料:
一篇介绍svm还不错的博客:
【机器学习】支持向量机SVM原理及推导
一个对拉格朗日乘子法很好的归纳的博客,基本够用了
深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件