一个简单的分类问题, 如图左半部分所示. 很明显, 我们需要一个决策边界为椭圆形的非线性分类器.

我们可以利用原来的特征构造新的特征: \((x_1, x_2) \to (x_1^2, \sqrt 2 x_1x_2, x_2^2)\), 如此一来, 原来的数据从二维空间被映射到了三维. 这个时候, 原来线性不可分的数据已经线性可分了:
\[\frac {x_1^2}{a^2} + 0*\sqrt 2 x_1x_2 + \frac {x_2^2}{b^2} = 1\]
在二维空间里, 它是一个椭圆;在三维空间里它是一个平面: \(A x + Bz = 1\), 其中\(A = \frac 1{a^2}, B = \frac 1{b^2}\).

为方便描述, 现在我们来给出一些要用到的定义:

  • 原始输入(raw input): 直接输入分类器的特征数据:\(x = (x_1, x_2, \dots, x_n)\). 它们所在的空间被称为输入空间(input space): \(\chi \in R^n\)
  • 特征映射函数\(\Phi\):\(R^n \to R^d\), \(\Phi(x) = z = (z_1, z_2, \dots, z_d)\), 它将原始输入映射到一个\(d\)维空间, 称为特征空间(feature space):\(H \in R^d\). \(d\)一般要大于\(n\)

再看一个例子. 这个特征空间\(H\)是一个二维空间, 数据样本是线性可分的. 现在我们根据一种简单的分类原则来求出一个线性分类器.

分类原则如下:

  • 特征空间中有正(+)负(o)两类样本, 它的中心点分别为\(c_+ = \frac {1}{m_+}\sum_{y_i = 1}z_i\), \(c_- = \frac {1}{m_-}\sum_{y_i = -1}z_i\), \(m_+, m_-\)分别为正负样本的个数.
  • \(c_+, c_-\)两点的中点为\(c = \frac {c_+ + c_-}{2}\)
  • 测试样本\(x\)在特征中空间中的表达为\(z=\Phi(x)\).
  • 若向量\(z - c\)与向量\(c_+ - c_-\)之间的夹角小于\(90^\circ\), 则\(z\)为正类, 否则为负类.

