在说核函数之前,我们先说说映射及其作用.

如果在当前空间对数据类别不好使用线性函数进行划分,则通过一个函数φ( x)将数据点从当前空间映射到另一空间去(映射后的空间叫特征空间,通常是更高维的空间,当然不是绝对)以方便使用线性函数进行分类(最高次不超过1的n元函数称为线性函数)。

如下图中在原来的空间中需要用圆将数据分为两类,但是现在将原2维的数据分别映射到2维、3维的空间中,从而可以在映射后的2维空间中使用一条直线将数据分类,在映射后的3维空间中使用一个平面将数据分为两类。

  1. 那么什么叫做核函数了?

核函数就是特征空间中向量的内积 用 原空间对应向量 表示出来的表达式。以上面转到3维空间去为例,3维特征空间中向量φ(x)=φ(x1,x2),φ(z)=φ(z1,z2)的内积最终可表示为<φ(x),φ(z)>=(<(x1,x2),(z1,z2)>)^2=(<x,z>)^2。(推导过程如图所示,其中向量x=(x1,x2),z=(z1,z2)是原坐标空间的向量)。表达式(<x,z>)^2就称为核函数,表示为K(x,z)=(<x,z>)^2。(向量x=(x1,x2)就表示的起点为坐标轴原点,终点为点x(x1,x2)的向量)。注意此处按这样的方式映射到3维空间后的核函数是(<x,z>)^2,但是不表示只能按这样的映射方式才能得到这个核函数(<x,z>)^2,也就是说同一个核函数可能对应多种映射方式。

核函数的作用

从此处可以看出,只要有了核函数,那么计算特征空间中向量间的内积时是否知道映射函数就不重要了,也就是说我们不用去关心数据到底是通过什么样的映射方式从原空间映射到了特征空间,也不用关心其在特征空间的坐标。

那么知道了特征空间中的内积后,我们又可以得到哪些东西了?

我们知道向量的内积是两个向量φ(x),φ(z)是两个向量的长度和两个向量夹角的余弦的乘积,即||φ(x)||*||φ(z)||*cosΘ。所以这时我们就可以将向量之间的夹角的余弦值表示出来,即:
cosΘ=<φ(x),φ(z)>/(||φ(x)||)(||φ(z)||)。我们知道cosΘ的正负可以表示为φ(z)是偏向φ(x)的正方向一点,还是偏向φ(x)的负方向一点。而两向量的长度的乘积(||φ(x)||)(||φ(z)||)一定是正的。所以cosΘ的正负就可以用<φ(x),φ(z)>来表示。

那么重点来了,当我们知道了cosΘ的正负后,又能对我们的分类起到什么作用了?

如果映射后类别1的中心点为m1`,类别2的中心点为m2`。m1`和m2`的中间点为m`。此时过m`且垂直于(m1`-m2`)向量的平面是不是刚好将这两个类别分开。而对于某一点φ(x)来说,向量(φ(x)-m`)和向量(m1`-m2`)的夹角Θ如果在(0,π/2)之间,即cosΘ在(0,1)之间时,其为类别1;如果两向量夹角在(π/2,π)之间,即cosΘ在(-1,0)之间时,其为类别为2。所以只要知道了向量(m1`-m2`)和向量(φ(x)-m`)的内积<( m1`-m2`),(φ(x)-m`)>就可以知道φ(x)所属于的类别了。如图(你也可以将其想象成一个超空间,此时中间的直线就是超平面了):

但是了,我们前面讲核函数的时候,K(x,z)的形式和当前表达式是有点区别的,那么<(m1`-m2`),(φ(x)-m`)>我们又是否能通过核函数将其用原空间的向量的表达式将其表达出来了?见下图推导:

(这里的推导主要就是为了证明对于分类,我们只需要知道核函数,而不必知道具体的映射函数就行)

第一种推导:

第二种推导:

所以到现在我们是不是就可以通过核函数将数据的类别判断出来了。

