支持向量机(SVM)算法学习笔记
Motivation:
最近学习CNN卷积神经网络,其中有介绍到SVM里面的Hinge损失函数,为了弄懂这个概念重新看了一遍SVM算法,这里总结SVM中的关键知识点。
Related:
SVM涉及到的数学知识
线性分类
凸二次规划
正则化
Hinge损失函数
Introduction:
支持向量机(Support Vector Machines, SVM)是一种二类分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大化使它有别于感知机;支持向量机还包括核技巧,这使它成为非线性分类器。支持向量机的学习策略是间隔最大化,可看成是求解一个凸二次规划问题(Convex Quadratic Programming),也等价于正则化的合页(Hinge)损失函数最小化问题。支持向量机的学习算法是求解凸二次规划的最优化算法。
Detail:
按照《统计学习方法》中支持向量机一章中的介绍,本文分三个部分:
- 线性可分支持向量机
- 软间隔最大化
- 非线性支持向量机和核函数
线性可分支持向量机中假设数据集通过一个超平面就可以分开,但是绝大部分数据集通过线性分类器不能通过超平面分开,如果允许存在一定的误差就叫软间隔最大化支持向量机,如果线性方式完全不可分需要通过一个核函数讲向量空间又原始空间转换到特征空间,或者说将低维度原始数据转换到高纬度空间已达到线性可分的分类算法叫非线性支持向量机。
1. 线性可分支持向量机
假设给定训练数据集:
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋅
⋅
⋅
,
(
x
n
,
y
n
)
}
T=\{(x_1,y_1),(x_2,y_2),\cdot \cdot\cdot, (x_n,y_n)\}
T={(x1,y1),(x2,y2),⋅⋅⋅,(xn,yn)}
其中
x
i
∈
x
=
R
n
,
y
i
∈
y
=
{
+
1
,
−
1
}
,
i
=
{
1
,
2
,
…
,
N
}
x
i
x_i \in x=R^n , y_i \in y = \{+1,-1\} , i=\{1,2,…,N\} x_i
xi∈x=Rn,yi∈y={+1,−1},i={1,2,…,N}xi为第i个特征向量,也称为实例,
y
i
y_i
yi是
x
i
x_i
xi的标记,当
y
i
=
+
1
y_i=+1
yi=+1 时称
x
i
x_i
xi为正例,反之为负例。
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)为样本点。此处假设数据集T是线性可分的。
定义函数间隔(Functional Margin)对于给定的训练数据集T和超平面
(
w
,
b
)
(w,b)
(w,b),定义超平面
(
w
,
b
)
(w,b)
(w,b)关于样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的函数间隔为:
γ
i
^
=
y
i
(
ω
⋅
x
i
+
b
)
\hat{\gamma_i}=y_i(\omega \cdot x_i+b)
γi^=yi(ω⋅xi+b)
定义几何间隔(Geometric Margin) 对于给定的训练数据集T和超平面(w,b),定义超平面(w,b)关于样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的几何间隔为:
γ
i
=
y
i
(
ω
∥
ω
∥
⋅
x
i
+
b
∥
ω
∥
)
\gamma_i=y_i(\frac{\omega}{\left \| \omega \right \|} \cdot x_i+\frac{b}{\left \| \omega \right \| })
γi=yi(∥ω∥ω⋅xi+∥ω∥b)
函数间隔和几何间隔的关系:
γ
i
=
γ
i
^
∥
ω
∥
\gamma_i = \frac {\hat{\gamma_i }}{\left \| \omega \right \|}
γi=∥ω∥γi^
对于线性可分数据集支持向量机的核心思想是能够正确划分训练数据集并且几何间隔最大的超平面。
可以用如下表达式:
m
a
x
ω
,
b
γ
\underset{\omega,b}{max} \gamma
ω,bmaxγ
s
.
t
.
y
i
(
ω
∥
ω
∥
⋅
x
i
+
b
∥
ω
∥
)
⩾
γ
,
i
=
1
,
2
,
…
.
,
N
s.t. y_i(\frac{\omega}{\left \| \omega \right \|} \cdot x_i+\frac{b}{\left \| \omega \right \| })\geqslant \gamma,i=1,2,….,N
s.t.yi(∥ω∥ω⋅xi+∥ω∥b)⩾γ,i=1,2,….,N
考虑几何间隔和函数间隔的关系也可以写成:
m
a
x
ω
,
b
γ
^
∥
ω
∥
\underset{\omega,b}{max} \frac{\hat{\gamma }}{\left \| \omega \right \|}
ω,bmax∥ω∥γ^
s
.
t
.
y
i
(
ω
⋅
x
i
+
b
)
⩾
γ
^
,
i
=
1
,
2
,
…
.
,
N
s.t. y_i(\omega \cdot x_i+b)\geqslant \hat{\gamma},i=1,2,….,N
s.t.yi(ω⋅xi+b)⩾γ^,i=1,2,….,N
从函数间隔的定义可以知道:函数间隔可以表示分类预测的正确性和置信度。如果成比例地改变w和b可以改变函数间隔但是实际上超平面并没有改变。
从几何间隔的定义可以知道:几何间隔实际是样本点到超平面的几何距离,也可以说是样本点到超平面的带符号距离。
从上面的分析可以知道函数间隔的取值不会影响最优化问题的解,这样,就可以去函数间隔为1,将支持向量机学习的优化问题转换成:
m
i
n
ω
,
b
∥
ω
∥
2
s
.
t
.
y
i
(
ω
⋅
x
i
+
b
)
−
1
⩾
0
,
i
=
1
,
2
,
…
.
,
N
\underset{\omega,b}{min} \left \| \omega \right \|^2\\ s.t. \quad y_i(\omega \cdot x_i+b)-1 \geqslant 0,i=1,2,….,N
ω,bmin∥ω∥2s.t.yi(ω⋅xi+b)−1⩾0,i=1,2,….,N
这是一个凸二次规划问题,如果求出了问题的解
ω
∗
,
b
∗
,
\omega^*,b^*,
ω∗,b∗,那么就可以得到最大分类超平面:
ω
∗
⋅
x
+
b
∗
=
0
\omega^* \cdot x + b^* =0
ω∗⋅x+b∗=0
分类决策函数:
f
(
x
)
=
s
i
g
n
(
ω
∗
⋅
x
+
b
∗
)
f(x)=sign(\omega^* \cdot x + b^*)
f(x)=sign(ω∗⋅x+b∗)
拉格朗日对偶性(Lagrange duality)
在解决最优化问题的时候,常常利用拉格朗日对偶性(Lagrange duality)将原始问题转换成对偶问题,通过解对偶问题而得到原始问题的解。
1).原始问题
假设
f
(
x
)
,
c
i
(
x
)
,
h
j
(
x
)
f(x),c_i(x),h_j(x)
f(x),ci(x),hj(x)是定义在
R
n
R^n
Rn上的连续可微函数。考虑约束最优化问题:
m
i
n
x
∈
R
n
f
(
x
)
s
.
t
.
c
i
(
x
)
≤
0
,
i
=
1
,
2
,
⋅
⋅
⋅
,
k
h
j
(
x
)
=
0
,
j
=
1
,
2
,
⋅
⋅
⋅
,
l
\underset{x \in R^n}{min} \quad f(x)\\ s.t. \quad c_i(x) \leq 0, \quad i=1,2, \cdot\cdot\cdot,k \\ h_j(x)=0, \quad j=1,2, \cdot\cdot\cdot,l
x∈Rnminf(x)s.t.ci(x)≤0,i=1,2,⋅⋅⋅,khj(x)=0,j=1,2,⋅⋅⋅,l
称此问题为原始最优化问题。
引入广义拉格朗日函数(Generalized Lagrange Function)
L
(
x
,
α
,
β
)
=
f
(
x
)
+
∑
i
=
1
k
α
i
c
i
(
x
)
+
∑
j
=
1
l
β
i
h
i
(
x
)
L(x,\alpha,\beta)=f(x)+\sum_{i=1}^{k}\alpha_i c_i(x)+\sum_{j=1}^{l}\beta_i h_i(x)
L(x,α,β)=f(x)+i=1∑kαici(x)+j=1∑lβihi(x)
这里
x
=
(
x
(
1
)
,
x
(
2
)
,
⋅
⋅
⋅
,
x
(
n
)
)
T
∈
R
n
x = (x^{(1)},x^{(2)}, \cdot\cdot\cdot,x^{(n)})^T \in R^n
x=(x(1),x(2),⋅⋅⋅,x(n))T∈Rn,其中
α
i
,
β
i
\alpha_i,\beta_i
αi,βi是拉格朗日乘子,
a
i
≥
0
a_i \geq 0
ai≥0。考虑
x
x
x的函数:
θ
p
(
x
)
=
m
a
x
α
,
β
:
α
i
≥
0
L
(
x
,
α
,
β
)
\theta_p (x)=\underset{\alpha,\beta:\alpha_i \geq 0}{max} L(x,\alpha,\beta)
θp(x)=α,β:αi≥0maxL(x,α,β)
下标P表示原始问题(premier)
原始问题的解等价于
m
i
n
x
θ
P
(
x
)
=
m
i
n
x
m
a
x
α
,
β
:
α
i
≥
0
L
(
x
,
α
,
β
)
\underset{x}{min}\theta_P (x) = \underset{x}{min} \underset{\alpha,\beta:\alpha_i \geq 0}{max} L(x,\alpha,\beta)
xminθP(x)=xminα,β:αi≥0maxL(x,α,β)
换句话说原始问题等价于广义拉格朗日函数的极小极大问题。(详细证明可见《统计学习方法》)
为了表示方便定义原始问题的最优值:
p
∗
=
m
i
n
x
θ
p
(
x
)
p^*=\underset{x}{min} \theta_p(x)
p∗=xminθp(x)
2). 对偶问题
定义
θ
D
(
α
,
β
)
=
m
i
n
L
(
x
,
α
,
β
)
\theta_D(\alpha,\beta)=min L(x,\alpha,\beta)
θD(α,β)=minL(x,α,β)
再考虑极大化上述问题,即:
m
a
x
α
,
β
:
α
i
≥
0
θ
D
(
α
,
β
)
=
m
a
x
α
,
β
:
α
i
≥
0
m
i
n
x
L
(
x
,
α
,
β
)
\underset{\alpha,\beta:\alpha_i \geq 0}{max}\theta_D(\alpha,\beta)= \underset{\alpha,\beta:\alpha_i \geq 0}{max} \underset{x}{min} L(x,\alpha,\beta)
α,β:αi≥0maxθD(α,β)=α,β:αi≥0maxxminL(x,α,β)
广义拉格朗日函数的极大极小问题表示为约束最优化问题:
m
a
x
α
,
β
θ
D
(
α
,
β
)
=
m
a
x
α
,
β
m
i
n
x
L
(
x
,
α
,
β
)
s
.
t
.
α
i
≥
0
,
i
=
1
,
2
,
⋅
⋅
⋅
,
k
\underset{\alpha,\beta}{max}\theta_D(\alpha,\beta)= \underset{\alpha,\beta}{max} \underset{x}{min} L(x,\alpha,\beta) \\ s.t. \quad \alpha_i \geq 0, \quad i=1,2,\cdot\cdot\cdot,k
α,βmaxθD(α,β)=α,βmaxxminL(x,α,β)s.t.αi≥0,i=1,2,⋅⋅⋅,k
称为原始问题的对偶问题。定义对偶问题的最优解:
d
∗
=
m
a
x
α
,
β
:
α
i
≥
0
d^* = \underset{\alpha,\beta:\alpha_i \geq 0}{max}
d∗=α,β:αi≥0max
3). 原始问题和对偶问题的关系
在如下假设下原始问题和对偶问题的最优解相等。
(1) 假设函数
f
(
x
)
f(x)
f(x)和$c_i(x)
是
凸
函
数
,
是凸函数,
是凸函数,h_j(x)
是
仿
射
函
数
,
并
且
是仿射函数,并且
是仿射函数,并且c_i(x)
是
存
在
的
,
对
所
有
是存在的,对所有
是存在的,对所有c_i(x)<0
,
则
存
在
,则存在
,则存在x*,\alpha,\beta*,$是$x
是
原
始
问
题
的
解
,
是原始问题的解,
是原始问题的解,\alpha*,\beta$是对偶问题的解,并且
p
∗
=
d
∗
=
L
(
x
∗
,
α
∗
,
β
∗
)
p^*=d^* =L(x^*,\alpha^*,\beta^*)
p∗=d∗=L(x∗,α∗,β∗)
(2) 假设函数
f
(
x
)
f(x)
f(x)和$c_i(x)
是
凸
函
数
,
是凸函数,
是凸函数,h_j(x)
是
仿
射
函
数
,
并
且
是仿射函数,并且
是仿射函数,并且c_i(x)
是
存
在
的
,
对
所
有
是存在的,对所有
是存在的,对所有c_i(x)<0
,
则
,则
,则x*,\alpha,\beta*$是原始问题和对偶问题的解的充分必要条件是$x,\alpha*,\beta$满足下面的KKT(Karush-Kuhn-Tucker)条件:
∇
x
L
(
x
∗
,
α
∗
,
β
∗
)
=
0
∇
α
L
(
x
∗
,
α
∗
,
β
∗
)
=
0
∇
β
L
(
x
∗
,
α
∗
,
β
∗
)
=
0
α
i
∗
c
i
(
x
∗
)
=
0
,
i
=
1
,
2
,
⋅
⋅
⋅
,
k
c
i
(
x
∗
)
≤
0
,
i
=
1
,
2
,
⋅
⋅
⋅
,
k
α
i
∗
≥
0
,
i
=
1
,
2
,
⋅
⋅
⋅
,
k
h
j
(
x
∗
)
=
0
,
j
=
1
,
2
,
⋅
⋅
⋅
,
k
\nabla_x L(x^*,\alpha^*,\beta^*)=0 \\ \nabla_\alpha L(x^*,\alpha^*,\beta^*)=0 \\ \nabla_\beta L(x^*,\alpha^*,\beta^*)=0 \\ \alpha_i^*c_i(x^*)=0 , i=1,2,\cdot\cdot\cdot,k \\ c_i(x^*) \leq 0, i=1,2,\cdot\cdot\cdot,k \\ \alpha_i^* \geq 0, i=1,2,\cdot\cdot\cdot,k \\ h_j(x^*)=0, j=1,2,\cdot\cdot\cdot,k
∇xL(x∗,α∗,β∗)=0∇αL(x∗,α∗,β∗)=0∇βL(x∗,α∗,β∗)=0αi∗ci(x∗)=0,i=1,2,⋅⋅⋅,kci(x∗)≤0,i=1,2,⋅⋅⋅,kαi∗≥0,i=1,2,⋅⋅⋅,khj(x∗)=0,j=1,2,⋅⋅⋅,k
综上所述,就有下面的线性可分支持向量机的学习算法–最大间隔算法(Maximum Margin Method)
算法(线性可分支持向量机学习算法–最大间隔法)
输入:线性可分训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
N
,
y
n
)
}
,
其
中
,
x
i
∈
x
=
R
∗
n
,
y
i
∈
Y
=
{
−
1
,
+
1
}
,
i
=
1
,
2
,
.
.
.
,
N
;
T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_n)\},其中,x_i \in x=R*n,y_i \in Y=\{-1,+1\},i=1,2,...,N;
T={(x1,y1),(x2,y2),...,(xN,yn)},其中,xi∈x=R∗n,yi∈Y={−1,+1},i=1,2,...,N;
2.线性支持向量机与最大软间隔
前面介绍的数据集是假设线性可分的情况下数据,对于线性不可分训练数据是不适用的,因为上述方法中的不等式约束并不是都成立。为解决线性不可分的问题,需要修改硬间隔最大化,使其成为软间隔最大化。
假设给定一个特征空间上的训练数据集:
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
n
,
y
n
)
}
T =\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\}
T={(x1,y1),(x2,y2),...,(xn,yn)}
其中,
x
i
∈
x
=
R
n
,
y
i
∈
y
=
{
+
1
,
−
1
}
,
i
=
1
,
2
,
.
.
.
,
N
x_i \in x =R^n,y_i\in y=\{+1,-1\},i=1,2,...,N
xi∈x=Rn,yi∈y={+1,−1},i=1,2,...,N ,
x
i
x_i
xi为第i个特征向量,
y
i
y_i
yi为
x
i
x_i
xi 的类标记。再假设训练数据不是线性可分的。通常情况下,训练数据中有一些特异点(outlier),将这些特异点除去后,剩下的大部分样本点组成的几何是线性可分的。
线性不可分意味着某些样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi) 不能满足函数间隔大于等于1的约束条件。