核函数

article/2025/8/17 14:01:26

对于优化问题:

                                                                                                          

                                                                                                                     

的求解需要计算这个内积,而如果输入样本线性不可分的话,我们采取的方法是通过函数映射将输入样本映射到另外一个高维空间并使其线性可分。

         以库克定律为例(http://zh.wikipedia.org/zh-cn/%E9%9D%99%E7%94%B5%E5%8A%9B):

一个电量为  的点电荷作用于另一个电量为  的点电荷,其静电力  的大小,可以用方程表达为:

                             ,其中, 是两个点电荷之间的距离, 是库仑常数

         显然这个定律无法用线性学习器来表达,看到乘积想到ln函数,对原始形式两边取ln,得到:

,令,那么就得到一个线性学习器:

                                     

这个过程可以用下图说明:

这样就将内积就变成了

可以有两种方法:

         1、先找到这种映射,然后将输入空间中的样本映射到新的空间中,最后在新空间中去求内积

         2、或者是找到某种方法,它不需要显式的将输入空间中的样本映射到新的空间中而能够在输入空间中直接计算出内积

         先看第一种方法,以多项式 为例,对其进行变换,,得到:

,也就是说通过把输入空间从二维向四维映射后,样本由线性不可分变成了线性可分,但是这种转化带来的直接问题是维度变高了,这意味着,首先可能导致后续计算变复杂,其次可能出现维度之咒,对于学习器而言就是:特征空间维数可能最终无法计算,而它的泛化能力(学习器对训练样本以外数据的适应性)会随着维度的增长而大大降低,这也违反了"奥坎姆的剃刀",最终可能会使得内积无法求出,于是也就失去了这种转化的优势了;

         再看第二种方法,它其实是对输入空间向高维空间的一种隐式映射,它不需要显式的给出那个映射,在输入空间就可以计算,这就是传说中的核函数方法:

定义1:核是一个函数,对于所有的满足,,这里的为从到内积特征空间的映射。

于是输入空间的标准内积就被推广了。

          

         什么时候才是核函数呢?

         假设有输入空间为对称函数,那么对于所有样本得到下面矩阵:,显然,这个是个对称矩阵,那么对于对称矩阵一定存在一个正交矩阵,使得,这里是包含k的特征值的对角矩阵,特征值对应的特征向量为,其中n为样本数,对输入空间做如下映射:     

         

          于是有,(其中为特征向量组成的矩阵,为相应特征值组成的三角矩阵),也就是说K是对应于映射的核函数。

例子:有,由解得特征值:,对2重特征根4求的基础解系、正交化、单位化后得到特征向量:,对的特征向量单位化后得到,于是有,满足,对所有输入样本做映射得:

;

随便选两个做内积,如

由此可见:就是对应于特征映射的核函数,也就得到下面的结论:

定理1:存在有限输入空间上的对称函数,那么是核函数的充要条件是矩阵半正定,此时相当于对输入空间向特征空间进行了隐式映射。对于上面的映射,令,于是,进而

定理3:设的一个紧子集(闭合且有界子集),上的对称函数,如果它在希尔伯特空间上的积分算子满足:

                                                                                                          

这里指的是由满足条件的所有函数组成的空间。

上扩展到一个一致收敛的序列,该序列由的特征函数构成,归一化使得,且所有特征值 ,则核函数可以被特征分解为:

                                                                                     

          

         在核方法中有一个相当重要的、不得不说的概念(先打个标记):

定义2:设是希尔伯特函数空间,其元素是某个抽象集合上的实值或复值函数,如果对于任何作为的函数都是中的元素,而且对于任何取内积有:  
                                                                                     

称为为再生核希尔伯特空间(Reproducing Kernel Hilbert Space,RKHS);称为再生核空间再生核(简称RK)。

定理4:对于定义在域上的每一个,存在一个定义在上的函数的再生希尔伯特空间,其中是再生核。反过来,对于线性有界函数的任意希尔伯特空间,存在再生核这个命题也成立。

         当然也可以利用核函数来构造核函数,有时候这种构造会很有效的解决问题:

条件:设上的核,上的实值函数,上的核,是一个对称半正定矩阵,则下面的函数都是核:

         1、;

         2、;

         3、;

         4、;

         5、;

         6、

         核的选择对于支持向量机至关重要,选定核后,原问题就变成了:

                                                                                                                  

                                                                                                                 

                                                                                                                            

这个优化问题有最优解么?记得核要满足Mercer条件,即矩阵在所有训练集上半正定,这说明这个优化是凸优化,于是这个条件保证了最大化间隔优化问题有唯一解,简直是天作之合啊,配合的天衣无缝;最后求的,那么从输入空间向特征空间隐式映射后得到的最大间隔超平面也就出来了:,且有几何间隔

         常用核函数总结如下:

         线性核函数:

         多项式核函数:

         高斯核函数:

         核函数:

         下面这个链接收集了若干核函数:

             http://www.shamoxia.com/html/y2010/2292.html

          

          关于核方法的理论部分涉及到泛函分析、微积分等等,水比较深,我推荐一本书:《Kernel Methods for Pattern Analysis》(模式分析的核方法),作者是:John Shawe-Taylor和Nello Cristianini 。


http://chatgpt.dhexx.cn/article/cJER8Zi0.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…

库文件

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