[ML Notes] SVM:核函数
Contents [show]
1. 一个例子
假设 ϕ(x) 是二阶多项式映射,将二维的样本空间映射到三维的特征空间,即
ϕ(x)=ϕ([x1x2])=[x21√2x1x2x22]
计算特征空间中两个向量的内积为
ϕ(a)Tϕ(b)=[a21√2a1a2a22]T[b21√2b1b2b22]=a21b21+2a1a2b1b2+a22b22=(a1b1+a2b2)2=([a1a2]T[b1b2])2=(aTb)2
上式表明,可以通过原始样本空间二维向量的内积 aTb,来得到特征空间三维向量的内积 ϕ(a)Tϕ(b),由此得到二阶多项式的核函数为
K(xi,xj)=(xTixj)2
通过核函数,可以使用原始空间的内积来得到特征空间的内积,降低直接计算特征空间内积的计算量,甚至不需要知道特征空间 ϕ(x) 的具体变换。
2. 核函数
向上面的例子那样,如果已经知道了 ϕ(x) 的具体形式,则可以得到核函数 K(⋅,⋅)。但在实际场景中通常不会知道 ϕ(x) 的具体形式,为了直接寻找合适的核函数,有如下定理。
核函数 令 X 为输入空间,K(⋅,⋅) 是定义在 X×X 上的对称函数,则 K 是核函数当且仅当对于任意数据 D={x1,x2,…,xm},核矩阵(kernel matrix) K 总是半正定的
K=[K(x1,x1)⋯K(x1,xj)⋯K(x1,xm)⋮⋱⋮⋱⋮K(xi,x1)⋯K(xi,xj)⋯K(xi,xm)⋮⋱⋮⋱⋮K(xm,x1)⋯K(xm,xj)⋯K(xm,xm)]
对于一个半正定矩阵,总能找到一个与之对应的映射 ϕ,即任何一个核函数都隐式定义了一个称为“再生核希尔伯特空间”(Reproducing Kernel Hilbert Space,RKHS)的特征空间。选择不同的核函数,就意味着选择了不同的特征空间。
3. 常用核函数
常用的核函数有
- 线性核
- 表达式:K(xi,xj)=xTixj
- 多项式核
- 表达式:K(xi,xj)=(xTixj)d
- 参数:d≥1 为多项式次数
- 高斯核
- 表达式:K(xi,xj)=exp(−||xi−xj||22σ2)
- 参数:σ≥0 为高斯核的带宽
- 拉普拉斯核:
- 表达式:K(xi,xj)=exp(−||xi−xj||σ)
- 参数:σ≥0
- Sigmoid 核
- 表达式:K(xi,xj)=tanh(βxTixj+θ)
- 参数:β>0,θ<0
通过对核函数进行适当的组合,也可以得到核函数,例如 若 K1 和 K2 为核函数,则
- 对于任意正数 γ1、γ2,其线性组合 γ1K1+γ2K2 也是核函数。
- 核函数的直积 K1⊗K2(x,z)=K1(x,z)K2(x,z) 也是核函数。
- 对于任意函数 g(x),K(x,z)=g(x)K1(x,z)g(z) 也是核函数。