前言
最近,抽了一些时间阅读了李航老师的《统计学习方法》的支持向量机相关章节。读着读着发现我之前对于该节的理解十分的浅薄,虽然目前还不能把所有内容全部吃透,我选择将相关内容记录下来,以便后续进行更加深入的研究。
正文
支持向量机(support vector machines)是一种二分类模型,它的本质其实是一种定义在特征空间的线性分类器。而根据特征空间中所给的特征数据不同,支持向量机通常可以分为:线性可分支持向量机,线性支持向量机,以及非线性支持向量机。
线性可分支持向量机
何为在特征空间中线性可分呢,直观的理解方式如下图所示:
即:特征空间上的向量可以轻易被超平面分割成两类。
这类问题的求解方法为最大间隔法,所谓间隔可以被分为:函数间隔和几何间隔。
(函数间隔):对于给定的训练数据集
T
T
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
(
w
⋅
x
i
+
b
)
\hat\gamma_i=y_i(w\cdot x_i+b)
γ^i=yi(w⋅xi+b)定义超平面
(
w
,
b
)
(w,b)
(w,b)关于训练数据集
T
T
T的函数间隔为超平面
(
w
,
b
)
(w,b)
(w,b)关于
T
T
T中所有样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的函数间隔之最小值,即:
γ
^
=
min
i
=
1
,
.
.
.
,
N
γ
^
i
\hat\gamma=\min_{i=1,...,N}\hat\gamma_i
γ^=i=1,...,Nminγ^i
(几何间隔)由于
w
,
b
w,b
w,b可以成倍增长或者缩小导致最终的结果会发生相应的变化,所以又引入了几何间隔的概念,与函数间隔的区别在于规范化了
w
w
w:对于给定的训练数据集
T
T
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
(
w
∣
∣
w
∣
∣
⋅
x
i
+
b
∣
∣
w
∣
∣
)
\gamma_i=y_i(\frac{w}{||w||}\cdot x_i+\frac{b}{||w||})
γi=yi(∣∣w∣∣w⋅xi+∣∣w∣∣b)定义超平面
(
w
,
b
)
(w,b)
(w,b)关于训练数据集
T
T
T的函数间隔为超平面
(
w
,
b
)
(w,b)
(w,b)关于
T
T
T中所有样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的函数间隔之最小值,即:
γ
=
min
i
=
1
,
.
.
.
,
N
γ
^
i
\gamma=\min_{i=1,...,N}\hat\gamma_i
γ=i=1,...,Nminγ^i
通过最大间隔化,可以推导出此时需要解决的原始优化问题为(推导过程省略,感兴趣可以自行翻阅相关章节):
min
w
,
b
1
2
∣
∣
w
∣
∣
2
s
.
t
.
y
i
(
w
⋅
x
i
+
b
)
−
1
≥
0
,
i
=
1
,
2
,
.
.
.
,
N
\min_{w,b}\quad \frac{1}{2}||w||^2\\ s.t.\quad y_i(w\cdot x_i+b)-1\ge0,\quad i=1,2,...,N
w,bmin21∣∣w∣∣2s.t.yi(w⋅xi+b)−1≥0,i=1,2,...,N
求得最优化问题的解
w
∗
,
b
∗
w^*,b^*
w∗,b∗,得到线性可分的支持向量机以此确定超平面:
w
∗
⋅
x
+
b
∗
=
0
w^*\cdot x+b^*=0
w∗⋅x+b∗=0
分类决策函数是:
f
(
x
)
=
s
i
g
n
(
w
∗
⋅
x
+
b
∗
)
f(x)=sign(w^*\cdot x+b^*)
f(x)=sign(w∗⋅x+b∗)
性质:
- 线性可分支持向量机的最优解存在且唯一;
- 位于间隔边界上的实例点为支持向量;
- 最优分离超平面由支持向量完全决定。
上述原始问题换个角度其实就是二次规划问题,可以引入拉格朗日乘子,原始问题与拉格朗日算子问题在特定条件下为对偶问题。
min
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
−
∑
i
=
1
N
α
i
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
N
\min\quad\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-\sum_{i=1}^N\alpha_i\\ s.t.\quad \sum_{i=1}^N\alpha_iy_i=0\quad\alpha_i\ge0,i=1,2,...N
min21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=0αi≥0,i=1,2,...N对于该类拉格朗日算子解法可以表示为:
(1)构造上述优化问题,并通过求偏导的方法求出
α
∗
=
(
α
1
∗
,
α
2
∗
,
.
.
.
,
α
N
∗
)
T
\alpha^{*}=(\alpha^{*}_1,\alpha^*_2,...,\alpha^*_N)^T
α∗=(α1∗,α2∗,...,αN∗)T最优解;
(2)计算
w
∗
=
∑
i
=
1
N
α
i
∗
y
i
x
i
w^*=\sum_{i=1}^N\alpha_i^*y_ix_i
w∗=i=1∑Nαi∗yixi并选择
α
∗
\alpha^*
α∗的一个正分量
α
j
∗
>
0
\alpha_j^*>0
αj∗>0,计算
b
∗
=
y
j
−
∑
i
=
1
N
α
i
∗
y
i
(
x
i
⋅
x
j
)
b^*=y_j-\sum_{i=1}^N\alpha_i^*y_i(x_i\cdot x_j)
b∗=yj−i=1∑Nαi∗yi(xi⋅xj)
(3)求得超平面与决策函数。
线性支持向量
在现实中如开始的那幅图所示的情况毕竟仍是少数,往往每个类别中都会出现个别奇异点,或者是额外噪声的情况,只能看作是近似可分的。所以我们需要引入额外的松弛变量
ξ
i
\xi_i
ξi,得到线性支持向量机学习的凸二次规划问题。其原始最优化问题为:
min
w
,
b
,
ξ
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
N
ξ
i
s
.
t
.
y
i
(
w
⋅
x
i
+
b
)
≥
1
−
ξ
i
,
i
=
1
,
2
,
.
.
.
N
ξ
i
≥
0
,
i
=
1
,
2
,
.
.
.
N
\min_{w,b,\xi}\quad\frac{1}{2}||w||^2+C\sum_{i=1}^N\xi_i\\ s.t.\quad y_i(w\cdot x_i + b)\ge 1-\xi_i,\quad i=1,2,...N\\ \xi_i\ge0,\quad i=1,2,...N
w,b,ξmin21∣∣w∣∣2+Ci=1∑Nξis.t.yi(w⋅xi+b)≥1−ξi,i=1,2,...Nξi≥0,i=1,2,...N其中C为惩罚系数,一般由实际问题决定,加入额外的一项的含义可以进行如下的解释:在分类间隔尽可能大的情况下使得误分类点的个数尽可能的小。
求解原始最优化问题的解
w
∗
,
b
∗
w^*,b^*
w∗,b∗,得到线性支持向量机,其分离超平面为
w
∗
⋅
x
+
b
∗
=
0
w^*\cdot x+b^*=0
w∗⋅x+b∗=0分类决策函数为:
f
(
x
)
=
s
i
g
n
(
w
∗
⋅
x
+
b
∗
)
f(x)=sign(w^*\cdot x+b^*)
f(x)=sign(w∗⋅x+b∗)
线性支持向量机的解
w
∗
w^*
w∗唯一但
b
∗
b^*
b∗并不一定唯一。
该类支持向量机所对应的对偶问题为:
min
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
−
∑
i
=
1
N
α
i
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
0
≤
α
i
≤
C
,
i
=
1
,
2
,
.
.
.
N
\min\quad\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-\sum_{i=1}^N\alpha_i\\ s.t.\quad \sum_{i=1}^N\alpha_iy_i=0\quad0\le \alpha_i\le C,i=1,2,...N
min21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=00≤αi≤C,i=1,2,...N求解该类问题的算法为:
(1)构造上述式子,并通过求偏导的方法求出
α
∗
=
(
α
1
∗
,
α
2
∗
,
.
.
.
,
α
N
∗
)
T
\alpha^{*}=(\alpha^{*}_1,\alpha^*_2,...,\alpha^*_N)^T
α∗=(α1∗,α2∗,...,αN∗)T最优解;
(2)计算
w
∗
=
∑
i
=
1
N
α
i
∗
y
i
x
i
w^*=\sum_{i=1}^N\alpha_i^*y_ix_i
w∗=i=1∑Nαi∗yixi选择
α
∗
\alpha^*
α∗的一个分量
α
j
∗
\alpha_j^*
αj∗适合条件
0
<
α
j
∗
<
C
0<\alpha_j^*<C
0<αj∗<C,计算
b
∗
=
y
j
−
∑
i
=
1
N
y
i
α
i
∗
(
x
i
⋅
x
j
)
b^*=y_j-\sum_{i=1}^Ny_i\alpha_i^*(x_i\cdot x_j)
b∗=yj−i=1∑Nyiαi∗(xi⋅xj)
(3)求得超平面与分类决策函数
性质:
- 对偶问题的解 α ∗ \alpha^* α∗中满足 α ∗ > 0 \alpha^*>0 α∗>0的实例点 x i x_i xi称为支持向量(具体细分规则,请看下图);
- 支持向量可在间隔边界上,也可在间隔边界与分离超平面之间,或者在分离超平面误分一侧;
- 最优分离平面由支持向量决定。
线性支持向量机学习等价于最小化二阶范数正则化的合页函数:
∑
i
=
1
N
[
1
−
y
i
(
w
⋅
x
i
+
b
)
]
+
+
λ
∣
∣
w
∣
∣
2
\sum_{i=1}^N[1-y_i(w\cdot x_i+b)]_{+}+\lambda||w||^2
i=1∑N[1−yi(w⋅xi+b)]++λ∣∣w∣∣2其中目标函数的第一项是经验损失,且下表”+“的含义为:
z
+
=
{
z
,
z
>
0
0
,
z
<
0
z_+=\begin{cases} z,\quad z>0 \\ 0, \quad z<0 \end{cases}
z+={z,z>00,z<0
非线性支持向量机
简单来说,该类情况发生于特征空间内的数据集没有办法利用超平面来进行区分,所以需要通过核函数进行非线性变换之后,转换成常规的线性向量机的问题,那么其中的关键就在于将对偶问题中的内积替换成核函数。
具体地,
K
(
x
,
z
)
K(x,z)
K(x,z)是一个核函数,意味着存在一个从输入空间
X
X
X到特征空间
H
H
H的映射
ϕ
(
x
)
:
X
→
H
\phi(x):X\rightarrow H
ϕ(x):X→H,对任意
x
,
z
∈
X
x,z\in X
x,z∈X,有:
K
(
x
,
z
)
=
ϕ
(
x
)
⋅
ϕ
(
z
)
K(x,z)=\phi(x)\cdot \phi(z)
K(x,z)=ϕ(x)⋅ϕ(z)对称函数
K
(
x
,
z
)
K(x,z)
K(x,z)为正定核的充要条件如下:对任意
x
i
∈
X
,
i
=
1
,
2
,
.
.
.
m
x_i\in X,i=1,2,...m
xi∈X,i=1,2,...m,任意正整数
m
m
m,对称函数
K
(
x
,
z
)
K(x,z)
K(x,z)对应的Gram矩阵是半正定的。
那么该类支持向量机的对偶问题为:
min
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
−
∑
i
=
1
N
α
i
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
0
≤
α
i
≤
C
,
i
=
1
,
2
,
.
.
.
N
\min\quad\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i, x_j)-\sum_{i=1}^N\alpha_i\\ s.t.\quad \sum_{i=1}^N\alpha_iy_i=0\quad0\le \alpha_i\le C,i=1,2,...N
min21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαis.t.i=1∑Nαiyi=00≤αi≤C,i=1,2,...N求解该类问题的算法为:
(1)构造上述式子,并通过求偏导的方法求出
α
∗
=
(
α
1
∗
,
α
2
∗
,
.
.
.
,
α
N
∗
)
T
\alpha^{*}=(\alpha^{*}_1,\alpha^*_2,...,\alpha^*_N)^T
α∗=(α1∗,α2∗,...,αN∗)T最优解;
(2)计算
w
∗
=
∑
i
=
1
N
α
i
∗
y
i
x
i
w^*=\sum_{i=1}^N\alpha_i^*y_ix_i
w∗=i=1∑Nαi∗yixi选择
α
∗
\alpha^*
α∗的一个分量
α
j
∗
\alpha_j^*
αj∗适合条件
0
<
α
j
∗
<
C
0<\alpha_j^*<C
0<αj∗<C,计算
b
∗
=
y
j
−
∑
i
=
1
N
y
i
α
i
∗
K
(
x
i
,
x
j
)
b^*=y_j-\sum_{i=1}^Ny_i\alpha_i^*K(x_i, x_j)
b∗=yj−i=1∑Nyiαi∗K(xi,xj)
(3)求得超平面与分类决策函数
f
(
x
)
=
s
i
g
n
(
∑
i
=
1
N
α
i
∗
y
i
K
(
x
,
x
j
)
+
b
∗
)
f(x)=sign(\sum_{i=1}^N\alpha_i^*y_iK(x,x_j)+b^*)
f(x)=sign(i=1∑Nαi∗yiK(x,xj)+b∗)常用的核函数为:
1、多项式核函数
K
(
x
,
z
)
=
(
x
⋅
z
+
1
)
p
f
(
x
)
=
s
i
g
n
(
∑
i
=
1
N
s
α
i
∗
y
i
(
x
i
⋅
x
+
1
)
p
+
b
∗
)
K(x,z)=(x\cdot z+1)^p\\f(x)=sign(\sum_{i=1}^{N_s}\alpha_i^*y_i(x_i\cdot x+1)^p+b^*)
K(x,z)=(x⋅z+1)pf(x)=sign(i=1∑Nsαi∗yi(xi⋅x+1)p+b∗)
2、高斯核函数
K
(
x
,
z
)
=
e
x
p
(
−
∣
∣
x
−
z
∣
∣
2
2
σ
2
)
f
(
x
)
=
s
i
g
n
(
∑
i
=
1
N
s
α
i
∗
y
i
e
x
p
(
−
∣
∣
x
−
z
∣
∣
2
2
σ
2
)
+
b
∗
)
K(x,z)=exp(-\frac{||x-z||^2}{2\sigma^2})\\f(x)=sign(\sum_{i=1}^{N_s}\alpha_i^*y_iexp(-\frac{||x-z||^2}{2\sigma^2})+b^*)
K(x,z)=exp(−2σ2∣∣x−z∣∣2)f(x)=sign(i=1∑Nsαi∗yiexp(−2σ2∣∣x−z∣∣2)+b∗)
3、字符串核函数(略)
SMO算法(简略介绍)
该算法是一种支持向量机学习的快速算法,特点是不断将原二次规划问题分解为只有两个变量的二次规划子问题,并对子问题进行解析求解,直到所有变量都满足KKT条件。这是一种启发式的学习算法。
具体算法步骤为:
1、取初值
α
(
0
)
=
0
\alpha^{(0)}=0
α(0)=0,令
k
=
0
k=0
k=0;
2、选取优化变量
α
1
(
k
)
,
α
2
(
k
)
\alpha^{(k)}_1,\alpha^{(k)}_2
α1(k),α2(k),解析求解两个变量的最优化问题(该步骤需要参考书中相关内容,由于并未深入研究所以在此不做过多阐述),求得最优解
α
1
(
k
+
1
)
,
α
2
(
k
+
1
)
\alpha^{(k+1)}_1,\alpha^{(k+1)}_2
α1(k+1),α2(k+1),更新
α
\alpha
α为
α
(
k
+
1
)
\alpha^{(k+1)}
α(k+1)
3、若在精度
ϵ
\epsilon
ϵ范围内,满足停止条件
∑
i
=
1
N
α
i
y
i
=
0
,
0
≤
α
i
≤
C
,
i
=
1
,
2
,
.
.
.
,
N
y
i
⋅
g
(
x
i
)
=
{
≥
1
,
{
x
i
∣
α
i
=
0
}
=
1
,
{
x
i
∣
0
<
α
i
<
C
}
≤
1
,
{
x
i
∣
α
i
=
C
}
\sum_{i=1}^N\alpha_iy_i=0,\quad 0\le\alpha_i\le C,\quad i=1,2,...,N\\ y_i\cdot g(x_i)=\begin{cases} \ge1,\quad\{x_i|\alpha_i=0\} \\ =1,\quad \{x_i|0<\alpha_i<C\} \\ \le1,\quad \{x_i|\alpha_i=C\} \end{cases}
i=1∑Nαiyi=0,0≤αi≤C,i=1,2,...,Nyi⋅g(xi)=⎩⎪⎨⎪⎧≥1,{xi∣αi=0}=1,{xi∣0<αi<C}≤1,{xi∣αi=C}其中
g
(
x
i
)
=
∑
j
=
1
N
α
j
y
j
K
(
x
j
,
x
i
)
+
b
g(x_i)=\sum_{j=1}^N\alpha_jy_jK(x_j,x_i)+b
g(xi)=j=1∑NαjyjK(xj,xi)+b则转(4),否则令
k
=
k
+
1
k=k+1
k=k+1,转(2);
4、取
α
^
=
α
(
k
+
1
)
\hat\alpha=\alpha^{(k+1)}
α^=α(k+1)。
结束
以上便是回顾所写的笔记,如有错误欢迎指正!!!!