该篇文章摘自知乎,主要为了帮助自己学习

An Intuitive Explanation of Kernels in Support Vector Machine (SVM)

towardsdatascience.com/

文章目录

  • 一个简单的例子:
  • 数学定义:
  • 与SVM的关系:
  • 为什么它也可以被理解为相似性的度量:

简而言之,内核(kernel)是一种捷径,可以帮助我们更快地进行某些计算,否则就会涉及到更高维空间的计算。这听起来相当抽象。在这篇博文中,我将向你们展示一个只需要基本算术的简单例子。

一个简单的例子:

有一个三维向量 x = (x1,x2,x3)。我们将操作 f (x)定义为: f (x) = (x1x1,x1x2,x1x3,x2x1,x2x2,x2x3,x3x1,x3x2,x3x3)。换句话说,它希望x每个对相乘,并生成一个9维向量。

让我们代入数字,使它更直观!假设 x = (1, 2, 3); y = (4, 5, 6)。则:

f(x) = (1, 2, 3, 2, 4, 6, 3, 6, 9)

f(y) = (16, 20, 24, 20, 25, 30, 24, 30, 36)

出于某种原因,我们实际上并不关心 f(x)和 f(y)。我们只想知道点积,<f(x), f(y)> 。点积是指 f(x)的第一维乘以 f(y)的第一维,f(x)的第二维乘以 f(y)的第二维,… f(x)的第九维乘以 f(y)的第九维,我们把它们加起来。所以:

<f(x), f(y)> = 16 + 40 + 72 + 40 + 100+ 180 + 72 + 180 + 324 = 1024

很多代数!主要是因为 f 是从三维空间到九维空间的映射。尽管最终的答案只是一个数字,但我们必须在中间“膨胀” ,在九维空间中完成所有这些乏味的计算,然后才能浓缩成单个数字。


如果我告诉你有捷径呢?

我声称,“核” K(x, y ) = (<x, y>)², 达到了同样的效果。也就是说,我们在 x 和 y,而不是 f(x)和 f(y) 上做点积,然后平方。

让我们来测试一下:

备注: x = (1, 2, 3); y = (4, 5, 6)

<x, y> = x1y1 + x2y2 + x3y3 = 1 x 4 + 2 x 5 + 3 x 6 = 32

K(x, y) = (<x, y>)² = 32² = 1024

瞧,同样的结果。但是这个计算要容易得多,因为我们只在三维空间中进行操作。我们从未涉足九维空间!

数学定义:

现在让我们继续讨论数学形式。

K(x, y) = <f(x), f(y)>

K 表示核函数。这里 x,y 是 n 维输入。f 是从 n 维到 m 维空间的映射。通常 m 比 n 大得多。内核是一个函数,它接受 x 和 y 作为输入,得到与 <f(x),f(y)> 相同的结果,而无需计算 f(x)和 f(y)

内核的另一个美妙之处在于: 它们允许我们在无限维中做事情!f(x)可以是从 n 维到无限维的映射,因此不可能先写出 f(x) 和 f(y) ,然后再做点积。内核给了我们一个绝妙的捷径。其中一个例子就是径向基核函数(RBF)内核。

与SVM的关系:

这与SVM有什么关系?SVM的思想是 y = w phi (x) + b,其中 w 是权重,phi 是特征向量,b 是偏差。如果 y > 0,那么我们把数据分为1类,否则分为0类。我们希望找到一组权重和偏差,使边际最大化。一些教材说,内核使SVM的数据线性可分。我认为一个更精确的说法是,内核不会使数据线性可分。特征向量 phi (x) 使数据线性可分。内核是使计算过程更快、更容易,特别是在特征向量 phi 维度很高的情况下。

为什么它也可以被理解为相似性的度量:

如果我们把以上内核的定义 <f(x), f(y)> 放到 SVM 和特征向量的场景中,它变成了 <phi(x), phi(y)>。点积是指 phi(x)在 phi(y)上的投影,或者通俗地说,x 和 y 在特征空间中有多少重叠。换句话说,他们有多相似。点积是用来度量相似性的; 内核只是用来达到点积效果,而不需要实际上做 f(x)和f(y)之间点积的一种方法。

