核函数
前面的上篇、中篇的内容都是在样本线性可分的基础上进行的。但是现实情况确实,并不是所有的样本集都是线性可分的。对于非线性可分的数据集,我们依旧采用上篇、中篇的办法来进行优化求解,显然是很鸡肋的。例如:
那么有没有办法,能够将线性不可分的样本空间转变为线性可分的样本空间?即可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。幸运的是如果,如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分。将线性不可分(非线性)的样本空间映射到高维空间,我们就可以利用高维特征向量进行线性分类,即将非线性问题转化为线性问题。
不仿,令变换函数为ϕ(x),表示将x映射到更高维的特征空间,即映射后的特征向量,于是待求解的高维分类超平面函数可以表示为:
f(x)=wTϕ(x)+b
其中w,b为待求参数。
根据前两篇的内容,我们要优化的目标为:
w,bmin21∣∣w∣∣2
其中,yi(wTϕ(xi)+b)≥1,i=1,2,⋯,N
进而通过拉格朗日对偶性原理,可得:
amaxi=1∑Nai−21i=1∑Nj=1∑Naiajyiyjϕ(xi)Tϕ(xj)
其中约束条件为:
{∑i=1Naiyi=0ai≥0,i=1,2,⋯,N
由于对于线性不可分样本空间,找到能使得样本集线性可分的高维空间很困难,且通过映射到高维特征空间,在进行内积运算,过程复杂,且不易计算,所以引入了核函数的概念:
k(xi,xj)=⟨ϕ(xi),ϕ(xj)⟩=ϕ(xi)Tϕ(xj)
即xi和xj在特征空间的内积等于它们在原始样本空间中通过函数k(⋅,⋅)计算的结果,于是上面的公式可以演化为:
amaxi=1∑Nai−21i=1∑Nj=1∑Naiajyiyjk(xi,xj)
其中约束条件为:
{∑i=1Naiyi=0ai≥0,i=1,2,⋯,N
求解后,最终的决策函数模型为:
f(x)=wTϕ(x)+b=i=1∑Naiyiϕ(xi)Tϕ(x)+b=i=1∑Naiyik(x,xi)+b
这里的函数k(⋅,⋅)就是核函数,通过核函数,我们就不比直接去计算高维甚至无穷维特征空间中的内积,直接在原始输入空间进行计算,进而降低计算难度。
核函数存在的条件
定理: 令χ为输入空间,k(⋅,⋅)是定义在χ×χ上的对称函数,则k是核函数当且仅当对于任意数据D=x1,x2,⋯,xm,“核矩阵”K总是半正定的:
K=⎣⎢⎢⎢⎢⎡k(x1,x1)⋮k(xi,x1)⋮k(xm,x1)⋯⋱⋯⋱⋯k(x1,xj)⋮k(xi,xj)⋮k(xm,xj)⋯k(xi,xm)⋮⋯k(xi,xm)⋮⋯k(xm,xm)⎦⎥⎥⎥⎥⎤
注:半正定矩阵概念
定理表明,只要一个对称函数所对应的核矩阵半正定,那么它就可以作为核函数使用。事实上,对于一个半正定核矩阵,总能找到一个与之对应的映射ϕ。换言之,任何一个核函数都隐式定义了一个称为“再生核希尔伯特空间”的特征空间(这句话,其实不用管什么意思,有兴趣的可以查阅一下)。
常见的核函数
通过前面的介绍,核函数的选择,对于非线性支持向量机的性能至关重要。但是由于我们很难知道特征映射的形式,所以导致我们无法选择合适的核函数进行目标优化。于是“核函数的选择”称为支持向量机的最大变数,我们常见的核函数有以下几种:
名称 |
表达式 |
参数 |
线性核 |
k(xi,xj)=xiTxj |
|
多项式核 |
k(xi,xj)=(xiTxj)d |
d≥1为多项式的次数 |
高斯核 |
k(xi,xj)=exp(−2σ2∣∣xi−xj∣∣2) |
σ>0为高斯核的带宽(width) |
拉普拉斯核 |
k(xi,xj)=exp(−σ∣∣xi−xj∣∣) |
σ>0 |
Sigmoid核 |
k(xi,xj)=tanh(βxiTxj+θ) |
tanh为双曲正切函数,β>0,θ<0 |
- 若k1和k2为核函数,则对于任意正数γ1,γ2,其线性组合也是核函数。
γ1k1+γ2k2
- 若k1和k2为核函数,则核函数的直积也是核函数。
k1⨂k2(x,z)=k1(x,z),k2(x,z)
- 若k1为核函数,则对于任意函数g(x)
k(x,z)=g(x)k1(x,z)g(z)
也是核函数。
总结:对于非线性的情况,SVM 的处理方法是选择一个核函数 κ(⋅,⋅),通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题。由于核函数的优良品质,这样的非线性扩展在计算量上并没有比原来复杂多少,这一点是非常难得的。当然,这要归功于核方法——除了 SVM 之外,任何将计算表示为数据点的内积的方法,都可以使用核方法进行非线性扩展。
非线性支持向量机的一般步骤
Step 1:
选取适当的核函数k(x,z)和适当的参数C,构造并求解最优化问题
amaxi=1∑Nai−21i=1∑Nj=1∑Naiajyiyjk(xi,xj)
其中:
s.t. i=1∑Naiyi=0
0≤ai≤C , i=1,2,⋯,N
求得最优解:
a∗=(a1∗,a2∗,⋯,aN∗)T
Step 2:
选择a∗的一个正分量ai∗,且ai∗满足0<ai∗<C,求得
b∗=yj−i=1∑Nyiai∗k(xi⋅xj)
Step 3:
构造决策函数:
f(X)=sign(i=1∑Nai∗yik(xi,x)+b)
当k(x,z)是正定核函数时,该问题为凸二次规划问题,解是存在的。
参考文献:
机器学习算法系列(12):SVM(3)—非线性支持向量机
机器学习 周志华著