SVM支持向量机系列理论(三) 非线性支持向量机与核函数技巧

3.1 核技巧解决非线性SVM

3.1.1 非线性SVM解决思路

SVM支持向量机系列理论(三) 非线性支持向量机与核函数技巧

对于非线性分类问题,显然无法用一个线性分离超平面来把不同的类别的数据点分开,那么可以用以下思路解决这个问题:

  • 首先使用一个变换 z=ϕ(x)非线性特征空间x映射到新的线性特征空间z

  • 在新的z特征空间里使用线性SVM学习分类的方法从训练数据中学习分类模型

基于这个想法,SVM模型可以表示成:

minα    12j=1Nαiαjyiyj(ϕ(xi)ϕ(xj))i=1Nαi

            
s.t.    i=1Nαiyi=0

            αi0,i=1,2,...,N         (1)

但是,这里有一个问题: ϕ(xi)ϕ(xj)计算起来要分两步,先映射x到z空间,然后在z空间(一般是较高维度)作高维度的內积 zizj

为了简化这个运算过程,如果我们找到一个核函数 K(xi,xj), 即K是关于x的函数,其运算在低维空间上进行,然后使得K(xi,xj)=ϕ(xi)ϕ(xj),那么只需要计算一个比较好计算的核函数 K(xi,xj),就可以避免先映射,再在高维空间內积的复杂运算


3.1.2 核技巧下SVM

基于核技巧,非线性SVM模型可以表示成:

minα    12j=1NαiαjyiyjK(xi,xj)i=1Nαi

            
s.t.    i=1Nαiyi=0

            αi0,i=1,2,...,N         (2)

其中,K(xi,xj), 是关于原始低维特征空间 x 的函数,其运算在低维空间上进行。因此,降低了计算的复杂度。

在实际中,对一个非线性可分数据,我们不是先去定义转换函数数ϕ(x),再找出其对应的核函数K,而是直接用一些常用核函数代入上面(2)中的非线性可分支持向量机,然后查看分类效果,再调整核函数的类型,这样就隐式地实现了低维到高维的映射,而不用显式地定义映射函数ϕ(x)和特征空间,这种方法叫核技巧

比如,现在为了解决非线性可分数据问题,现在直接用 K(x,x)=(xTx)2 放进(2),那么就可以解决一些非线性问题了,至于效果怎么样,还需要看实际的数据情况,在做调整。

minα    12j=1Nαiαjyiyj(xTx)2i=1Nαi

            
s.t.    i=1Nαiyi=0

            αi0,i=1,2,...,N         (3)

而且需要理解的是:
- K(x,x)=(xTx)2背后的映射ϕ(x)不是唯一的。ϕ(x)可以是不同维数的映射方式,而即使是同一维度的映射,ϕ(x)的具体形式也可以不同。
(统计学习P117例7.3)

3.2 Mercer核

上面提到,在实际应用中,我们直接将使用某种核函数直接带入到非线性可分支持向量(2)式中去,用来解决非线性分类问题。但是,并不是任何一种关于x的函数都可以成为核函数,只有满足以下条件时才能充当核函数:

  • 核函数K(x,x)是对称函数
  • 对任意属于样本集X中的xi, 核函数K(x,x)对应的Gram矩阵是半正定矩阵
    • Gram矩阵定义为:
      G=[K(xi,xj)]mm,其实就是把不同样本点放到核函数中去计算,因此G的shape和样本数量m相关,为mm。

我们把上面两个条件称Mercer条件。

例题 判断 (1+xTx) 是不是核函数?

可以假设x为一维数据,两个样本 x1=1x2=1,则可以得到Gram矩阵为:

[1+111+11 1+111+(11)]=[0220]

xTGx=[x1x2]
[02 20]
[x1  x2]=2x22x1

并不能得到总是大于等于0,因此不是半正定,不能作为核函数。

3.3 常用的核函数

3.3.1 二次多项式核

K(x,x)=(a+r xTx)2 a0,r>0

其对应的映射函数可以是:

ϕ(x)=(a,arx1,...,arxd,rx12,...,rxd2)

3.3.2 高斯核

形式:

K(x,x)=exp(r ||xx||2)

特点:

可以做无限多维的映射,其保护是large margin,只有一个参数r,当r很大时,很容易就过拟合。

更多查阅:几种核函数的对比