核函数是我们处理数据时使用的一种方式。对于给的一些特征数据我们通过核函数的方式来对其进行处理。我们经常在SVM中提到核函数,就是因为通过核函数来将原本的数据进行各种方式的组合计算,从而从低维数据到高维数据。比如原来数据下样本点1是x向量,样本点2是y向量,我们把它变成e的x+y次方,就到高维中去了。

把数据映射到高维在我们直观上理解起来是很难的,其实也并不用深刻理解,因为做这些的目的只是为了让机器去理解,帮助机器通过自己的模型去更好的挖掘一些语义信息。所以对于我们人来说,“样本点1是x向量,样本点2是y向量”就完全足够了;只是为了照顾到机器和模型,我们需要帮它处理成高维,以便机器更好地使用。

核函数一般表示成,意思就是对向量xi和xj进行一些变换操作。

梳理几种常见的核函数:

线性核函数

其实就是对两个向量做内积。其中有个转置操作,举个例子你就明白了:

所以看起来线性核函数不对数据做任何变化,就拿过来乘起来就好了。虽然没有把数据怎么映射到高维,但在很多情况下“最简单的往往就是最好的”,就像奥卡姆剃刀原理所说:如无必要,勿增实体”,即“简单有效原理”。

线性核函数操作起来十分简单,计算也很方便,尤其是在样本数据量巨大的情况下,想用别的核函数也不好计算,直接用线性核就可以起到不错的效果了。

多项式核函数 (Polynomial kernel function)

乍一看,多项式核函数好像就是在线性核函数基础上增加了ζ,γ和Q这几个参数。这些参数是可以由我们自己指定的,比如我们把它写成二次的(Q=2),也就变成了常见的二次形式:

多项式核函数根据公式也很好理解,其中γ就是用来对内积进行缩放的,而ζ就是一个常数项,来进行加减上的调整,Q则是控制次数的。

我们另ζ为0,γ为1,Q为1,就会得到线性核函数即

说到底这种变换是在xi和xj的内积的基础上进行额外的变换。因为核函数的其中一个妙处就在于:我们发现“先求次项到高维再内积”等于“先低维空间内积再求次项”。既然有这么一个现象,肯定是先在低维做容易些。核函数也是这种计算思路的体现,减少了计算量。

高斯核函数

提到高斯我们知道有高斯分布(正态分布),后面在其他文章对于各种分布应该会有总结。

一维高斯分布公式是这样:

图像是这样:

二维的高斯函数则是这样:

我们对高斯分布的图形样子有大概了解了,接下来引出高斯核函数

看起来和高斯分布的格式差不多,有一个差,有平方,有除以σ的平方等。

高斯核这样做的意义是什么呢?我们来分析这个公式:

1.首先抛开σ

我们对高斯核函数进行展开,首先我们忽略掉分母2σ的平方。

可以得到:

所以:

上面式子本来是只有一个累加符的,不过为了得到对xi和xj的相同格式,我们在后半段再添一个了累加符号,使其彻底分开,原始值并不会改变。

所以:

可以发现,我们通过高斯核函数这么一个看似简单的公式,却对于传入的xi和xj都可以扩展到无穷次的维度上,相比于线性核与高斯核,高斯核这个特征维度就对比出来了——纬度越高,模型越复杂,功能就会越强(如果不考虑过拟合的话~)。

2.单独分析σ

我们知道高斯核函数长上面这样,将它可视化出来,形状和前面的高斯分布也差不太多。

观察高斯核函数公式,发现里面有对样本向量求差的操作:xi-xj。假设xi和xj的距离不变,则xi-xj也不变吧?我们把这两个样本摆在底部平面上,向上投影,我们发现假如σ越小,曲面越陡,则投影出来的高度差也就越大;而假如σ越大,则曲面趋于平缓,则得到的K(xi,xj)也就越小。

高斯核函数基本上是最常用的核函数了,对σ参数的调整也是非常常见的了,具体它是怎么影响最终结果的呢,我们举个例子从头到尾梳理一下高斯函数的应用场景:

现在我有N个样本点,每个样本点自己有一个特征向量,假设向量是5维的吧,比如第一个样本x1的特征为(2,3,1,2,4)。我们现在需要把这N个样本点进行分类,首先就通过高斯核函数来对这样的样本数据进行处理。

如何处理呢?我们拿出N个样本点中的第一个样本点x1,我们拿它与所有的样本点进行高斯核函数的计算,x1与每一个样本点都可以得到一个结果K(x1,xn),一共有N个样本点,我们可以得到N个计算结果。那么此时对于样本点x1的特征,就由原来5维的(2,3,1,2,4)变成了N维的(K(x1,x1),K(x1,x2),K(x1,x3)……K(x1,xN))。同理,对于样本点x2和其他所有样本点都可以得到新的特征向量。不管原来每一个样本点的特征是多少维,经过这样的高斯核函数处理,每个样本都变成了“总样本数量”维

这样一来,我们就扩充了数据的维度和多样性了。而参数σ的作用如何体现呢?我们采用不同的σ大小对数据处理后,投入模型训练,最终得到的模型分类效果如下:

可以发现σ越小,对数据划分越细致,也越容易倒置过拟合。这是为什么呢?我自己的理解是这样的:我们σ越小,对于每一对样本点之间得出的高斯核函数值就越大,也就是把各个样本之间的距离算的越远了,那么模型就越偏向于把这些不同的样本点归位不同的类;如果σ很大,则算出来样本点之间的距离就很近,模型会偏向于把这些归位同一类。

