几个重要的问题

现在已经知道了kernel function的定义, 以及使用kernel后可以将非线性问题转换成一个线性问题.
在使用kernel 方法时, 如果稍微思考一下的话, 就会遇到以下几个问题:

  • 可以略过特征映射函数\(\Phi\), 只使用kernel function \(\kappa\)吗?
    上一节的例子已经给出了答案, YES.
  • 什么样的函数才能被当做kernel function来使用, 总不能只要可以将两个原始输入映射到一个实数上\(\chi^2 \to R\), 就能用吧?
    当然了, 肯定有要求. \(\kappa\) 一定要是一个正半定函数(finitely positive semi-definite function). 下面会解释
  • 给定一个\(\Phi\)可以找到一个对应的\(\kappa\):\(\kappa(x_i, x_j) = <\Phi(x_i), \Phi(x_j)>\). 那么, 给定一个\(\kappa\), 能否根据\(\kappa\)得到它对应的\(\Phi\)?
    答案也是YES, 有一个专门的定理来证明这个. 理解起来有些难度, 暂时不讲, 现在只需要记住这个结论就行了.
  • kernel function \(\kappa\)与feature mapping function \(\Phi\)都可以将非线性问题转换为线性问题, 为什么要用 \(\kappa\), 而不是直接利用\(\Phi\)?
    这个好说, 因为计算成本. 直接在高维度的feature space上的进行运算代价高昂. 用\(\kappa\)而不用\(\Phi\)可以有效降低运算开销.

理解了上述问题后, 也就理解了kernel methods的核心思想.

正半定函数

正半定矩阵

正半定矩阵是线性代数里的一个概念.
矩阵 \(A_{n \times n}\)是一个正半定矩阵, 当且仅当A满足:
\[\forall x \in R^n, x^T A x \ge 0\]
例如单位矩阵 \(E = \left[ \begin{matrix}1 & 0 \\ 0 &1\end{matrix}\right]\)就是一个正半定矩阵:
对于任意二维向量\(x = (x_1, x_2)\), \(x^T E x = x_1^2 + x_2^2 \ge 0\).
成为正半定矩阵的充要条件是所有特征值不小于0.

kernel matrix

给定一个kernel function \(\kappa\)和\(n\)个训练样本\(\{x_1, x_2, \dots, x_n\}\), 对应的kernel matrix:
\[
K =
\left [
\begin{matrix}
\kappa(x_1, x_1), &\kappa(x_1, x_2), &\dots &\kappa(x_1, x_n) \\
\vdots &\dots &\dots &\vdots \\
\kappa(x_n, x_1), &\kappa(x_n, x_2), &\dots &\kappa(x_n, x_n)
\end{matrix}
\right ]
\]
因为kernel function 是定义在特征空间\(H\)上的点积操作, 所以它应该是对称的:
\[
\kappa (x_i, x_j) = \kappa (x_j, x_i)
\]
这样一来, kernel matrix \(K\) 就是一个对称矩阵了: \(K = K^T\), 并且\[
K =
\left [
\begin{matrix}
\Phi(x_1)^T \Phi(x_1), &\Phi(x_1)^T \Phi(x_2), &\dots &\Phi(x_1)^T \Phi(x_n) \\
\vdots &\dots &\dots &\vdots \\
\Phi(x_n)^T \Phi(x_1), &\Phi(x_n)^T \Phi(x_2), &\dots &\Phi(x_n)^T \Phi(x_n)
\end{matrix}
\right ]
=
\left[
\begin{matrix}
\Phi(x_1)^T \\ \Phi(x_2)^T \\ \vdots \\ \Phi(x_n)^T
\end{matrix}
\right]
\left[
\begin{matrix}
\Phi(x_1) , \Phi(x_2), \dots \Phi(x_n)
\end{matrix}
\right]
= ZZ^T
\]
\(Z\)在上文中出现过, 这里再解释一次: \(Z_{n \times d}\)的第\(i\)行为第\(i\)个训练样本在特征空间\(H\)中的表达: \(\Phi(x_i)^T\)

正半定函数

一个函数要成为一个正半定函数, 需要满足以下几个条件:

  • 对称: \(\kappa (x_i, x_j) = \kappa (x_j, x_i)\)
  • 对于任意有限个训练样本, 它的kernel matrix是正半定的.
    例如\(\kappa(x_i, x_j) = <x_i, x_j>\)它就是一个正半定函数:
    对于任意\(n\)个训练样本, 及\(\forall a \in R^n\),
    \[
    a^TKa = a^TZ Z^Ta = (Z^Ta)^TZa = ||Z^Ta||^2 \ge 0
    \]

Why 正半定函数?

为什么kernel function一定要是正半定函数?
因为只有当kernel function为正半定函数时, 才能保证能找到至少一个对应的feature mapping function \(\Phi\).
是否觉得有点熟悉, 没错, 这就是本文开始提出的问题中的第三个的答案.

常见的kernel function

  • Linear kernel: \(\kappa(x, y) = <x, y>\).
    它是直接定义在原空间的内积, 即对应的feature mapping function是identity, 即\(\Phi(x) = x\)
  • Polynomial kernel: \(\kappa(x, y) = (<x, y> + 1)^r, r\in Z^+\)
  • Guassion kernel: \(\kappa(x, y) = e^{-\frac {||x-y||^2}{2\sigma^2}}\)

