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

article/2025/8/18 5:55:41

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

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以下为转帖(转至:https://www.jianshu.com/p/e07932472257?utm_campaign)

对于线性分类问题,线性分类向量机是一种非常有效的方法。但是,当分类变得不线性,线性分类向量机就会失效,我们就需要新的方法去解决,那就是非线性向量机,而在非线性向量机中,一种非常重要的方法就必须要知道,那就是核函数。

核函数运用广泛,不仅应用于支持向量机,而且在很多统计学问题上都扮演重要作用。

对于我本人来说,因为之前也涉猎过核函数,因此,在理解上可能相对快一点。
网上有很多对核函数的介绍,知乎上的介绍我印象很深,有兴趣的可以搜一下。
核函数的入门理解还是要从,将二维非线性问题转化为三维线性问题。

 

示例1.png

 

原本线性不可分的问题瞬间变成了线性分割面可以分类的问题。很神奇!
具体实现的手段就是增加维度。

举个简单例子

示例2.png

 

上图中,我们发现x1,x2是非线性分类,于是我们通过变化,z=phi(x),我们发现,z1,z2是线性分类问题。

 

![](http://latex.codecogs.com/svg.latex?w^T*z+b=0)
![](http://latex.codecogs.com/svg.latex?z=\phi(x))

 

 

这里的phi(x)便是映射函数。

讲到这里,会有一个基础想法就是,如果我们求出映射,那么我们就可以轻而易举将非线性分类问题转化为线性分类问题。

引入核函数

  • 核函数的定义

定义1.png

 

其实白话理解就是,假设存在映射函数phi(x),对初始空间所有的x,z,存在

 

![](http://latex.codecogs.com/svg.latex?K(x,z)=\phi(x)\cdot\,\phi(z))

 

那么,K(x,z)便是核函数。

  • 为什么要引入核函数

示例2.png

 

从上例可以看出,核函数一定,映射函数是不唯一的,而且当维度是无线大的时候,我们几乎无法求得映射函数,那么核函数的作用就在于此,核函数避免了映射函数的求解,叫做核技巧。

  • 核函数的特征

核函数是半正定矩阵。

  • 常用的核函数

1. 多项式核函数

 

![](http://latex.codecogs.com/svg.latex?K(x,z)=(x\cdot\,z+1)^p)

 

分类决策函数为

 

![](http://latex.codecogs.com/svg.latex?f(x)=sign(\sum_{i=1}^N\alpha_iy_i(x_i\cdot\,x+1)^p+b)

2. 高斯核函数

 

![](http://latex.codecogs.com/svg.latex?K(x,z)=exp(-\frac{||x-z||^2}{2\sigma^2}))

 

分类决策函数为:

 

![](http://latex.codecogs.com/svg.latex?f(x)=sign(\sum_{i=1}^N\alpha_iy_iexp(-\frac{||x-z||^2}{2\sigma^2})+b))

3. 字符串核函数

...太复杂,没看懂,有时间再看。

4. 线性核

我们的线性问题也可以用线性核来解决。
Linear kernel

 

![](http://latex.codecogs.com/svg.latex?K(xi,xj)=xi\cdot\,xj)

 

因此,我们得到的对偶问题就可以切换,

 

![](http://latex.codecogs.com/svg.latex?\min_{w,b}\iota=-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot\,x_j)+\sum_{i-1}^N\alpha_i)

 

切换为

 

![](http://latex.codecogs.com/svg.latex?\min_{w,b}\iota=-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)+\sum_{i-1}^N\alpha_i)

注:书中的SMO算法也是用线性核的凸二次规划对偶方程求解。

截至到此,SVM算法就算告一段落,关于SMO算法,接下来还需要手动撸代码,需要更深的理解,最近两周的努力没有白费,让我对支持向量机有了全新的认识,希望未来能有机会实践于具体项目。



作者:在做算法的巨巨
链接:https://www.jianshu.com/p/e07932472257
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


http://chatgpt.dhexx.cn/article/EYJ6ZJoD.shtml

相关文章

你知道什么是核函数吗

目录 一、常用核函数:二、核函数特点:三、选择核函数的方法:四、核函数方法实施步骤:五、核函数在模式识别中的应用:六、核函数方法原理: 核函数K(kernel function)就是指K(x, y) &…

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

在说核函数之前,我们先说说映射及其作用. 如果在当前空间对数据类别不好使用线性函数进行划分,则通过一个函数φ( x)将数据点从当前空间映射到另一空间去(映射后的空间叫特征空间,通常是更高维的空间,当然不是绝对)以方…

核函数(Kernel function)(举例说明,通俗易懂)

已知有一组向量,可用线性函数去探索其是否具有线性关系,若数据之间是非线性呢? 非线性数据是指只有利用非线性模型才能更好的预测。但非线性问题往往不好求解,所以希望用解线性分类问题的方法解决这个问题。所采取的方法是进行一…

Linux笔记(5):库文件

1、库文件 库是一组预先编译好的方法的集合。 Linux系统存储的库的位置一般在/lib和/usr/lib。库的头文件一般被存储在/usr/include下货其子目录下。 库有两种: (1)静态库,命令规则:libxxx.a (2&#…

vs2019添加库文件

vs2019添加库文件 环境:windows10,64位,vs2019 vs安装路径:D:\visual_studio 需要的材料:头文件,编译好的库文件 方法一 以GLFW为例,找到IDE或者编译器的**/lib和/include文件夹&#xff0…

【Linux基础】静态库和共享库(如何自定义库文件?)

文章目录 前言一、库文件的基本知识1.库文件分类2.库文件命名 二、如何自定义静态库?1.静态库简介2.具体流程(详细步骤)3.静态库缺点 三、如何自定义共享库?1.共享库简介2.具体流程(详细步骤)3.共享库优点 四、静态库与共享库区…

Linux 系统上的库文件生成与使用

1.库文件 库是一组预先编译好的方法的集合。Linux系统存储的库的位置一般在:/lib 和 /usr/lib。 在 64 位的系统上有些库也可能被存储在/usr/lib64 下。库的头文件一般会被存储在 /usr/include 下或其子目录下。 库有两种,一种是静态库,其…

库文件、静态库(lib)与动态库(dll)的生成与使用

静态库 程序编译一般需经预处理、编译、汇编和链接几个步骤。在应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中。这种库…

库文件的生成和使用

一、库文件 库是一组预先编译好的函数方法的集合 Linux上库文件的存放位置: /lib和/usr/lib 库分为两种:静态库和共享库 Linux上静态库标识(libxxx.a),共享库(libxxx.so) Windows上静态库标识(.lib)&a…

3、库文件

1、什么式库文件: 库文件是预先编译好的方法的集合。(相当于一大堆的可执行文件) 存放头文件的标准目录:/usr/include 存放库文件的标准目录:/usr/lib 比如: printf函数的实现在库文件中 libcs.so 声明在/usr/inc…

库文件:静态库与动态库的生成和使用

0.引言 当进行C语言的编写时,想要查看标准库的某个函数是怎样实现的,比如 stdio.h 里的 printf 函数,跳转后只能看见函数声明,而无法跳转到函数的定义处,为什么无法查看函数的定义,这就涉及到库文件使用。…

【C++】静态库和动态库文件的生成和使用

前言 文章目录 前言库文件静态库的生成hello.hhello.cmain.c 动态库的生成GCC命令相同时,会先执行.a文件,还是会先执行.so文件?静态库与动态库的区别使用静态库的使用动态库的使用 总结 本文主要讲解了静态库和动态库的生成,以及.…

标准库文件

工艺库有db文件和lib文件,db是打不开的,lib是打得开的。 以反向器为例,时序弧上的延迟由两个因素影响,负载越大,延迟越大;输入转换时间越大,延迟越大。 随着工艺更加先进,线性模…

linux的库文件

文章参考链接:https://www.cnblogs.com/tankblog/p/6780146.html 一、什么是库文件? 本质上来说,库文件就是可执行代码的二进制形式,可以被操作系统载入内存中执行 Linux操作系统支持的函数库分为静态库和动态库,动态…

linux库文件

windows静态库文件扩展名.lib 动态库文件扩展名.dll linux 静态库.a 动态库.so 都是将函数封装在一起编译后供自己或他人调用,好处是编译后的库文件看不带源代码,可以保密 linux库文件一般存在 /lib 和/usr/lib 64位下也有可能存在 /usr/lib64 下…

Linux系统上库文件的生成与使用(静态库和动态库)

目录 1、什么是库文件? 2、静态库的生成与使用 2.1、生成 .o 文件 2.2、创建静态库 2.3、使用静态库 3、动态(共享)库的生成与使用 3.1、生成 .o 文件 3.2、生成动态库文件 3.3、使用动态库 4、静态库与动态库的区别 1、什么是库文…

库文件简述

什么是库文件? 库就是一组预先编译好的方法的集合。在linux系统中,库文件一般被存储在/lib和/usr/lib中,库的头文件一般会被存储在/usr/include下。 库文件可以分为静态库和共享库两种。 静态库的命名规则为libxxx.a,共享库的命名…

六、库文件

今天我们来了解一下库文件,主要有以下几个内容: 文章目录 一、库文件概念二、静态库(一)生成&&使用(二) 示例(三) 特点 三、动态库(一)生成&&am…

库文件

目录 库文件 静态库 动态库(共享库) 静态库和共享库的区别 库文件 库文件是预先编译好的方法的集合。 比如:我们提前写好一些数据公式的实现,将其打包成库文件,以后使用只需要库文件就可以,而不需要重…

EDID 修改

EDID 128字节(不包括扩展),如果手动修改的话比较麻烦(最后一个字节校验和必须自己计算–128字节和为0),借助第三方工具比较好。 比如: SoftMCCS Phoenix EDID Designer EDIDManager EDIDViewer等。 如果只要修改制造商代号,…