这篇我主要是梳理了三种常见的核函数,尤其是对高斯核函数的原理、用法与参数调整等方面进行了描述。

核函数 高斯核函数,线性核函数,多项式核函数相关推荐

  1. 机器学习之支持向量机实例,线性核函数 多项式核函数 RBF高斯核函数 sigmoid核函数

    文章目录 支持向量机实例 1.线性核函数 2.多项式核函数 3.RBF高斯核函数 4.sigmoid核函数 代码: 结果: 支持向量机实例 1.线性核函数 def test_SVC_linear(): ...

  2. R语言使用caret包的train函数构建多项式核SVM模型(多项式核函数)模型构建分类模型、trainControl函数设置交叉验证参数、自定义调优评估指标

    R语言使用caret包的train函数构建多项式核SVM模型(多项式核函数)模型构建分类模型.trainControl函数设置交叉验证参数.自定义调优评估指标.tuneLength参数和tuneGri ...

  3. 核函数在SVM的应用,核函数到底是什么

    第一次接触到核函数还是在大一学线代的时候,现在在一些应用领域经常看到它的身影,在网络上学习一番后,结合高人的叙述和自己的理解写下这个学习记录. 著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  4. 机器学习有很多关于核函数的说法,什么是核函数?核函数的作用是什么?

    转自知乎 详细的公式什么的,网络上搜索kernel function, kernel methods 有很多,我就不仔细说了,简单地说说背后的intuition. intuition也很简单,比如我们 ...

  5. python svm核函数_机器学习算法实践-SVM核函数和软间隔

    前言 上文中简单总结了对于线性可分数据的SVM的算法原理,本文对于非线性可分以及有噪声存在的时候我们需要对基本SVM算法的改进进行下总结其中包括: 核函数在SVM算法中的使用 引入松弛变量和惩罚函数的 ...

  6. E. DS线性表—多项式相加

    [id:24][20分]E. DS线性表-多项式相加 题目描述 对于一元多项式 p(x)=p0+p1x+p2x2+ - +pnxn ,每个项都有系数和指数两部分,例如p2x2的系数为p2,指数为2. ...

  7. 线性代数(矩阵、高斯、线性基……)

    矩阵 矩阵加法: 相同位置相加. 矩阵乘法: 满足分配率.结合律,不满足交换律(矩阵与逆矩阵之间除外) . 矩阵转置: 记矩阵为 \(A\) ,则 \(A\) 的转置记为 \(A^T\) . 性质: ...

  8. DS线性表—多项式相加

    题目描述 对于一元多项式p(x)=p0+p1x+p2x2+-+pnxn,每个项都有系数和指数两部分,例如p2x2的系数为p2,指数为2. 编程实现两个多项式的相加. 例如5+x+2x2+3x3,-5- ...

  9. 核函数(多项式,高斯核)以及svm解决回归问题

    文章目录 一.SVM最优化问题转换 1.多项式核函数 二.高斯核函数 1.引入库 1.多项式特征 2.高斯核函数升维举例 3.高斯核函数超参数gamma 三.svm解决回归问题 总结 一.SVM最优化 ...

最新文章

  1. 网络编程学习笔记(recvfrom和sendto函数)
  2. “猜你喜欢” — 浅谈内容分发中的推荐系统
  3. LeetCode 1033. 移动石子直到连续
  4. 在碎片化阅读充斥眼球的时代,要高效读论文
  5. [ImportNew]Java线程面试题
  6. 获取前一天日期(应对跨月取日期问题)
  7. 53. (待补) (使用单链表)实现简单的管理系统 MVC 将链表作为内存数据模型,将文件作为数据库,将终端作为交互界面。读文件生成 链表,修改链表写入文件。...
  8. 睡觉的时候,程序能不能自动查 bug?
  9. 数据结构笔记(参考王道考研系列)
  10. PostgreSQL客户端验证
  11. 如何区分冲突域和广播域?
  12. movs 数据传送指令_深入理解计算机系统(3.3)---数据传送(或者说复制)指令详解...
  13. 系统重启后接口代理服务器ip地址会变,重启路由器可以IP会变吗
  14. kaggle入门--泰坦尼克号之灾(手把手教你)
  15. WinForm下多层架构的实现
  16. 玩客云安装mysql_玩客云的使用经验总结
  17. 护肤品html作业,聚美优品美容产品热点.html
  18. DELL安装不了mysql_dell电脑win10怎么安装mysql
  19. 股指期货手续费每日增加吗(手续费计算公式)
  20. php while 无限循环,php - 在PAMI中发起呼叫-无限while循环 - 堆栈内存溢出

热门文章

  1. Python-灰度图像增强(持续更新)
  2. 【软件工程】BDD由内而外采用策略
  3. matlab选修结课作业,matlab在高等数学中的应用结课作业
  4. 肖博高中数学一对一补习高考数学强化直线与圆 题型总结|附带详细解析
  5. 据说90%的linux 爱好者都没有注意的点---Centos 系统基础优化它来了
  6. 2020上半年区块链矿业研究报告 | TokenInsight
  7. windows下值得使用的软件整理——效率类
  8. 大连东软集团实践报告
  9. 使用Mendeley和CvtCNKI进行中英文参考文献引用管理(含硕博论文)
  10. windows下安装使用docker(以网易蜂巢为仓库)