Notes 6 & 7 : Kernel Methods and SVM (核方法与支持向量机)

Haicang

注:
对于一些专有名词的翻译可能不准确。
对公式的编号与 PRML 中相同。

Kernel Methods

Overview

在 linear parametric models (参数模型)中,我们通过学习 y=wTx+b y = w T x + b 中的 w w ,而在学习完成后,我们丢弃了整个训练集,使用这个式子对新的数据进行预测。

而在另外一类模型比如 KNN (K-临近)中,模型只是记住了整个训练集,在预测时,通过某种准则(metric)(例如:距离该点最近的几个点是什么类别)来进行预测。这类模型通常训练很快,但做预测时相对比较慢。

那么,能否将两者结合起来呢?事实上 linear parametric models (线性参数模型)可以通过某种 dual representation (对偶表示)[1] 转化为依赖训练样本点的模型。这种 dual representation 通过kernel function(核函数)进行实现:

(6.1)k(x,x)=ϕ(x)Tϕ(x)

很明显,kernel 具有对称性: k(x,x)=k(x,x) k ( x , x ′ ) = k ( x ′ , x ) 。可以将 kernel 看作某种形式的内积,因此,kernel 的结果是一个 scalar(标量)。

在 (6.1) 中, ϕ(x) ϕ ( x ) 是 feature space mapping(特征映射),通常映射到一个高维向量。为什么要这么做,因为对于 N 个点,它们在 N 维的空间中总是线性可分的[2]!这样,我们可以将 linear parametric model 改写为下面的形式,这其实就是一个 generalized linear model (广义线性模型):

y=wTϕ(x)+b y = w T ϕ ( x ) + b

由于在高维空间中, ϕ(x) ϕ ( x ) 是线性可分的,因此上面的线性分类就有很好的效果。

那么,现在的问题是, ϕ(x) ϕ ( x ) w w 都是高维的,这样就带来了很大的计算开销,而且 w 也无法训练。这样,前面的 kernel function 就能够有用了。也许 ϕ(x) ϕ ( x ) 维度很高,难以计算,但 kernel 通常容易计算(维度很低),这样,即便 ϕ(x) ϕ ( x ) 是无限维的向量,其 kernel 也是可计算的(这种方法被称作 kernel trick 或者 kernel substitution) 。而通过 dual representation 的推导(PRML 6.1.),式子中的 w w 也消失。跳过中间的求导步骤(那些式子的总是长得非常可怕,但其实际意义却是简单的),最终的得到的式子如下:

(6.9)y(x)=k(x)T(K+λIN)1t

这个式子中, k(x) k ( x ) 是新的测试数据与每个训练数据之间的 kernel ,维度是 RN×1 R N × 1 ,这里的 N N 是训练样本数量。K 是每对训练数据之间的 kernel,维度是 RN×N R N × N t t 是 N 个训练数据的 target(标签),维度是RN×1。不必具体理解每个符号的含义,总之,在这个模型中,我们通过可以通过有限维的 Kernel 计算无限维的 linear parametric model,因此,所有的数据点在这无限维的空间上都是线性可分的。

但问题是,如果 N N 很大,这个计算开销也是很大的,因此实际中也几乎不用这个公式。这个问题的解决方法是,使用之后的 SVM(support vector machine,支持向量机);在分类问题中,我们更关心的是类边界上的点,SVM 就是通过计算一些关键点的 kernel 来进行分类的,而这些关键点(support vector)是非常少的。

Constructing Kernels

可以先找到 ϕ(x) 再通过计算得到 kernel,也可以直接定义 kernel,但是在定义 kernel 之后,我们怎样确定它一定是一个有效的 kernel 呢?两个条件如下:

  • kernel 必须对称

  • K 必须半正定 [3]

这里的 K K 就是 (6.9) 式子中的 K,它有个名字叫做 Gram matrix ,它长成这个样子 Kij=(k(xi,xj)) K i j = ( k ( x i , x j ) ) , 也就是:

k(x1,x1)k(x2,x1)...k(xn,x1)k(x1,x2)k(x2,x2)k(xn,x2).........k(x1,xn)k(k2,xn)k(kn,xn) ( k ( x 1 , x 1 ) k ( x 1 , x 2 ) . . . k ( x 1 , x n ) k ( x 2 , x 1 ) k ( x 2 , x 2 ) . . . k ( k 2 , x n ) . . . k ( x n , x 1 ) k ( x n , x 2 ) . . . k ( k n , x n ) )

两种常见的 kernel 是:

  • 多项式核: k(x,x)=(xTx+b)m k ( x , x ′ ) = ( x T x ′ + b ) m
  • 高斯核: k(x,x)=exp{||xx||22σ2} k ( x , x ′ ) = exp ⁡ { − | | x − x ′ | | 2 2 σ 2 }

如果对高斯核进行 Taylor 展开,发现它是无限维的。PRML 书上给出了构造核函数的一些公式。


Footnotes
[1] “dual” 的本意是“成双的”,对此,我的理解是,在 dual representation 的式子, x x 都是出现在 kernel 里,而 kernel(x,x) 的形式中, x x 总是 dual 的。但我并不理解很多人将其翻译为“对偶”的含义。
[2] 如果这 N 个点是真的在 N 维中的话,像三维空间中的一条直线就不能真的算是三维。
[3] 称矩阵 MRn×n 是半正定的(positive semidefinitive),如果 xRn ∀ x ∈ R n ,都有 xTMx0 x T M x ≥ 0 ;如果 xTMx>0 x T M x > 0 ,则称 M M <script type="math/tex" id="MathJax-Element-60">M</script> 是正定的(positive defivitive)

Reference
[1] Bishop, PRML (Pattern Recognition and Machine Learning).
[2] cs229
[3] Machine learning course at Univ. Wien

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值