核函数
常用的核函数主要有:多项式核函数、径向基函数、多层感知机、动态核函数等。
多项式核函数
多项式函数
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˜进行训练
这种改进的训练方法可明显的降低错误识别率,还可以减少支持下向量的个数,从而提高识别速度。