核方法的主要思想是基于这样一个假设:“在低维空间中不能线性分割的点集,通过转化为高维空间中的点集时,很有可能变为线性可分的” ,例如下图

左图的两类数据要想在一维空间上线性分开是不可能的,然而通过F(x)=(x-a)(x-b)把一维空间上的点转化为右图上的二维空间上,就是可以线性分割的了。

然而,如果直接把低维度的数据转化到高维度的空间中,然后再去寻找线性分割平面,会遇到两个大问题,一是由于是在高维度空间中计算,导致curse of dimension问题;二是非常的麻烦,每一个点都必须先转换到高维度空间,然后求取分割平面的参数等等;怎么解决这些问题?答案是通过核戏法(kernel trick)。

(pku, shinningmonster, sewm)

Kernel Trick: 定义一个核函数K(x1,x2) = <\phi(x1), \phi(x2)>, 其中x1和x2是低维度空间中点(在这里可以是标量,也可以是向量),\phi(xi)是低维度空间的点xi转化为高维度空间中的点的表示,< , > 表示向量的内积。

这里核函数K(x1,x2)的表达方式一般都不会显式地写为内积的形式,即我们不关心高维度空间的形式。核函数巧妙地解决了上述的问题,在高维度中向量的内积通过低维度的点的核函数就可以计算了。这种技巧被称为Kernel trick。这里还有一个问题:“为什么我们要关心向量的内积?”,一般地,我们可以把分类(或者回归)的问题分为两类:参数学习的形式和基于实例的学习形式。

参数学习的形式就是通过一堆训练数据,把相应模型的参数给学习出来,然后训练数据就没有用了,对于新的数据,用学习出来的参数即可以得到相应的结论;

而基于实例的学习(又叫基于内存的学习)则是在预测的时候也会使用训练数据,如KNN算法。而基于实例的学习一般就需要判定两个点之间的相似程度,一般就通过向量的内积来表达。从这里可以看出,核方法不是万能的,它一般只针对基于实例的学习。

紧接着,我们还需要解决一个问题,即核函数的存在性判断和如何构造? 既然我们不关心高维度空间的表达形式,那么怎么才能判断一个函数是否是核函数呢?

Mercer 定理:任何半正定的函数都可以作为核函数。所谓半正定的函数f(xi,xj),是指拥有训练数据集合(x1,x2,...xn),我们定义一个矩阵的元素aij = f(xi,xj),这个矩阵式n*n的,如果这个矩阵是半正定的,那么f(xi,xj)就称为半正定的函数。这个mercer定理不是核函数必要条件,只是一个充分条件,即还有不满足mercer定理的函数也可以是核函数。常见的核函数有高斯核,多项式核等等,在这些常见核的基础上,通过核函数的性质(如对称性等)可以进一步构造出新的核函数。SVM是目前核方法应用的经典模型。

1 核方法的作用

核方法kernel methods (KMs)是一类模式识别的算法。
目的:找出并学习一组数据中的相互的关系。用途较广的核方法有支持向量机、高斯过程等。核方法是解决非线性模式分析问题的一种有效途径。
2 核方法的思想
核心思想是:首先,通过某种非线性映射将原始数据嵌入到合适的高维特征空间;然后,利用通用的线性学习器在这个新的空间中分析和处理模式。
3 核方法的优势

1)通用非线性学习器不便反应具体应用问题的特性,而核方法的非线性映射由于面向具体应用问题设计而便于集成问题相关的先验  
      知识。
2)线性学习器相对于非线性学习器有更好的过拟合控制从而可以更好地保证泛化性能。
3)很重要的一点是核方法还是实现高效计算的途径,它能利用核函数将非线性映射隐含在线性学习器中进行同步计算,使得计算复杂度与高维特征空间的维数无关。
4 核方法的提出和详解

