线性SVM的对偶问题
最大间隔的优化问题:
m
i
n
1
2
∥
ω
∥
2
s
.
t
.
y
i
(
ω
T
x
i
+
b
)
≥
1
,
i
=
1
,
.
.
.
,
n
min \frac{1}{2}\|\omega\|^2 \quad s.t.\, y_i(\omega^Tx_i + b) \ge 1, i=1,...,n
min21∥ω∥2s.t.yi(ωTxi+b)≥1,i=1,...,n
这是一个凸二次优化问题,转化为拉格朗日对偶问题,通过求解与原问题等价的对偶问题得到原始问题的最优解,使得在一定的约束条件下,目标最优,损失最小。
此时目标函数变为:
L ( ω , b , α ) = 1 2 ∥ ω ∥ 2 − ∑ i = 1 n α i ( y i ( ω T x i + b ) − 1 ) L(\omega,b,\alpha)=\dfrac{1}{2}\|\omega\|^2 - \sum_{i=1}^{n}\alpha_i(y_i(\omega^Tx_i + b) - 1) L(ω,b,α)=21∥ω∥2−∑i=1nαi(yi(ωTxi+b)−1)
把原始问题的最小化,转化为拉格朗日函数的最大化:
max
α
i
≥
0
L
(
ω
,
b
,
α
)
\mathop{\max}_{\alpha_i\ge 0}L(\omega,b,\alpha)
maxαi≥0L(ω,b,α)
拉格朗日乘子
α
\alpha
α相当于惩罚因子:
当不满足原约束条件(即 y i ( ω T x i + b ) < 1 y_i(\omega^Tx_i + b) < 1 yi(ωTxi+b)<1)时,乘上非负的拉格朗日乘子 α \alpha α,整个L(w,b,a)变大了;
满足约束条件 y i ( ω T x i + b ) ≥ 1 y_i(\omega^Tx_i + b) \ge 1 yi(ωTxi+b)≥1时,拉格朗日乘子 α \alpha α使得L()变小了,L的极大值就是 1 2 ∥ ω ∥ 2 \frac{1}{2}\|\omega\|^2 21∥ω∥2,与原始目标一致!
越不满足约束条件,L就越大,表示偏离原始目标越远;符合约束条件时,L越来越小,max(L)等价于原始问题,这样
L
(
α
)
L(\alpha)
L(α)使约束条件和原始目标绑定到了一起,方便优化求解。
问题就变成了L关于
α
\alpha
α最大化,然后在约束条件得到满足的情况下最小化
1
2
∥
ω
∥
2
\frac{1}{2}\|\omega\|^2
21∥ω∥2,
写成公式:
min
w
,
b
max
α
i
≥
0
L
(
ω
,
b
,
α
)
=
p
∗
→
max
α
i
≥
0
min
w
,
b
L
(
ω
,
b
,
α
)
=
d
∗
\mathop{\min}\limits_{w,b} \mathop{\max}\limits_{\alpha_i\ge 0}L(\omega,b,\alpha)=p^* \rightarrow \mathop{\max}\limits_{\alpha_i\ge 0} \mathop{\min}\limits_{w,b} L(\omega,b,\alpha)=d^{*}
w,bminαi≥0maxL(ω,b,α)=p∗→αi≥0maxw,bminL(ω,b,α)=d∗
p ∗ p^* p∗是原始问题的最优值, d ∗ d^* d∗表示其对偶问题的最优值,且 d ∗ ≤ p ∗ d^* \le p^* d∗≤p∗,当满足KTT条件时,对偶问题的最优值等于原始问题的最优值。
求解,先分别对w, b求偏导并令其等于0,代入拉格朗日函数,得到:
min
ω
,
b
L
(
ω
,
b
,
α
)
=
−
1
2
∑
i
∑
j
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
α
i
s
.
t
.
∑
α
i
y
i
=
0
\mathop{\min}\limits_{\omega,b}\ L(\omega,b,\alpha) = - \dfrac{1}{2}\sum_i\sum_j \alpha_i \alpha_j y_i y_j (x_i \cdot x_j)+\sum_i \alpha_i \quad s.t. \sum\alpha_iy_i = 0
ω,bmin L(ω,b,α)=−21∑i∑jαiαjyiyj(xi⋅xj)+∑iαis.t.∑αiyi=0
再对
α
\alpha
α求最大值:
max
α
−
1
2
∑
i
∑
j
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
α
i
\mathop{\max}_{\alpha} - \dfrac{1}{2}\sum_i\sum_j \alpha_i \alpha_j y_i y_j (x_i \cdot x_j)+\sum_i \alpha_i
maxα−21∑i∑jαiαjyiyj(xi⋅xj)+∑iαi
等价于:
min
α
1
2
∑
i
∑
j
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
−
∑
i
α
i
\mathop{\min}_{\alpha} \dfrac{1}{2}\sum_i\sum_j \alpha_i \alpha_j y_i y_j (x_i \cdot x_j)-\sum_i \alpha_i
minα21∑i∑jαiαjyiyj(xi⋅xj)−∑iαi
这种算法称为线性可分支持向量机的对偶学习算法。
最后得到:
ω
∗
=
∑
i
α
i
∗
y
i
x
i
;
b
∗
=
y
i
−
∑
i
=
1
N
α
i
∗
y
i
(
x
i
⋅
x
j
)
\omega^* = \sum_i\alpha_i^*\ y_i x_i \, ; \\ b^*=y_i-\sum\limits_{i=1}^{N}\alpha_i^*y_i(x_i\cdot x_j)
ω∗=∑iαi∗ yixi;b∗=yi−i=1∑Nαi∗yi(xi⋅xj)
松弛变量
以上我们都只关心一个目的:寻找能够最大化间隔的分类超平面。然而,由于样本点中异常点的存在,只考虑这一个因素往往无法得到一个最佳的分类器。
如果我们能够放宽对于间隔的限制,便可以一定程度的忽略异常点的影响,反而能得到间隔更大的分类超平面。
上述容忍异常点的思路可以通过引入“松弛变量”(slack variable)实现,把约束条件放松到
y
i
(
w
T
x
i
+
b
)
+
ξ
i
≥
1
,
i
=
1
,
2
,
.
.
.
,
N
y_i(w^Tx_i+b)+\xi_i \geq 1,\ i=1,2,...,N
yi(wTxi+b)+ξi≥1, i=1,2,...,N
可以用
∑
i
=
1
l
ξ
i
\sum_{i=1}^{l}\xi_i
∑i=1lξi来描述训练集被错分的程度。
当
ξ
i
\xi_i
ξi足够大时,样本点总可以满足间隔尽量大错划尽量少,需要对
ξ
i
\xi_i
ξi加一个惩罚参数C:
min
ω
,
b
,
ξ
1
2
∥
ω
∥
2
+
C
∑
i
=
1
l
ξ
i
s
.
t
y
i
(
w
T
x
i
+
b
)
+
ξ
i
≥
1
,
ξ
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
l
\begin{array}{lr} \mathop{\min}_{\omega,b,\xi}\ \dfrac{1}{2}\|\omega\|^2 + C\sum_{i=1}^{l}\xi_i \\ \\ s.t \quad y_i(w^Tx_i+b)+\xi_i \geq 1,\ \xi_i\geq 0,\ i=1,2,...,l \end{array}
minω,b,ξ 21∥ω∥2+C∑i=1lξis.tyi(wTxi+b)+ξi≥1, ξi≥0, i=1,2,...,l
- C取无穷: ξ i \xi_i ξi只能为零,代表无法容忍任何误判样本的出现,即严格遵守“间隔”的限制,得到没有引入松弛变量时的分类超平面
- C取零: ξ i \xi_i ξi可以任意大,即任何误判结果都可以被容忍,得到分类超平面没有意义
- C较大: ξ i \xi_i ξi不能很大,因此限制条件难以被忽略,会得到较为狭窄间隔的分类超平面
- C较小: ξ i \xi_i ξi影响较小,因此限制条件可以被忽略,会得到较为宽间隔的分类超平面
非线性svm
把数据变换到高维空间,使得在高维特征空间中线性可分,通常使用函数映射比如 k = ( ( x i ⋅ x j ) + 1 ) 2 k=((x_i \cdot x_j)+1)^2 k=((xi⋅xj)+1)2
注意到线性间隔分类器只依赖于XiXj,因此转换函数只依赖于
ϕ
(
x
i
)
ϕ
(
x
j
)
=
K
(
x
i
⋅
x
j
)
\phi(x_i)\phi(x_j)=K(x_i\cdot x_j)
ϕ(xi)ϕ(xj)=K(xi⋅xj)
(
x
i
⋅
x
j
)
→
K
(
x
i
⋅
x
j
)
(x_i\cdot x_j) \rightarrow K(x_i\cdot x_j)
(xi⋅xj)→K(xi⋅xj)
决策函数变为 f ( x ) = s g n ( ∑ i = 1 l α i ∗ y i K ( x i , x j ) + b ∗ ) f(x)=sgn(\sum\limits_{i=1}^{l}\alpha_i^*y_iK(x_i,x_j) + b^*) f(x)=sgn(i=1∑lαi∗yiK(xi,xj)+b∗)
这样就可以选择各种形式的K(x,j),一旦选定了该核函数,就可以用上述决策函数求解最优化问题了。
常见的核函数有:
-
多项式核, K ( x i , x j ) = [ ( x i ⋅ x j ) + c ] q K(x_i,x_j) = [(x_i\cdot x_j)+c]^q K(xi,xj)=[(xi⋅xj)+c]q
-
径向基核(RBF), K ( x i , x j ) = e x p { − ∣ x − x i ∣ 2 σ 2 } K(x_i,x_j) = exp \left \{ - \dfrac {|x-x_i|^2}{\sigma^2} \right \} K(xi,xj)=exp{−σ2∣x−xi∣2}
-
sigmoid核, K ( x i , x j ) = t a n h ( v ( x ⋅ x i ) + c ) K(x_i,x_j) = tanh(v(x\cdot x_i)+c) K(xi,xj)=tanh(v(x⋅xi)+c)
径向基函数 (Radial Basis Function 简称 RBF), 是一类函数,径向基函数是一个它的值(y)只依赖于变量(x)距原点距离的函数,即
ϕ
(
x
)
=
ϕ
(
∥
x
∥
)
\phi(\mathbf{x}) = \phi(\|\mathbf{x}\|)
ϕ(x)=ϕ(∥x∥);也可以是距其他某个中心点的距离,即
ϕ
(
x
,
c
)
=
ϕ
(
∥
x
−
c
∥
)
\phi(\mathbf{x}, \mathbf{c}) = \phi(\|\mathbf{x}-\mathbf{c}\|)
ϕ(x,c)=ϕ(∥x−c∥)。也就是说,可以选定径向基函数来当核函数,譬如SVM里一般都用高斯径向基作为核函数,但是核函数不一定要选择径向基这一类函数。
最常用的径向基函数是高斯核函数:
K
(
x
i
,
x
j
)
=
e
x
p
{
−
∣
x
−
x
i
∣
2
2
σ
2
}
K(x_i,x_j) = exp \left \{ - \dfrac {|x-x_i|^2}{2\sigma^2} \right \}
K(xi,xj)=exp{−2σ2∣x−xi∣2}
Ref:
https:// blog.csdn.net/u013630349/article/details/48162589