SVM-支持向量机学习(6):非线性SVM和核函数

来源:互联网 发布:无限制搜索工具mac 编辑:程序博客网 时间:2024/06/01 18:18

1. foreword

对于线性可分问题和线性问题,都已经有很好的解决方案为了。对于非线性问题,产生了非线性SVM,关键在于核技巧(kernel trick)的引用。

这里写图片描述

如图,对于正负样本无法用直线分开。采用椭圆这样的非线性模型才可正确分开。

对于T,若可用R中的一个超曲面正确分开,则称该问题为非线性的可分问题。如图的椭圆方程为:

w1(x(1))2+w2(x(2))2+b=0

现在我们考虑一个映射 z=ϕ(x)=((x(1))2,(x(2))2)T ,将每个点 x 代入求出对应的 z 。如下图:

这里写图片描述

此时新的空间中,可用线性SVM来完美解决。新空间的直线方程为:

w1(z(1))+w2(z(2))+b=0

可以看到,非线性问题,可完美转化为线性问题解决:

  • 用变换将原空间的data映射到新空间
  • 新空间中用线性分类方法求解

这叫做核技巧。更有趣的是,SVM的对偶形式可非常自然的应用核技巧。

2. 核函数与核技巧

核函数

X 是输入空间,H 是特征空间,若有映射函数 ϕ(x):X>H ,使得对所有 x,zX ,函数 k(x,z) 满足条件 k(x,z)=ϕ(x)ϕ(z) ,则称 k(x,z) 为核函数,ϕ(x) 为映射函数,式中为内积。

核技巧:我们只定义个 k(x,z) 就行了,不用显示定义 ϕ(x)

慢慢解释为什么这叫做核技巧。所谓技巧,巧妙之技也。

通常计算 k(x,z) 比较容易,而通过计算 ϕ(x)ϕ(z) 来计算 k(x,z) 比较难。对于给定的 k(x,z)ϕ(x)的取法不唯一。

举例:xR2,k(x,z)=(xz)2 ,找出H和ϕ(x)

解:

x=(x(1),x(2))z=(z(1),z(2))

H=R3 时,

可取

ϕ(x)=((x(1))2,2x(1)x(2),(x(2))2)T

将每个2维的点,映射为3维的点。
ϕ(x)ϕ(z)=(xz)2=k(x,z)

H=R4 时,

可取

ϕ(x)=((x(1))2,x(1)x(2),x(1)x(2),(x(2))2)T

将每个2维的点,映射为4维的点。
ϕ(x)ϕ(z)=(xz)2=k(x,z)

可以看出,给定核函数 k(x,z)ϕ(x) 的取法有多种。

那问题来了:如何搞定 ϕ(x) 呢?

答案是:我们不用定义 ϕ(x),只需要显式定义 k(x,z) 即可。此时 ϕ(x)被隐式定义,只是我们并不关心它的形式如何。

为什么不用定义呢?

你看在线性SVM中,仅涉及输入实例与实例之间的内积 xixj,那么我们可以直接用核函数 k(x,z)=ϕ(x)ϕ(z) 来代替内积。

本来,处理流程是这样的:

x>ϕ(x)>>ϕ(x)ϕ(z)

现在可以直接这样:

x>ϕ(x)ϕ(z)

为什么可以这样?

都是以为SVM的目标函数的对偶形式是这样的:

12i=1Nj=1Nαiαjyiyj(xixj)i=1Nαi

我们就可以直接:

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

12i=1Nj=1Nαiαjyiyjk(x,z)i=1Nαi

这么完美,有对偶形式的付出,有核函数的付出。

3. 核函数的要求

那既然重点放在核函数上。讨论下核函数。对某个具体的 k(x,z) ,如何验证它是否是核函数?

通常:核函数就是正定核函数(positive definite kernel function)。

正定核函数的充要条件:待续。涉及矩阵的正定矩阵等基本概念。待填。

4. 常用核函数

对某个具体的函数,验证其是否为正定核并不容易,实际中往往用已有核函数。

4.1 线性核函数

k(x,z)=(xz)

这就是SVM的线性表达。即线性SVM是非线性SVM的特殊情况,当非线性SVM的核函数为线性核时,退化为线性SVM。

4.2 多项式核函数

polynomial kernel function。

k(x,z)=(xz+1)p,p1

对应的SVM是一个p次多项式分类器。此时分类决策函数是

sign(i=1Nαiyi(xix+1)p+b)

p = 1时退化为线性核。

4.3 高斯核函数

k(x,z)=exp(||xz||22θ2)

对应的SVM是高斯径向基函数分类器。在此情况下分类决策函数是:

sign(i=1Nαiyiexp(||xz||22θ2)+b)

高斯核也称为RBF核(Radial basis function,径向基函数)。径向基函数的基本概念。

基本经验:对文本数据通常采用线性核,情况不明时可先尝试高斯核。

4.4 拉普拉斯核

k(x,z)=exp(||xz||2θ),θ>0

4.5 sigmoid核函数

k(x,z)=tanh(βxz+θ),β>0,θ<0

tanh为双曲正切曲线。S形曲线,将sigmoid函数中点下移至原点的样子。

对核函数也可以线性组合。如 γ1k1+γ2k2k1k2 也是核函数。对于任意函数 g(x)g(x)k(x,z)g(z) 也是核函数。

5. 非线性SVM的学习算法

将线性SVM扩展为非线性SVM,只需要将对偶形式的内积转化为核函数。

算法:非线性SVM的学习算法

(1)选取适当的核函数 k(x,z) 和适当参数C,构造并求解最优化问题:

minα12i=1Nj=1Nαiαjyiyjk(x,z)i=1Nαis.t.i=1Nαiyi=00αiC

求得最优解 α=(α1,α2,...,αN)T

k(x,z) 为正定核时,凸二次规划问题必存在解。

(2)选择乘子中的0<αi<C,计算b。可取均值。

(3)构造决策函数。