分析:(代表向量\(a,b\)的点积操作)
若\(z - c\)与\(c_+ - c_-\)之间的夹角小于\(90^\circ\): \(<(z - c) , (c_+ - c_-) > > 0\)
若\(z - c\)与\(c_+ - c_-\)之间的夹角大于\(90^\circ\): \(<(z - c) , (c_+ - c_-) > < 0\)
\(\therefore y(x) = sgn(<(z - c) , (c_+ - c_-) >)\), 而
\[<(z - c) , (c_+ - c_-)> = <z , (c_+ - c_-)> - <c , (c_+ - c_-)> \] \[= \frac 1{m_+} \sum_{{y_i = 1}} <z , z_i> - \frac 1{m_-} \sum_{{y_i = -1}} <z , z_i> + b\], 其中
\(b=\frac 12 <(c_+ + c_-)><c_+ + c_-> = \frac 12 (<c_+, c_+> - <c_-, c_->)\)
\[ = \frac 12 (\frac 1{m_+^2}\sum_{{y_i = y_j = 1}}<z_i, z_j> - \frac 1{m_-^2}\sum_{{y_i = y_j = -1}}<z_i, z_j>\]
可以看出, 预测输入\(x\)的标签\(y\), 只需要特征空间上的内积操作. 而特征空间上的内积结果得到的一个关于原输入数据的函数就是kernel function , 核函数 \(\kappa: \chi^2 \to R\).
\[\kappa(x_i, x_j) = <z_i, z_j> = <\Phi(x_i), \Phi(x_j)>\]
代入上式得:
\[y(x)=sign(\frac 1{m_+} \sum_{{y_i = 1}} \kappa(x , x_i) - \frac 1{m_-} \sum_{{y_i = -1}} \kappa(x, x_i)+ \frac 12 (\frac 1{m_+^2}\sum_{{y_i = y_j = 1}}\kappa(x_i, x_j) - \frac 1{m_-^2}\sum_{{y_i = y_j = -1}}\kappa(x_i, x_j))\]
很明显, 知道了kernel function \(\kappa\)后, 特征映射函数\(\Phi\)反而没有必要使用它了. 在实际应用中也是这样: 将一个机器学习算法, 如SVM, PCA, Linear Regression等, 转换为对应的kernel 版本时, 只需要选定一个kernel function \(\kappa\)就行了, 并不需要选择对应的特征映射函数\(\Phi\).

Kernel Methods (1) 从简单的例子开始的更多相关文章

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

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

  2. Kernel Methods - An conclusion

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

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

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

  4. Kernel Methods (2) Kernel function

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

  5. 核方法(Kernel Methods)

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

  6. 简单的例子了解自定义ViewGroup(一)

    在Android中,控件可以分为ViewGroup控件与View控件.自定义View控件,我之前的文章已经说过.这次我们主要说一下自定义ViewGroup控件.ViewGroup是作为父控件可以包含多 ...

  7. CSharpGL(1)从最简单的例子开始使用CSharpGL

    CSharpGL(1)从最简单的例子开始使用CSharpGL 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立的Demo ...

  8. Kernel Methods (4) Kernel SVM

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

  9. 用一个简单的例子来理解python高阶函数

    ============================ 用一个简单的例子来理解python高阶函数 ============================ 最近在用mailx发送邮件, 写法大致如 ...

随机推荐

  1. NOIP2010乌龟棋[DP 多维状态]

    题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起 ...

  2. Discuz论坛搬家手记(X3.2版本)

    Discuz论坛搬家手记(X3.2版本) 客户在虚拟主机上 运行着一个DISCUZ论坛, 主机商限制太多,连MP3都不让放,客户准备是在上面放一个FLASH斗地主游戏的(多人联机版), 加上MYSQL ...

  3. u3d_shader_surface_shader_1

    http://docs.unity3d.com/Manual/SL-SurfaceShaders.html 一:surface shader是啥 Writing shaders that intera ...

  4. Makefile规则③规则语法、依赖、通配符、目录搜寻、目标

    规则语法 通常规则的语法格式如下: TARGETS : PREREQUISITES COMMAND ... 或者: TARGETS : PREREQUISITES ; COMMAND COMMAND ...

  5. vijos1334 NASA的食物计划(二维费用的背包问题)

    背景 NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安 全技术问题一直大伤脑筋,因此在各方压力下终止了航天 飞机的历史,但是此类事情会不会在以后发生,谁也无法 保证,在遇到这类航天问题时,解决方 ...

  6. js模拟高级语言的重载

    js以递归的方式模拟高级语言的重载,我以添加元素节点为例子: //现有的子元素之前插入一个新的子元素 var before = function(elem,newElement,targetEleme ...

  7. http协议(四)http状态码

    一:http状态码 表示客户端http请求的返回结果.标记服务器端的处理是否正常.通知出现的错误等工作 状态码的类别如下: http状态码种类繁多,大概有60多种,实际上经常使用的只有14种,下面为一 ...

  8. matrix-tree

    学一发matrix-tree 原来bzoj1016这题是暴搜+玄学并查集过的-数据弱怪我咯 首先matrix-tree需要度数矩阵D,就是说当i=j时D[i][j]为i的度数,否则为0. 还有邻接矩阵 ...

  9. Linux socket多进程服务器框架一

    重点:socket共用方法中错误码的定义以及错误码的解析 底层辅助代码 //serhelp.h #ifndef _vxser #define _vxser #ifdef __cplusplus ext ...

  10. scala 学习笔记(03) 参数缺省值、不定个数参数、类的属性(Property)、泛型初步

    继续学习,这一篇主要是通过scala来吐槽java的,同样是jvm上的语言,差距咋就这么大呢? 作为一个有.NET开发经验的程序员,当初刚接触java时,相信很多人对java语言有以下不爽(只列了极小 ...