上一篇中,我们提到了SVM的原始函数与等价于对偶函数后的推导,这次来谈一谈低维度映射高维求超平面的核技巧。
该系列其他文章
SVM系列一:支持向量机SVM(一)原始函数与对偶函数
SVM系列三:支持向量机SVM(三)软间隔与松弛变量的替代损失函数
Kernel核技巧
开局一幅图,内容全靠编
在之前讨论原始函数与对偶函数的时候,我们都是以训练样本是线性可分作为假设,也就是说假设样本空间中一定存在一个超平面,能将所以样本正确分类,但是仔细想想这在现实中几乎不可能,就如左上图的样本分布,这类非线性问题往往不好解。
那么如何实现使用线性方法求解这种非线性问题?答案就是使用kernel核技巧。
kernel的基本思想就是,假设原始的数据是非线性的,我们通过一个映射 ϕ ( ⋅ ) ϕ(⋅) ϕ(⋅) 将其映射到一个高维空间(希尔伯特空间H)中,数据就变得线性可分了,然后在高维空间内用线性分类学习方法从映射了的训练数据中学习分类模型,这时候原始空间的超曲面模型就被映射为特征空间的超平面模型了。
有趣的是,如果原始空间是有限维,特征数有限,那么一定存在一个高维特征空间使得样本可分。这个证明以后会开一章来说。
这时候模型就可以表示为
f ( x ) = ω T ϕ ( x ) + b f(x) = \omega^T \phi(x) + b f(x)=ωTϕ(x)+b
ϕ(x)是x映射后的特征向量,w,b依旧是模型参数。
还记得原始问题和转化为对偶问题的最后结果吗,在原始空间映射后,我们将得到转变后的原始问题和对偶问题
原始问题:
m
i
n
ω
,
b
=
1
2
∥
ω
∥
2
s
.
t
.
y
i
(
ω
T
ϕ
(
x
i
)
+
b
)
⩾
1
,
i
=
1
,
2
,
.
.
.
,
m
.
\begin{aligned} & \underset{\omega , b}{min} = \frac{1}{2}\left \| \omega \right \|^2 \\ & s.t. \ yi(\omega ^T \phi(x_{i}) + b )\geqslant 1 , \quad i=1,2,...,m.\\ \end{aligned}
ω,bmin=21∥ω∥2s.t. yi(ωTϕ(xi)+b)⩾1,i=1,2,...,m.
对偶问题:
m
a
x
α
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
ϕ
(
x
i
)
T
ϕ
(
x
j
)
s
.
t
.
∑
i
=
1
m
α
i
y
i
=
0
,
α
i
⩾
0
,
i
=
1
,
2
,
.
.
.
,
m
.
\begin{aligned} & \underset{\alpha}{max}\sum_{i=1}^{m} \alpha _{i} -\frac{1}{2}\sum_{i=1}^{m} \sum_{j=1}^{m} \alpha _{i}\alpha _{j}y_{i}y_{j}\phi(x_{i})^T \phi(x_{j}) \\ & s.t. \ \sum_{i=1}^{m}\alpha _{i}y_{i} = 0,\\ & \qquad \alpha _{i}\geqslant 0,\quad i=1,2,...,m. \end{aligned}
αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjϕ(xi)Tϕ(xj)s.t. i=1∑mαiyi=0,αi⩾0,i=1,2,...,m.
重要的是,我们知道,特征空间一般是高维的、甚至无穷的,如果我们直接计算在高维特征空间中的 ϕ ( x i ) T ϕ ( x j ) ϕ(x_{i})^T ϕ(x_{j}) ϕ(xi)Tϕ(xj)内积,很大程度上会遇到维度灾难。
接下来kernel派上用场,我们使用 κ ( x i , x j ) \kappa(x_{i},x_{j}) κ(xi,xj)核函数来代替映射后的内积计算,他们的结果是等价的,但是区别在什么地方?
之前是将样本映射到高维空间中,然后再根据内积的公式进行计算;使用核技巧后,直接在原来的原始空间中进行计算,而不需要直接计算高维甚至无穷维特征空间的内积,最重要的是结果是相等的。
探究结果为什么计算结果等价可以看这篇:一个核函数把低维空间映射到高维空间的例子,其中的计算简洁明了,一看就透,告诉了我们为什么在原始空间计算内积结果依旧等价。
而对于给定的核函数
κ
(
x
i
,
x
j
)
\kappa(x_{i},x_{j})
κ(xi,xj),特征空间H和映射函数ϕ的取法并不唯一,可以取到不同的特征空间,即便是同一特征空间也可以取不同的映射。
接下来将对偶问题重写为
m
a
x
α
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
κ
(
x
i
,
x
j
)
s
.
t
.
∑
i
=
1
m
α
i
y
i
=
0
,
α
i
⩾
0
,
i
=
1
,
2
,
.
.
.
,
m
.
\begin{aligned} & \underset{\alpha}{max}\sum_{i=1}^{m} \alpha _{i} -\frac{1}{2}\sum_{i=1}^{m} \sum_{j=1}^{m} \alpha _{i}\alpha _{j}y_{i}y_{j} \kappa(x_{i},x_{j}) \\ & s.t. \ \sum_{i=1}^{m}\alpha _{i}y_{i} = 0,\\ & \qquad \alpha _{i}\geqslant 0,\quad i=1,2,...,m. \end{aligned}
αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjκ(xi,xj)s.t. i=1∑mαiyi=0,αi⩾0,i=1,2,...,m.
和之前一样求解得到模型
f
(
x
)
=
ω
T
ϕ
(
x
)
+
b
=
∑
i
=
1
m
α
i
y
i
ϕ
(
x
i
)
T
ϕ
(
x
)
+
b
=
∑
i
=
1
m
α
i
y
i
κ
(
x
i
,
x
j
)
+
b
.
\begin{aligned} f(x) &= \omega^T\phi(x) +b \\ & = \sum_{i=1}^{m} \alpha_{i} y_{i} \phi(x_{i})^T \phi(x) + b \\ &=\sum_{i=1}^{m} \alpha_{i} y_{i} \kappa(x_{i},x_{j}) +b \ . \end{aligned}
f(x)=ωTϕ(x)+b=i=1∑mαiyiϕ(xi)Tϕ(x)+b=i=1∑mαiyiκ(xi,xj)+b .
简单提一下李航老师对kernel和映射函数关系的说明
Kernel核函数
回顾下kernel的使用流程,假设我们根据数据的形状和分布,假设我们能找到一个能在特征空间将数据线性可分的映射ϕ(⋅) ,假设我们能通过这个 ϕ ( ⋅ ) ϕ(⋅) ϕ(⋅) 得出对应的 κ ( ⋅ , ⋅ ) \kappa(⋅,⋅) κ(⋅,⋅)进行内积计算,我们就能得到一个线性可分的完美模型。
假设终究是假设,构造一个合适的映射本身就不大可能,更别说特地找到最适合的核函数,不同的kernel,甚至不同参数的同类型kernel,都会映射到不同的高维空间。
对于核函数,核函数的本质是将原始输入空间映射到新的特征空间,从而使得原本线性不可分的样本在核空间可分,而且只要一个对称函数所对应的核矩阵半正定,他就能作为核函数使用,并且总能找到一个与之对应的映射 ϕ ϕ ϕ,但是这是隐含的,并不是显式的,并不能直接使用。
SVM 的目标函数本身是并不能用来选择具体是哪个 Kernel 的,这是一个 model selection 的问题。因此我们会选取一些常用的核函数,这方面的一些经验是,文本数据通常采用线性核,对于情况不明的可以使用高斯核试水。
线性核,其实就是原始空间的内积。
多项式核,西瓜书中应该是将常数默认为0甚至是没有,在这种情况下多项式次数d>=1,等于1时就退化成了线性核。《统计学习方法》中多项式核其实是有常数的, κ ( x 1 , x 2 ) = ( ⟨ x 1 , x 2 ⟩ + R ) d \kappa(x_{1},x_{2})=(⟨x_{1},x_{2}⟩+R)^d κ(x1,x2)=(⟨x1,x2⟩+R)d,核所对应的映射空间的维度是 ( m + d , d ) (m+d,d) (m+d,d) ,其中 m 是原始空间的维度。
高斯核,我们之前提过,特征空间一般是高维的、甚至无穷的,高斯核则会将原始空间映射为无穷维。但是通过调整超参 σ σ σ,其具有很高的灵活度。 σ σ σ的大小控制核函数随着数据点之间的距离而衰减的速度, σ σ σ 很小的时候,核矩阵会近似于单位矩阵,但是可能会导致严重的过拟合。(其实我理解也不深刻)
核函数还可以组合使用
下一篇我会记录,如果在原始空间或者特征空间依然线性不可分的情况下,如何采取软间隔的方式,允许一部分瑕疵以达到最佳划分效果。