SVM核函数的简单理解相关推荐

  1. 什么是核函数?如何理解?

    个人理解,核函数的功能就是从低维度的空间向高维度空间转换的函数, 因为在低维空间不可以线性分类的问题到高维度空间就可以线性分类的. 其求法为   低维空间的点映射到高维空间的点后,两个点的内积 就是核 ...

  2. 整理最近学习的算法:SVM支持向量机(简单)、kappa值、ROC曲线和AUC值

    整理最近学习的算法:kappa值.ROC曲线和AUC值.SVM支持向量机(简单) 1.分类精度的检验 (1)kappa系数检验一致性和分类效果 下面给出公式: 其中,p0是每一类正确分类的样本数量之和 ...

  3. 【机器学习系列】之SVM核函数和SMO算法

    作者:張張張張 github地址:https://github.com/zhanghekai [转载请注明出处,谢谢!] [机器学习系列]之SVM硬间隔和软间隔 [机器学习系列]之SVM核函数和SMO ...

  4. android 点击事件消费,Android View事件分发和消费源码简单理解

    Android View事件分发和消费源码简单理解 前言: 开发过程中觉得View事件这块是特别烧脑的,看了好久,才自认为看明白.中间上网查了下singwhatiwanna粉丝的读书笔记,有种茅塞顿开 ...

  5. 【转载】Deep learning:十九(RBM简单理解)

    Deep learning:十九(RBM简单理解) 这篇博客主要用来简单介绍下RBM网络,因为deep learning中的一个重要网络结构DBN就可以由RBM网络叠加而成,所以对RBM的理解有利于我 ...

  6. 学习:双机热备、集群、负载均衡、SQL故障转移群集简单理解(转)

    双机热备.集群.负载均衡.SQL故障转移群集简单理解平常,大家常提到几个技术名词:双机热备.集群.负载均衡.SQL故障转移群集.这里,就我的理解,和大家简单探讨下,有不足或错误之处还请各位指出! 这些 ...

  7. 字符串匹配算法Java_如何简单理解字符串匹配算法?

    这篇文章来说说如何简单理解KMP,BM算法.之前看过一些文章说,KMP算法很难理解. 可我并不觉得. 我反而觉得它容易理解.平时我们写java代码的时候, 判断一个字符串是否存在包含另一个字符串都是直 ...

  8. python yield的简单理解

    2019独角兽企业重金招聘Python工程师标准>>> yield是个生成器,它可以使一个方法变成可迭代的方法,每次迭代返回yield后面的值 简单理解: >>>d ...

  9. linun——SElinux的简单理解

    SElinux简单理解 一.什么是SElinux? SELinux 全称 Security Enhanced Linux (安全强化 Linux),是 MAC (Mandatory Access Co ...

最新文章

  1. Azure 中快速搭建 FTPS 服务
  2. Android Studio 提示Error running app: No Android facet found for app
  3. STM32F4 定时器TIM(1)定时器控制输出【使用库函数】
  4. 前端学习 -- 内联框架iframe
  5. Linux 中识别 USB 设备名字的 4 种方法
  6. Ubuntu打印机控制命令笔记
  7. 局域网ip冲突检测工具_软考网络工程师之局域网与城域网(无线局域网,网桥,VLAN)...
  8. python输出重定向_使用Python子进程重定向标准输出到标准输入...
  9. perl语言入门:子程序
  10. Simulink仿真入门到精通(二) Simulink模块
  11. 为什么大学老师只教c语言,开挂的相声演员:做大学老师,主讲计算机C语言,课堂爆笑不断!...
  12. Python将PDF转成图片—PyMuPDF和pdf2image
  13. Python 计算任意两向量之间的夹角
  14. 浅谈Vue 自定义事件——原理及用法
  15. SQL server in 用法
  16. java课程设计纸牌游戏_java练习项目之纸牌游戏实例源码
  17. python3.8.1中文开发文档
  18. 全图文详细记录安装 免费SSL证书
  19. 搭建自己的NAS存储之 - 选择一款属于自己NAS 系统
  20. 计算机四级考证难不难考

热门文章

  1. “内存或磁盘空间不足 Microsoft Excel无法再次打开...”的解决方法
  2. 淡雅灰低三角形背景几何风年终总结商务通用ppt模板
  3. vue脚手架运行项目报错“serve with message ‘spawn vue-cli-service ENO’解决办法
  4. IDEA中文件名不同颜色的意思
  5. 【1】python二级——操作题
  6. 前端项目实现——奥运五环
  7. 几个朋友合伙创业,如何分配股权?
  8. C#实现三线表格格式打印
  9. LabVIEW数据采集:配套视频教程第5集(2.2.1节—配置前面板实操训练)
  10. 【世界读书日】2023年通信好书推荐