kernel核函数是什么、用来干什么 及其详细推导相关推荐

  1. Kernel(核函数)

    标题 1.kernel介绍 2.怎么学kernel 3.代码 1.kernel介绍 机器学习有两个常见问题:1.加权.2.求相似性(距离). 一般来说,相似性高了权值就大了,但是具体怎么求? 可以用 ...

  2. 机器学习里的kernel是指什么?

    先给个定义:核函数K(kernel function)就是指K(x, y) = ,其中x和y是n维的输入值,f(·) 是从n维到m维的映射(通常而言,m>>n).是x和y的内积(inner ...

  3. 机器学习里的 kernel 是指什么?

    机器学习里的 kernel 是指什么? 先给个定义:核函数K(kernel function)就是指K(x, y) = <f(x), f(y)>,其中x和y是n维的输入值,f(·) 是从n ...

  4. Kernel Method的理解

    kernel method是针对低维线性不可分而提出的一种解决方法,在PRML中有一章节的介绍,对其理解,也是迭代更进的过程. 简单来说,kernel method是一种低维和高维特征空间映射的方法, ...

  5. 关于Kernel的思考

    学习播客_KLDA(推导得很通俗,下面的推导就是源于此篇博客) 第一部分:按照自己的理解,模仿抄!学习播客来完成一下KLDA的推导. 第二部分:对于Kernel的思考 KLDA:顾名思义,就是把Ker ...

  6. c语言 cuda核函数,CUDA编程

    这几天收拾准备准备GUP"库达"计算,开学搞搞计算机图形图像处理.暂且不说安装问题.关于CPU,gpu的介绍正在整理..... CUDA编程 1. 1核函数 定义:在GPU进行的函 ...

  7. CUDA kernel函数不执行、不报错的问题

    CUDA 核函数不执行.不报错的问题 最近使用CUDA的时候发现了一个问题,有时候kernel核函数既不执行也不报错.而且程序有时候可以跑,而且结果正确:有时候却不执行,且不报错,最后得到错误的结果. ...

  8. python爬虫可以干什么-python爬虫能够干什么

    Python爬虫是用Python编程语言实现的网络爬虫,主要用于网络数据的抓取和处理,相比于其他语言,Python是一门非常适合开发网络爬虫的编程语言,大量内置包,可以轻松实现网络爬虫功能. Pyth ...

  9. python拿来干嘛-python可以用来干什么?

    python可以用来做Web开发.自动化运维.数据分析.游戏开发.自动化测试.机器学习.爬虫.嵌入式和桌面应用的开发等等. python是一种计算机程序设计语言,又被称为胶水语言,可以用混合编译的方式 ...

最新文章

  1. TensorFlow 2.4来了!
  2. 十年IT运维谈(二)“0”和“100”
  3. 6.1.2.6 盒子
  4. 精品网站 mysql,【网址导航系统】基于PHP+MYSQL开发的开源网站分类目录管理系统...
  5. 12.2 asmca fails with 'ORA-00845'
  6. 关于QT中的音频通信问题
  7. python中0x3f_Python学习笔记(一):基本数据类型
  8. java 字符串随机排列_Java 随机字符串排序
  9. 企业信息化管理软件,如何走出开发困境
  10. 百度2017春招笔试真题编程题集合--买帽子
  11. FAF世链区块链大会|DarkHorse商学院院长何沐庭:看好DeFi的未来
  12. 千兆级LTE的一小步,5G之路的一大步
  13. java的JVM虚拟机相关知识,简单易懂。
  14. 使用luckysheet实现excel导入导出
  15. 特征值和特征向量的理解 浅显易懂 肯定有收获
  16. GAN生成对抗网络合集(七):cycleGAN—循环损失的提出 / starGAN
  17. 已安装oracle客户端odbc驱动,Oracle Instant Client ODBC 安装说明
  18. 测试基础篇-开尔文测试基本原理
  19. 代码随想录训练营day37
  20. 工业卡车(叉车)用充气轮胎行业研究及十四五规划分析报告

热门文章

  1. python-正负数交叉排序
  2. 美国PARKER派克永磁高速伺服电机——GVM电机
  3. 杭州 小学计算机比赛,【2019年第二十届全国中小学电脑制作活动】,乐博乐博学员强势晋级杭州市赛!...
  4. windows10 系统家庭版转专业版小结
  5. VS 【】处有未经处理的异常(在【程序名】.exe 中): 0xC00000FD: Stack overflow (参数: 0x00000000,0x008D2000)。
  6. 马云关于计算机名言,49句关于马云的名言
  7. 苹果电脑可以装windows系统吗_Linux系统安装Windows软件? 通过这个工具可以做到...
  8. 山东双软认证需要什么条件
  9. camel发布多个服务
  10. 阿里云Linux服务器上安装dubbo-admin管理控制台