1)提出。核方法的主要思想是基于这样一个假设:“在低维空间中不能线性分割的点集,通过转化为高维空间中的点集时,很有可能变为线性可分的” ,例如下图左图的两类数据要想在一维空间上线性分开是不可能的,然而通过F(x)=(x-a)(x-b)把一维空间上的点转化为右图上的二维空间上,就是可以线性分割的了。
2)存在问题。然而,如果直接把低维度的数据转化到高维度的空间中,然后再去寻找线性分割平面,会遇到两个大问题,一是由于是在高维度空间中计算,导致curse of dimension问题;二是非常的麻烦,每一个点都必须先转换到高维度空间,然后求取分割平面的参数等等;怎么解决这些问题?答案是通过核戏法(kernel trick)
3)问题解决。Kernel Trick:定义一个核函数K(x1,x2) = <\phi(x1), \phi(x2)>, 其中x1和x2是低维度空间中点(在这里可以是标量,也可以是向量),\phi(xi)是低维度空间的点xi转化为高维度空间中的点的表示,< , > 表示向量的内积。这里核函数K(x1,x2)的表达方式一般都不会显式地写为内积的形式,即我们不关心高维度空间的形式。
核函数巧妙地解决了上述的问题,在高维度中向量的内积通过低维度的点的核函数就可以计算了。这种技巧被称为Kernel trick。
这里还有一个问题:“为什么我们要关心向量的内积?”,一般地,我们可以把分类(或者回归)的问题分为两类:参数学习的形式和基于实例的学习形式。参数学习的形式就是通过一堆训练数据,把相应模型的参数给学习出来,然后训练数据就没有用了,对于新的数据,用学习出来的参数即可以得到相应的结论;而基于实例的学习(又叫基于内存的学习)则是在预测的时候也会使用训练数据,如KNN算法。而基于实例的学习一般就需要判定两个点之间的相似程度,一般就通过向量的内积来表达。从这里可以看出,核方法不是万能的,它一般只针对基于实例的学习。
4)核函数选取。紧接着,我们还需要解决一个问题,即核函数的存在性判断和如何构造? 既然我们不关心高维度空间的表达形式,那么怎么才能判断一个函数是否是核函数呢?
Mercer 定理:任何半正定的函数都可以作为核函数。所谓半正定的函数f(xi,xj),是指拥有训练数据集合(x1,x2,...xn),我们定义一个矩阵的元素aij = f(xi,xj),这个矩阵式n*n的,如果这个矩阵是半正定的,那么f(xi,xj)就称为半正定的函数。这个mercer定理不是核函数必要条件,只是一个充分条件,即还有不满足mercer定理的函数也可以是核函数。
常见的核函数有高斯核,多项式核等等,在这些常见核的基础上,通过核函数的性质(如对称性等)可以进一步构造出新的核函数。SVM 是目前核方法应用的经典模型。
5 问题待解决
一个矩阵是半正定,正定本质上起了什么作用呢?我将会对这个问题讨论。

核函数方法简介

(1)核函数发展历史
    早在1964年Aizermann等在势函数方法的研究中就将该技术引入到机器学习领域,但是直到1992年Vapnik等利用该技术成功地将线性SVMs推广到非线性SVMs时其潜力才得以充分挖掘。而核函数的理论则更为古老,Mercer定理可以追溯到1909年,再生核希尔伯特空间(ReproducingKernel Hilbert Space, RKHS)研究是在20世纪40年代开始的。

(2)核函数方法原理
    根据模式识别理论,低维空间线性不可分的模式通过非线性映射到高维特征空间则可能实现线性可分,但是如果直接采用这种技术在高维空间进行分类或回归,则存在确定非线性映射函数的形式和参数、特征空间维数等问题,而最大的障碍则是在高维特征空间运算时存在的“维数灾难”。采用核函数技术可以有效地解决这样问题。
    设x,z∈X,X属于R(n)空间,非线性函数Φ实现输入间X到特征空间F的映射,其中F属于R(m),n<<m。根据核函数技术有:

