参考周老师的《机器学习》
在SVM第一章中,我们假设训练样本是线性可分的。当训练样本不能线性可分时,又该怎么办呢?别怕,核函数来啦。
下面这张图片左边是原始训练样本空间,通过将样本映射到一个三维空间后,我们发现可以找到一个超平面将他们正确分开,也就是说线性可分。因此,找到这样的一个高维映射成为关键的一环。
周老师的书里提到:如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本线性可分。
现在,我们先假设我们找到了这样的高维空间,把
x
映射到
ϕ(x)
。那么在高维空间里进行的方法和我们第一章一模一样。
原始问题是:
min12||w||2
s.t.yi(wTϕ(xi)+b)≥1,i=1,2,...,n
对偶问题是:
max∑ni=1αi−12∑ni=1∑nj=1αiαjyiyjϕ(xi)Tϕ(xj)
s.t.αi≥0,i=1,2,...,n
∑ni=1αiyi=0
因此如何计算
ϕ(xi)Tϕ(xj)
成为关键性问题。上面我们提到:如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本线性可分。而这个高维特征空间维数可能很高,甚至是无限维,因此直接计算高维空间里的内积很困难。那我们另辟蹊径—-核函数来了!
核函数:
k(xi,xj)=ϕ(xi)Tϕ(xj)
因此将上面的对偶问题重写为:
max∑ni=1αi−12∑ni=1∑nj=1αiαjyiyjk(xi,xj)
s.t.αi≥0,i=1,2,...,n
∑ni=1αiyi=0
最终模型是:
f(x)=wTϕ(x)+b=∑ni=1αiyiϕ(xi)Tϕ(x)+b=∑ni=1αiyik(xi,x)+b
什么样的函数可以做核函数呢?
Mercer定理:一个对称函数所对应的核矩阵半正定,它就可以作为核函数。
任何一个核函数都隐式地定义了一个称为“再生核希尔伯特空间RKHS”的特征空间。
注意:前面我们提到,如果原始空间是有限维,那么一定存在一个高维特征空间使样本可分。但是我们并不知道这个高维空间是什么,我们又知道一个核函数对应了一个特征空间,因此核函数的选择十分重要,如果核函数选的不合适,意味着无法在高维空间里线性可分。
核函数选择成为SVM的最大变数。
我们列出几种常用的核函数:
- 线性核
k(xi,xj)=xTixj
- 多项式核
k(xi,xj)=(xTixj)d
,其中
d≥1为多项式的次数
- 高斯核(亦称RBF核)
k(xi,xj)=exp(−||xi−xj||22σ2)
,
σ>0为高斯核的带宽
- 拉普拉斯核
k(xi,xj)=exp(−||xi−xj||σ)
,
σ>0
- Sigmoid核
k(xi,xj)=tanh(βxTixj+θ)
,
tanh
为双曲正切函数,
β>0,θ<0
此外,还可以通过函数组合得到:
-
k1
和
k2
为核函数,对于任意正数
γ1,γ2
,其线性组合
γ1k1+γ2k2
也是核函数
-
k1
和
k2
为核函数,
k1(x,z)k2(x,z)
也为核函数
-
k1
为核函数,对于任意函数
g(x)
,
g(x)k1(x,z)g(z)
也为核函数