核函数

常用的核函数主要有:多项式核函数、径向基函数、多层感知机、动态核函数等。

多项式核函数

多项式函数


K(x,xi)=[(x,xi)+1]d(1)

可得到 d阶多项式分类器

f(x,α)=sign(∑supportvectoryiαi[(xi⋅x)+1]d−b)

径向基函数

经典的方法,判定规则


f(x)=sign(∑i=1lαiKγ(|x−xi|)−b)(2)

其中, Kγ(|x−xi|)取决于两个向量之间的距离 |x−xi|.对于任意 γ,函数 Kγ(|x−xi|)是一个肺腑的单调函数。当样本数趋于无穷时它趋于0,最通用的判定规则是采用高斯函数

Kγ(|x−xi|)=exp{−|x−xi|σ2}(3)

构造式(2)的判定规则必须估计:

  • 参数 γ
  • 中心点 xi 数目 N
  • 描述中心点向量 xi
  • 参数 αi

与传统的的径向基函数方法的区别:这里每个径向基函数的中心点对应一个支持向量,中心点本身和输出权值都是由SVM训练算法来自动确定的。

多层感知机

采用 sigmoid 函数作为内积,实现了包含一个隐层的多层感知机,隐层节点数目由算法自动确定,满足Mercer条件的 Sigmoid 核函数为


K(xi,xj)=tanh(γxTixj−Θ)(4)

动态核函数

Amari和Wu通过对核函数的黎曼几何分析,提出利用实验数据逐步修正原有核函数,以更好的适应实际问题。设特征映射U=Φ(x),则


dU=∑i∂∂xiΦ(x)dxi


∥dU∥2=∑i,jgij(x)dxidxj


其中

gij(x)=(∂∂xiΦ(x))⋅(∂∂xjΦ(x)),非负定阵 (gij(x))为 Rn上的黎曼张量, ds2=∑ijgij(x)dxidxj为 Rn上的黎曼距离。黎曼空间,体积

dv=g(x)−−−−√dx1...dxn

,并有 g(x)=det(gij(x)), g(x)(放大因子)反映了特征空间中点 Φ(x)附近局部区域被放大的程度。


因为

k(x,z)=(Φ(x)⋅Φ(z)),可证

gij(x)=∂∂xi∂zik(x,z)∣z=x

特别对高斯函数 k(x,z)=exp{|x−z|22σ2},gij(x)=1σ2δij.


为有效地将两类不同的模式区别开来,并希望尽量拉大它们之间的距离,即尽量放大分离曲面附近的局部区域,可用修正核函数的办法到达此目的,设

c(x)是正的可微实函数, k(x,z)是高斯核,则

k˜(x,z)=c(x)k(x,z)c(z)(5)

也是核函数,且

g˜ij(x)=ci(x)cj(x)+c2(x)gij

其中 ci(x)=∂∂xic(x).Amari和Wu设 c(x)有如下形式

c(x)=∑xi∈SVhie∥x−xi∥22τ2(6)

其中, τ>0是参数, hi是权系数。在支持向量 xi附近有,

g˜(x)−−−−√≈hiσnenr22τ21+σ2τ4γ2−−−−−−−−√

其中, τ=|x−xi|是欧式距离,为保证 g˜(x)−−−−√在 xi附近取最大值,同时在其他区域取较小值,计算有

τ≈σn√(7)

那么,新的训练过程由两步组成:

  • 先用某个核k(高斯核)进行训练,然后按照式(5)、(6)、(7)得到修正的核k˜
  • 用k˜进行训练

这种改进的训练方法可明显的降低错误识别率,还可以减少支持下向量的个数,从而提高识别速度。