Kernel、Kernel Method、Kernel Trick

Kernel

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

二分类问题为例

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

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

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

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

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

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

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

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

概括

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

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

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

存在的问题

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

解决之道

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

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

这意味着:

  1. 通过使用一个 kernel function K ( v , m ) K(v,m) K(v,m) ,我们隐式地将 R n R^n Rn 空间中的数据变换到高维空间 R m R^m Rm 中,没有使用额外的内存且对计算时间的影响最小。对计算时间的额外的开销是计算 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 , y x,y x,y 是输入空间中的向量, d d d 为多项式的次数, c c c 为一个常量

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

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

Paper下载地址:https://download.csdn.net/download/u012219371/11297361

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

X+Y=Z

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

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

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

打赏作者

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

抵扣说明:

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

余额充值