K(x,z) =<Φ(x),Φ(z) >                (1)
    其中:<, >为内积,K(x,z)为核函数。从式(1)可以看出,核函数将m维高维空间的内积运算转化为n维低维输入空间的核函数计算,从而巧妙地解决了在高维特征空间中计算的“维数灾难”等问题,从而为在高维特征空间解决复杂的分类或回归问题奠定了理论基础。

(3)核函数特点

核函数方法的广泛应用,与其特点是分不开的:

1)核函数的引入避免了“维数灾难”,大大减小了计算量。而输入空间的维数n对核函数矩阵无影响,因此,核函数方法可以有效处理高维输入。

2)无需知道非线性变换函数Φ的形式和参数.

3)核函数的形式和参数的变化会隐式地改变从输入空间到特征空间的映射,进而对特征空间的性质产生影响,最终改变各种核函数方法的性能。

4)核函数方法可以和不同的算法相结合,形成多种不同的基于核函数技术的方法,且这两部分的设计可以单独进行,并可以为不同的应用选择不同的核函数和算法。

(4)常见核函数

核函数的确定并不困难,满足Mercer定理的函数都可以作为核函数。常用的核函数可分为两类,即内积核函数和平移不变核函数,如:
 1)高斯核函数K(x,xi) =exp(-||x-xi||2/2σ2
  2)多项式核函数K(x,xi)=(x·xi+1)^d, d=1,2,…,N; 
  3)感知器核函数K(x,xi) =tanh(βxi+b);
  4)样条核函数K(x,xi) = B2n+1(x-xi)。

(5)核函数方法实施步骤

核函数方法是一种模块化(Modularity)方法,它可分为核函数设计和算法设计两个部分,具体为:

1)收集和整理样本,并进行标准化;
    2)选择或构造核函数;
    3)用核函数将样本变换成为核函数矩阵,这一步相当于将输入数据通过非线性函数映射到高维
特征空间;

4)在特征空间对核函数矩阵实施各种线性算法;

5)得到输入空间中的非线性模型。

显然,将样本数据核化成核函数矩阵是核函数方法中的关键。注意到核函数矩阵是l×l的对称矩阵,其中l为样本数。

(6)核函数在模式识别中的应用
    1)新方法。主要用在基于结构风险最小化(Structural Risk Minimization,SRM)的SVM中。

2)传统方法改造。如核主元分析(kernel PCA)、核主元回归(kernel PCR)、核部分最小二乘法(kernel PLS)、核Fisher判别分析(Kernel Fisher Discriminator, KFD)、核独立主元分析(Kernel Independent Component Analysis,KICA)等,这些方法在模式识别等不同领域的应用中都表现了很好的性能。