Kernel Methods (2) Kernel function的更多相关文章

  1. Kernel Methods (4) Kernel SVM

    (本文假设你已经知道了hard margin SVM的基本知识.) 如果要为Kernel methods找一个最好搭档, 那肯定是SVM. SVM从90年代开始流行, 直至2012年被deep lea ...

  2. Kernel Methods (5) Kernel PCA

    先看一眼PCA与KPCA的可视化区别: 在PCA算法是怎么跟协方差矩阵/特征值/特征向量勾搭起来的?里已经推导过PCA算法的小半部分原理. 本文假设你已经知道了PCA算法的基本原理和步骤. 从原始输入 ...

  3. Kernel Methods (3) Kernel Linear Regression

    Linear Regression 线性回归应该算得上是最简单的一种机器学习算法了吧. 它的问题定义为: 给定训练数据集\(D\), 由\(m\)个二元组\(x_i, y_i\)组成, 其中: \(x ...

  4. PRML读书会第六章 Kernel Methods(核函数,线性回归的Dual Representations,高斯过程 ,Gaussian Processes)

    主讲人 网络上的尼采 (新浪微博:@Nietzsche_复杂网络机器学习) 网络上的尼采(813394698) 9:16:05 今天的主要内容:Kernel的基本知识,高斯过程.边思考边打字,有点慢, ...

  5. Kernel Methods - An conclusion

    Kernel Methods理论的几个要点: 隐藏的特征映射函数\(\Phi\) 核函数\(\kappa\): 条件: 对称, 正半定; 合法的每个kernel function都能找到对应的\(\P ...

  6. 核方法(Kernel Methods)

    核方法(Kernel Methods) 支持向量机(SVM)是机器学习中一个常见的算法,通过最大间隔的思想去求解一个优化问题,得到一个分类超平面.对于非线性问题,则是通过引入核函数,对特征进行映射(通 ...

  7. Kernel methods on spike train space for neuroscience: a tutorial

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 时序点过程:http://www.tensorinfinity.com/paper_154.html Abstract 在过去的十年中,人 ...

  8. Kernel Methods for Deep Learning

    目录 引 主要内容 与深度学习的联系 实验 Cho Y, Saul L K. Kernel Methods for Deep Learning[C]. neural information proce ...

  9. Kernel Methods (6) The Representer Theorem

    The Representer Theorem, 表示定理. 给定: 非空样本空间: \(\chi\) \(m\)个样本:\(\{(x_1, y_1), \dots, (x_m, y_m)\}, x_ ...

随机推荐

  1. 08章 分组查询、子查询、原生SQL

    一.分组查询 使用group by关键字对数据分组,使用having关键字对分组数据设定约束条件,从而完成对数据分组和统计 1.1 聚合函数:常被用来实现数据统计功能 ① count() 统计记录条数 ...

  2. IIS7.5中神秘的ApplicationPoolIdentity

    IIS7.5中(仅win7,win2008 SP2,win2008 R2支持),应用程序池的运行帐号,除了指定为LocalService,LocalSystem,NetWorkService这三种基本 ...

  3. swfdump——从内存中提取swf的工具

    刚刚整理代码时发现以前写的从进程的内存镜像中提取swf文件的工具,现在分享出来,希望能帮到有需要的朋友.这个小工具是命令行使用,没有界面,可以很方便的从指定进程中(比如浏览器,swf播放器等等),按s ...

  4. document对象补充

    五.相关元素操作: var a = document.getElementById("id");                找到a: var b = a.nextSibling ...

  5. 给VIM安装插件。让ubuntu的vim强大起来

    简易安装方法: 打开终端,执行下面的命令就自动安装好了: wget https://raw.github.com/ma6174/vim/master/setup.sh -O ma6174_vim_se ...

  6. java自带线程池和队列详细讲解

    Java线程池使用说明 一简介 线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的.在jdk1.5之后这一情况有了很大的改观.Jdk1.5之后 ...

  7. Linux—C内存管理

    程序(可执行文件)存储结构与进程存储结构: 查看文件基本情况:file fileName.查看文件存储情况:size fileName(代码区text segment.全局初始化/静态数据区data ...

  8. IOS第五课——Gesture and TableView

    这一次我们要学习Gesture.TableView.AlertView三种技术. 一.Gesture 在iOS中,可以使用系统内置的手势识别(GestureRecognizer),也可以创建自己的手势 ...

  9. java与c#的反射性能比较

    java与c#都支持反射,但是从网络上搜索两大阵营对于反射的态度,基本上.net开发人员都建议慎用反射,因为会有性能开销:反到是java阵营里好象在大量肆无忌惮的使用反射.于是写了下面的测试代码: c ...

  10. easyui 中Datagrid 控件在列较多且无数据时,列显示不全的解决方案

    在onLoadSuccess 中加入如下代码就OK啦 $('#dg3').datagrid({ onLoadSuccess:function(data){ if(data.total==0){ var ...