Kernel、Kernel Method、Kernel Trick

Kernel

Kernel Function 是一个二元函数 K(v,w)K(v,w)K(v,w),即 K:Rn×Rn→RK:R^n × R^n \rightarrow RKRn×RnR 。这个二元函数用来计算向量 v,wv,wvw 之间的 dot product(点积) 。其中 v,wv,wvw 分别为 nnn 维空间中的一个向量。

二分类问题为例

假设有一个二分类问题,每个样本有两个特征,将所有样本 plot 在二维平面中,如下图所示:

在这里插入图片描述
由上图可以看出,样本是线性可分的,使用 Linear SVM 可以很容易找到一个 hyperplane(二维平面中是一条直线) 将样本分开,如下图所示:

在这里插入图片描述
如果 DataSet 不是 线性可分的,如下图所示:

在这里插入图片描述
则无法在二维平面中找到一条直线,将 DataSet 分开。显然这里我们处理的是非线性可分的数据集。我们能否继续使用 Linear SVM 来处理这个问题。答案是肯定的,低维空间中线性不可分映射到高维空间后,就可能变得线性可分,如下图所示。

在这里插入图片描述
原来二维空间中的线性不可分,映射到三维空间中后,就变得线性可分了。

此例中我们要找一个变换 T:R2→R3T:R^2 \rightarrow R^3TR2R3 将二维空间中所有样本变换到三维空间中。将所有的 training set XXX 通过 TTT 变换到 X′X^{\prime}X ,在 X′X^{\prime}X 通过 linear SVM 训练一个分类器 fsvmf_{svm}fsvm ,在测试时,新的样本 xxx 首先通过 TTT 变换到 x′x^{\prime}x ,输出的类别由 fsvm(x′)f_{svm}(x^{\prime})fsvm(x) 决定。

现在的步骤和训练一个正常的 Linear SVM 相同,只是多了一个变换 TTT

在这里插入图片描述
如上图所示,三维空间中的超平面在二维平面上的投影为非线性的。

概括

数据集 DDDRnR^nRn 空间中线性不可分,当投影到高维空间 Rm(m>n)R^m(m>n)Rm(m>n) 中,可能变得线性可分。 如果把 RnR^nRn 空间的 数据集 DDD 通过一个变换 TTT ,变换到 RmR^mRm 空间上的 D′D^{\prime}D ,这样 D′D^{\prime}D 就变得线性可分了。通过 linear SVM 就可以在 D′D^{\prime}D 上找一个决策边界将 D′D^{\prime}D 分开。新的样本 xxx 也要先通过 TTT 变换到 x′x^{\prime}x ,再通过决策边界分类。

这意味着,我们可以学习一个 nonlinear SVM ,但依然使用原来 linear SVM 泛化后的表达式。

上面的思想就是机器学习中 “kernel methods” 的动机。

存在的问题

RnR^nRn 空间变换到 Rm(m>n)R^m(m>n)Rm(m>n) 空间时,如果 mmm 相对 nnn 来说增长很快,则将数据集 DDDRnR^nRn 空间变换到 RmR^mRm 空间会带来严重的计算和内存问题。例如从二维空间,变换到五维空间时,维度增加了三维。每个样本需要更多的内存来存储,且计算量增大了。

解决之道

nonlinear SVM 似乎没必要真的在高维空间中进行 training 和 testing. 我们只需要在低维空间中计算向量的点乘即可。证明可以参见文末链接的 paper.

为什么这很重要?这证明了在 RnR^nRn 空间中存在一个函数 KKK,将 RnR^nRn 空间中的两个向量 v,mv,mv,m 变换到 RmR^mRm 空间中进行点积运算的结果,和直接将 v,mv,mv,m 向量通过 K(v,m)K(v,m)K(v,m) 计算的结果是一样的。所以没必要通过变换之后再计算。这个函数 KKK 就被称为 kernel function

这意味着:

  1. 通过使用一个 kernel function K(v,m)K(v,m)K(v,m) ,我们隐式地将 RnR^nRn 空间中的数据变换到高维空间 RmR^mRm 中,没有使用额外的内存且对计算时间的影响最小。对计算时间的额外的开销是计算 K(v,m)K(v,m)K(v,m) ,这依赖于 kernel function K,并且这个可以被 mininal.
  2. 通过使用 1 我们可以有效地学习一个 nonlinear decision boundaries for SVM ,并且只是简单地将所有 linear SVM 中的 dot product 替换为 K(v,m)K(v,m)K(v,m).

使用 kernel function 去完成 1、2 称为 kernel trick

常见的核函数

Polynomial Kernel
K(x,y)=(x⊤y+c)d K(x, y)=\left(x^{\top} y+c\right)^{d} K(x,y)=(xy+c)d
x,yx,yx,y 是输入空间中的向量,ddd 为多项式的次数,ccc 为一个常量

Radial Basis Function (RBF) Kernel
K(x,x′)=exp⁡(−∥x−x′∥222σ2) K\left(\mathbf{x}, \mathbf{x}^{\prime}\right)=\exp \left(-\frac{\left\|\mathbf{x}-\mathbf{x}^{\prime}\right\|_{2}^{2}}{2 \sigma^{2}}\right) K(x,x)=exp(2σ2xx22)
x,x′x,x^{\prime}x,x 为输入空间中的向量,∥x−x′∥22\left\|\mathbf{x}-\mathbf{x}^{\prime}\right\|_{2}^{2}xx22 为两个特征向量之间的平方欧几里得距离。σ\sigmaσ 是一个自由参数。

Sigmoid Kernel
K(x,y)=11+e−(xTy+c) K(x,y)=\frac{1}{1+e^{-(x^Ty+c)}} K(x,y)=1+e(xTy+c)1
x,yx,yx,y 为输入空间中的向量,ccc 为常量

Paper下载地址:https://download.youkuaiyun.com/download/u012219371/11297361

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X+Y=Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值