核方法以及核函数讲解相关推荐

  1. 机器学习与高维信息检索 - Note 6 - 核, 核方法与核函数(Kernels and the Kernel Trick)

    Note 6 核, 核方法与核函数 到目前为止,我们所讨论的机器学习算法的成功都依赖于对输入数据分布的假设.例如,PCA的效果越好,数据围绕线性子空间分布.或者在线性判别分析中,我们假设类的高斯分布, ...

  2. 【优化】核方法(kernel method)超简说明

    本文不做数学推导,仅从最简单的概念上讲解核方法. 问题 有训练样本 x i x_i xi​,其标定 y i y_i yi​, i=1,2-N. 欲求解一个回归函数 f ( z ) f(z) f(z), ...

  3. 关系抽取论文整理,核方法、远程监督的重点都在这里

    来源 | CSDN 博客 作者 | Matt_sh,编辑 | Carol 来源 | CSDN云计算(ID:CSDNcloud) 本文是个人阅读文章的笔记整理,没有涉及到深度学习在关系抽取中的应用. 笔 ...

  4. 一文读懂基本的核方法和径向基函数

    来源:Deephub Imba本文约2000字,建议阅读8分钟 核方法就是通过将数据的输入空间映射到高维特征空间,在高维特征空间中可以训练简单的线性模型,从而得到高效.低偏差.低方差的模型. 偏差-方 ...

  5. matlab求logistics映射 的le_高维映射 与 核方法(Kernel Methods)

    高维映射跟核方法的概念很容易混淆. 高维映射通过将样本从原始空间映射到一个更高维的特征空间,从而解决了低纬下难以解决的问题. 核方法往往跟高维映射配合使用,可以看做是一种技巧,可以通过它来避免这种映射 ...

  6. Kernel Method核方法—应用与理解

    前一篇主要梳理了几个基本概念以及相关关系,这一篇主要针对核方法的应用进行讨论,并理解核方法的思想,了解为什么要引入核方法. 核方法在机器学习中是一种灵活的技术,主要归结为两个方面: 非线性问题转换为高 ...

  7. Kernel Method核方法—基本概念

    这里只是简单叙述了核方法中运用到的几个概念和相互的关系,包括什么是核函数Kernel function.正定函数Positive definite function.再生核希尔伯特空间Reproduc ...

  8. 白板机器学习笔记 P36-P38核方法

    视频地址:https://www.bilibili.com/video/BV1aE411o7qd?p=36 笔记地址:https://www.yuque.com/books/share/f4031f6 ...

  9. paper 6:支持向量机系列三:Kernel —— 介绍核方法,并由此将支持向量机推广到非线性的情况。...

    前面我们介绍了线性情况下的支持向量机,它通过寻找一个线性的超平面来达到对数据进行分类的目的.不过,由于是线性方法,所以对非线性的数据就没有办法处理了.例如图中的两类数据,分别分布为两个圆圈的形状,不论 ...

  10. 核方法(kernel method)的主要思想

    本文对核方法(kernel method)进行简要的介绍. 核方法的主要思想是基于这样一个假设:"在低维空间中不能线性分割的点集,通过转化为高维空间中的点集时,很有可能变为线性可分的&quo ...

最新文章

  1. 【C++】【十一】二叉树递归遍历与非递归遍历的实现及思路
  2. jQuery 效果函数(三)
  3. STM32F103 SPI 主机模式分析
  4. 再谈多态——向上映射及VMT/DMT(转)
  5. SAP UI5 Nav container - how the inner control is added
  6. (80)Vivado综合约束方法
  7. python嵌套类(内部类相互调用)_核心解密Python函数在(类与函数之间)和(类与类之间)互相调用...
  8. 5岁自学python编程-25 岁才开始学习python晚吗?40 岁都不晚!
  9. phpstorm 2017.1.3 最新版激活方法
  10. Android开发之Activity(实现Activity跳转)
  11. 顺序栈的实验报告c语言,顺序栈的基本操作(C语言)
  12. 笔记本计算机故障排除,笔记本电脑液晶显示屏故障诊断与排除
  13. 获取下载Qt安装包,Qt源码全国网址备忘录(不用注册Qt账户,即可下载各版本Qt安装包和Qt源码包)
  14. TTL信号也能高速稳定的传输100m+,是的,你没有听错,量产电路推荐
  15. 微型计算机鸡兔同笼,奥数鸡兔同笼问题
  16. 第一(关于list及dict)
  17. 学校机房网上作业发放、提交系统案例
  18. 23种设计模式都适用于哪些场景?
  19. Oracle 使用序列创建自增字段
  20. 国家气象局天气预报城市及城市代码

热门文章

  1. PN结的形成及PN结工作原理(单向导电)讲解
  2. 基于双二阶广义积分器(DSOGI)的软件锁相环需求的根源及s域仿真
  3. 分享一位大佬开发的驱动级的虚拟键盘鼠标,支持DD键鼠接口
  4. vs2019使用方法
  5. 使用electron开发了一个excel对比工具
  6. 使用Petalinux定制自己的linux系统
  7. Java 中的 IO 和 NIO
  8. STM32单片机最小系统详解
  9. 【Proteus仿真】BME280温湿度气压传感器数据串口输出
  10. 电脑莹石云显示认证失败_添加萤石云方法与常见问题解答