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

      • 3.1 核技巧解决非线性SVM
        • 3.1.1 非线性SVM解决思路
        • 3.1.2 核技巧下SVM
      • 3.2 Mercer核
      • 3.3 常用的核函数
        • 3.3.1 二次多项式核
        • 3.3.2 高斯核

3.1 核技巧解决非线性SVM

3.1.1 非线性SVM解决思路

image

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

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

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

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

minα    12Nj=1αiαjyiyj(ϕ(xi)ϕ(xj))Ni=1αi m i n α         1 2 ∑ j = 1 N α i α j y i y j ( ϕ ( x i ) ⋅ ϕ ( x j ) ) − ∑ i = 1 N α i

                                    
s.t.    Ni=1αiyi=0 s . t .         ∑ i = 1 N α i y i = 0

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

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

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


3.1.2 核技巧下SVM

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

minα    12Nj=1αiαjyiyjK(xi,xj)Ni=1αi m i n α         1 2 ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i

                                    
s.t.    Ni=1αiyi=0 s . t .         ∑ i = 1 N α i y i = 0

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

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

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

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

minα    12Nj=1αiαjyiyj(xTx)2Ni=1αi m i n α         1 2 ∑ j = 1 N α i α j y i y j ( x T x ′ ) 2 − ∑ i = 1 N α i

                                    
s.t.    Ni=1αiyi=0 s . t .         ∑ i = 1 N α i y i = 0

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

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

3.2 Mercer核

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

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

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

例题 判断 (1+xTx) ( − 1 + x T x ′ ) 是不是核函数?

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

[1+111+11 1+111+(11)]=[0220] [ − 1 + 1 ⋅ 1 − 1 + 1 ⋅ − 1   − 1 + 1 ⋅ − 1 − 1 + ( − 1 ⋅ − 1 ) ] = [ 0 − 2 − 2 0 ]

xTGx=[x1x2] x T G x = [ x 1 x 2 ]
[02 20] [ 0 − 2   − 2 0 ]
[x1  x2]=2x22x1 [ x 1     x 2 ] = − 2 x 2 − 2 x 1

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

3.3 常用的核函数

3.3.1 二次多项式核

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

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

ϕ(x)=(a,arx1,...,arxd,rx21,...,rx2d) ϕ ( x ) = ( a , a ⋅ r x 1 , . . . , a ⋅ r x d , r x 1 2 , . . . , r x d 2 )

3.3.2 高斯核

形式:

K(x,x)=exp(r ||xx||2) K ( x , x ′ ) = e x p ( − r   | | x − x ′ | | 2 )

特点:

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

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

你可能感兴趣的:(SVM支持向量机系列理论)