文章目录
1.3 非线性SVM与核技巧
- 非线性问题往往不好求解,所以希望能用解线性分类问题的方法解决这个问题。所采取的方法是进行一个非线性变换,将非线性问题变换为线性问题,通过解变换后的线性问题的方法求解原来的非线性问题。
- 用线性分类方法求解非线性分类问题分为两步:
- 首先使用一个变换将原空间的数据映射到新空间;
- 然后在新空间里用线性分类学习方法从训练数据中学习分类模型。
1.3.1 核函数
- 通过一个非线性变换将输入空间
X
\mathcal X
X(欧氏空间
R
n
\mathrm R^n
Rn的子集或离散集合)对应于一个特征空间(希尔伯特空间
H
\mathcal H
H)。如果存在这样的映射
ϕ ( x ) : X → H \phi(x): \mathcal X \rightarrow \mathcal H ϕ(x):X→H
使得对所有的 x , z ∈ X x,z\in\mathcal X x,z∈X,函数 K K K满足条件
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 ) \phi(x) ϕ(x)为映射函数,式中 K K K为映射函数的的内积。 - 核技巧的想法是,在学习与预测中只定义核函数 K ( x , z ) K(x,z) K(x,z),而不显式地定义映射函数 ϕ \phi ϕ,因为前者直接计算相对更简单。学习是隐式地在特征空间进行的,不需要显式地定义特征空间和映射函数.
- 给定核函数,即使对应同一高维特征空间,也可取不同的映射函数。即核函数和映射函数是一对多的关系。
1.3.2 核技巧在支持向量机中的应用
- 在线性支持向量机的对偶问题中,无论是目标函数还是决策函数(分离超平面)都只涉及输入实例与实例之间的内积
- 对偶问题的目标函数
1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} = \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}K(x_i,x_j)-\sum_{i=1}^{N} \alpha_{i} 21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαi=21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαi - 分类决策函数
f ( x ) = sign ( ∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ ) = sign ( ∑ i = 1 N α i ∗ y i K ( x , x i ) + b ∗ ) f(x)=\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x \cdot x_{i}\right)+b^{*}\right) =\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}K(x,x_i)+b^{*}\right) f(x)=sign(i=1∑Nαi∗yi(x⋅xi)+b∗)=sign(i=1∑Nαi∗yiK(x,xi)+b∗)
- 对偶问题的目标函数
1.3.3 常用核函数
- 多项式核函数(polynomial kernel function)
K ( x , z ) = ( x ⋅ z + 1 ) p K(x,z)=(x\cdot z+1)^p K(x,z)=(x⋅z+1)p
对应的支持向量机是一个p 次多项式分类器。分类决策函数成为
f ( x ) = sign ( ∑ i = 1 N α i ∗ y i ( x i ⋅ x + 1 ) p + b ∗ ) f(x)=\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x_{i} \cdot x+1\right)^{p}+b^{*}\right) f(x)=sign(i=1∑Nαi∗yi(xi⋅x+1)p+b∗) - 高斯核函数(Gaussian kernel function)
K ( x , z ) = exp ( − ∣ ∣ x − z ∣ ∣ 2 2 σ 2 ) K(x,z)=\exp\left(-\frac{||x-z||^2}{2\sigma^2}\right) K(x,z)=exp(−2σ2∣∣x−z∣∣2)
对应的支持向量机是高斯径向基函数(radial basis function)分类器。
分类决策函数成为
f ( x ) = sign ( ∑ i = 1 N α i ∗ y i exp ( − ∥ x − x i ∥ 2 2 σ 2 ) + b ∗ ) f(x)=\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} \exp \left(-\frac{\left\|x-x_{i}\right\|^{2}}{2 \sigma^{2}}\right)+b^{*}\right) f(x)=sign(i=1∑Nαi∗yiexp(−2σ2∥x−xi∥2)+b∗)
1.4 其他问题
1.4.1 是否存在一组参数使SVM训练误差为0:是
分类决策函数为
f
(
x
)
=
sign
(
∑
i
=
1
N
α
i
∗
y
i
K
(
x
,
x
i
)
+
b
∗
)
f(x)=\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} K(x,x_i)+b^{*}\right)
f(x)=sign(i=1∑Nαi∗yiK(x,xi)+b∗)
这里我们先只考虑不取sign之前的预测结果
y
^
(
x
)
=
∑
i
=
1
N
α
i
∗
y
i
K
(
x
,
x
i
)
+
b
∗
\hat y(x)=\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} K(x,x_i)+b^{*}
y^(x)=∑i=1Nαi∗yiK(x,xi)+b∗
使用高斯核的SVM,同时我们对任意 i i i,固定 α i = 1 \alpha_i=1 αi=1以及 b = 0 b=0 b=0,只保留高斯分布的参数 σ \sigma σ,得到
y
^
(
x
)
=
∑
i
=
1
N
α
i
∗
y
i
exp
(
−
∥
x
−
x
i
∥
2
2
σ
2
)
+
b
∗
=
∑
i
=
1
N
y
i
exp
(
−
∥
x
−
x
i
∥
2
2
σ
2
)
\hat y(x)=\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} \exp \left(-\frac{\left\|x-x_{i}\right\|^{2}}{2 \sigma^{2}}\right)+b^{*} =\sum_{i=1}^{N} y_{i} \exp \left(-\frac{\left\|x-x_{i}\right\|^{2}}{2 \sigma^{2}}\right)
y^(x)=i=1∑Nαi∗yiexp(−2σ2∥x−xi∥2)+b∗=i=1∑Nyiexp(−2σ2∥x−xi∥2)
对任意一个训练样本
x
j
x_j
xj代入有
y
^
(
x
j
)
−
y
j
=
∑
i
=
1
N
s
y
i
exp
(
−
∥
x
j
−
x
i
∥
2
2
σ
2
)
−
y
j
=
∑
i
=
1
,
i
≠
j
N
y
i
exp
(
−
∥
x
j
−
x
i
∥
2
2
σ
2
)
\hat y(x_j)-y_j=\sum_{i=1}^{N_{s}} y_{i} \exp \left(-\frac{\left\|x_j-x_{i}\right\|^{2}}{2 \sigma^{2}}\right)-y_j =\sum_{i=1,i\not=j}^{N} y_{i} \exp \left(-\frac{\left\|x_j-x_{i}\right\|^{2}}{2 \sigma^{2}}\right)
y^(xj)−yj=i=1∑Nsyiexp(−2σ2∥xj−xi∥2)−yj=i=1,i=j∑Nyiexp(−2σ2∥xj−xi∥2)
∥
y
^
(
x
j
)
−
y
j
∥
=
∥
∑
i
=
1
,
i
≠
j
N
y
i
exp
(
−
∥
x
j
−
x
i
∥
2
2
σ
2
)
∥
≤
∑
i
=
1
,
i
≠
j
N
∥
y
i
exp
(
−
∥
x
j
−
x
i
∥
2
2
σ
2
)
∥
=
∑
i
=
1
,
i
≠
j
N
exp
(
−
∥
x
j
−
x
i
∥
2
2
σ
2
)
\begin{aligned} \|\hat y(x_j)-y_j\| &=\left\|\sum_{i=1,i\not=j}^{N} y_{i} \exp \left(-\frac{\left\|x_j-x_{i}\right\|^{2}}{2 \sigma^{2}}\right)\right\| \\ &\le\sum_{i=1,i\not=j}^{N} \left\|y_{i} \exp \left(-\frac{\left\|x_j-x_{i}\right\|^{2}}{2 \sigma^{2}}\right)\right\|\\ &=\sum_{i=1,i\not=j}^{N} \exp \left(-\frac{\left\|x_j-x_{i}\right\|^{2}}{2 \sigma^{2}}\right) \end{aligned}
∥y^(xj)−yj∥=∥∥∥∥∥∥i=1,i=j∑Nyiexp(−2σ2∥xj−xi∥2)∥∥∥∥∥∥≤i=1,i=j∑N∥∥∥∥∥yiexp(−2σ2∥xj−xi∥2)∥∥∥∥∥=i=1,i=j∑Nexp(−2σ2∥xj−xi∥2)
若给定训练集中不存在在同一位置的两个点,即我们可以认为
∥
x
i
−
x
j
∥
≥
ϵ
\|x_i-x_j\|\ge \epsilon
∥xi−xj∥≥ϵ,其中
ϵ
\epsilon
ϵ是一个非0的数。
取
ϵ
2
2
σ
2
=
log
N
⇒
\frac{\epsilon^{2}}{2 \sigma^{2}}=\log N \Rightarrow
2σ2ϵ2=logN⇒
∑
i
=
1
,
i
≠
j
N
exp
(
−
∥
x
j
−
x
i
∥
2
2
σ
2
)
≤
∑
i
=
1
,
i
≠
j
N
exp
(
−
ϵ
2
2
σ
2
)
=
∑
i
=
1
,
i
≠
j
N
exp
(
−
log
N
)
=
∑
i
=
1
,
i
≠
j
N
1
N
=
N
−
1
N
<
1
\begin{aligned} \sum_{i=1,i\not=j}^{N} \exp \left(-\frac{\left\|x_j-x_{i}\right\|^{2}}{2 \sigma^{2}}\right) &\le \sum_{i=1,i\not=j}^{N} \exp \left(-\frac{\epsilon^{2}}{2 \sigma^{2}}\right)\\ &=\sum_{i=1,i\not=j}^{N} \exp \left(-\log N\right)\\ &=\sum_{i=1,i\not=j}^{N}\frac{1}{N}=\frac{N-1}{N}<1 \end{aligned}
i=1,i=j∑Nexp(−2σ2∥xj−xi∥2)≤i=1,i=j∑Nexp(−2σ2ϵ2)=i=1,i=j∑Nexp(−logN)=i=1,i=j∑NN1=NN−1<1
所以,对于任意一个样本
x
j
x_j
xj,它的预测结果
y
^
(
x
j
)
\hat y(x_j)
y^(xj)和真实结果
y
j
y_j
yj的距离小于1,即当真实标签
y
j
=
1
y_j=1
yj=1,
y
^
(
x
j
)
>
0
,
sign
(
y
^
(
x
j
)
)
=
1
\hat y(x_j)>0,\operatorname{sign}(\hat y(x_j))=1
y^(xj)>0,sign(y^(xj))=1,即预测正确。同理真实标签
y
j
=
−
1
y_j=-1
yj=−1也预测正确。
综上,我们可以找到这样一组
α
i
,
b
,
σ
2
\alpha_i,b,\sigma^2
αi,b,σ2得到训练误差为0.
但是这组参数不一定是SVM的解。
1.4.2 训练误差为0的SVM分类器一定存在吗:是
SVM的解要求
y
j
⋅
y
^
(
x
j
)
=
y
j
(
w
⋅
x
j
+
b
)
≥
1
y_j\cdot\hat y(x_j)=y_j(w\cdot x_j +b)\ge1
yj⋅y^(xj)=yj(w⋅xj+b)≥1,这比前述的预测正确的条件更强。
我们仍然固定
b
=
0
b=0
b=0
y
j
⋅
y
^
(
x
j
)
=
y
j
∑
i
=
1
N
α
i
∗
y
i
K
(
x
j
,
x
i
)
=
∑
i
=
1
,
i
≠
j
N
α
i
∗
y
j
y
i
K
(
x
j
,
x
i
)
+
α
j
∗
y
j
y
j
K
(
x
j
,
x
j
)
=
∑
i
=
1
,
i
≠
j
N
α
i
∗
y
j
y
i
K
(
x
j
,
x
i
)
+
α
j
\begin{aligned} y_j\cdot\hat y(x_j)&=y_j\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} K(x_j,x_i)\\ &=\sum_{i=1,i\not=j}^{N} \alpha_{i}^{*}y_j y_{i} K(x_j,x_i)+\alpha_{j}^{*}y_j y_{j} K(x_j,x_j)\\ &=\sum_{i=1,i\not=j}^{N} \alpha_{i}^{*}y_j y_{i} K(x_j,x_i)+\alpha_{j} \end{aligned}
yj⋅y^(xj)=yji=1∑Nαi∗yiK(xj,xi)=i=1,i=j∑Nαi∗yjyiK(xj,xi)+αj∗yjyjK(xj,xj)=i=1,i=j∑Nαi∗yjyiK(xj,xi)+αj
取很大的
α
j
\alpha_j
αj,同时很小的
σ
\sigma
σ是的核映射项很小,则很大的、占主导地位的项
α
j
\alpha_j
αj一定大于1,满足SVM的解的约束。
因此,存在SVM最优解分类误差为0.
1.4.3 加入松弛变量的SVM的训练误差可以为0吗:不一定
使用SMO算法训练的加入松弛变量的SVM不一定能得到训练误差为0的模型。
当松弛参数
C
C
C选取较小的值,(正则项)
1
2
∥
w
∥
2
\frac{1}{2}\|w\|^2
21∥w∥2将占据优化目标函数的较大比重。这样,一个带有训练误差、但参数较小的点将成为更优的结果。
一个简单的特例是,当C取0时,w也取0即可达到优化目标,但是显然此时我们的训练误差不一定能达到0。