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

article/2025/8/18 5:39:58

已知有一组向量,可用线性函数去探索其是否具有线性关系,若数据之间是非线性呢?

非线性数据是指只有利用非线性模型才能更好的预测。但非线性问题往往不好求解,所以希望用解线性分类问题的方法解决这个问题。所采取的方法是进行一个非线性变换,将非线性问题变换为线性问题,通过解变换后的线性问题的方法求解原来的非线性问题。原理是将数据映射到高维数据,在高维空间线性可分。如下图,从低维转换到高维,\Phi是转换函数。

                             

但是有个问题,高维空间的数据计算存在困难。所以替代方案是在特征空间中计算相似度度量,而不是计算向量的坐标,然后应用只需要该度量值的算法。用点积(dot product)表示相似性度量。

1、核函数定义

原始空间中的向量作为输入向量,并返回特征空间(转换后的数据空间,可能是高维)中向量的点积的函数称为核函数

使用内核,不需要显式地将数据嵌入到空间中,因为许多算法只需要图像向量之间的内积(内积是标量);在特征空间不需要数据的坐标。

例1:考虑一个带有特征映射的二维输入空间  \chi \subseteq \mathbb{R}^2

              特征映射二维到三维:     \Phi:x=(x_1,x_2)\rightarrow \Phi(x)=(x_1^2,x_2^2,\sqrt{2}x_1x_2)\in F=\mathbb{R}^3

              特征空间中的内积:       \left \langle \Phi(x),\Phi(z) \right \rangle =\left \langle (x_1^2,x_2^2,\sqrt{2}x_1x_2),(z_1^2,z_2^2,\sqrt{2}z_1z_2) \right \rangle

                                                                            =x_1^2z_1^2+x_2^2z_2^2+2x_1x_2z_1z_2

                                                                            =\left \langle x_1z_1+x_2z_2 \right \rangle^2

                                                                            =\left \langle x,z\right \rangle^2

                                

              根据上面得,核函数为  k(x,z)=\left \langle x,z \right \rangle^2= \Phi(x)^T\Phi(z)

              但核函数只是计算映射的内积,所以映射为 \Phi(x)=(x_1^2,x_2^2,x_1x_2,x_2x_1)\in F=\mathbb{R}^4也是可以得到上面的核函数但是特征空间变为4维了,所以对核函数来说特征空间不唯一。

怎么理解高斯核可以扩展为无限维?拿上例来说,k(x,z)=\left \langle x,z \right \rangle^2=x_1^2z_1^2+x_2^2z_2^2+2x_1x_2z_1z_2 可以扩展为\Phi(x)=(x_1^2,x_2^2,\sqrt{2}x_1x_2) 和 \Phi(x)=(x_1^2,x_2^2,x_1x_2,x_2x_1) 或者其他,只要最后两个向量的点积是核函数的形式即可,对于高斯核函数则可以扩展到无限维。

对于核函数一般有以下两个属性(不是所有的核函数):

                           对称性(symmetric)       \forall x,z\in \chi ,k(x,z)=k(z,x)

                           非负性(non-negative)   \forall x,z\in \chi ,k(x,z)\geq 0

补充:输入空间一般是欧式空间或离散集合;输出空间也叫希尔伯特空间H,是一个具有自然内积或点积的向量空间。

2、Mercer核

设 X=\left \{ x_1,...,x_n \right \}是一个有限集合来自输入空间 \chi\chi空间的格拉姆矩阵(Gram matrix)被定义为 K(X;k)\in R^{n\times n} 或

(K)_{ij} = k(x_i,x_j)

若对\forall X\subseteq \chi,矩阵 K 是正定的,k 叫做Mercer核或叫正定核(positive definite:pd)。Mercer核是对称的即 K=K^T

Mercer's theorem:如果Gram矩阵是正定的,则可以计算Gram 矩阵的特征向量进行降维:

                                                                             K=U^T\Lambda U

\Lambda=diag(\lambda_1,...,\lambda_n)\lambda_i 是 K 的第 i 个特征值,因为矩阵是正定的所以 \lambda_i> 0

K 中的每个元素都是两个向量的点积,可以写成:

                                                                         K_{ij}=\phi(x_i)^T\phi(x_j) 

内核的每个元素都可以描述为一个函数 \phi(\cdot ) 应用到对象 x_i,x_j 的内积。Mercer核的每个元素都位于Hilbert空间中,Hilbert空间是由两个任意向量的内积定义的抽象向量空间。

\phi(\cdot ) 被称为基函数(basis function),空间 F 描述为特征空间,即使用基函数将对象映射到特征空间 F。

基函数\phi(\cdot )(Mercer内核)可以写成κ的特征函数的线性组合。特征空间 F 的维数绝对没有限制;事实上,F可能是无限维的。注意以下两点:

  • 许多内核方法不需要明确计算\phi(x ),只需要使用内核函数 k(\cdot ,\cdot )计算n\times n的Gram 矩阵。换句话说,可以在任意复杂的F特征空间中构建分类器,但不需要显式地计算该空间中的任何元素。
  • 计算\phi(x )很难(通常是不必要的),直接使用直观的基函数\phi(x )来构建内核k(\cdot ,\cdot )

简单来说就是应用核技巧:

  • 将数据映射到高维空间,然后用点积比较这些数据
  • 避免在高维空间运作,选择一个特征空间,其中点积可以使用输入空间中的非线性函数直接求值

例2:假设在一维空间中有n个点(均为标量),如何利用核函数将其转到高维空间进行分类?

                   

对于一维空间的点 x_i(代表一个样本)可以将其转换为向量(x_i,x_i^2),即 \phi(x_i )=(x_i,x_i^2)。根据核函数的定义可得:

                                                  k(x_i,x_j)=\left \langle (x_i,x_i^2),(x_j,x_j^2) \right \rangle

                                                                 =x_ix_j+x_i^2x_j^2

上例中通过将转换函数 \phi(x ),将一维空间的变量转换到二维空间,计算简单,如上图所示,在特征空间线性可分。上式也可以尝试转换到更高维。

核函数方法的主要思想是活得一组观测数据,并将它们投影到另一空间,在这个空间中,点之间的比较是直接的。特征空间的位数可以是任意维,但可以在这个复杂的特征空间中使用简单的分类器,但要注意过拟合(特征过多会引起过拟合)。

3 构建核函数

3.1 线性核函数

让转换函数 \phi(x )=x,则得到线性核函数,则两个向量的点积为:

                                                                        k(x,{x}')=x^T{x}'

线性核函数的特征空间F的维度与输入控件\chi的维度一样,每个向量的特征数也一样(x=(x_1,x_2,....),x_1叫特征,x 代表一个样本)。

当不需要在特征空间进行运算时,可以用线性核函数。如原始数据已经是高维的、可比较的,并且在输入空间线性可分。

线性内核适用于由大量固定长度的特征表示的对象(例如字袋)。

注:一个向量代表一个样本,一个样本有多个特征

3.2 高斯核函数

高斯核也叫squared exponential kernel 、SE kernel or radial basis function (RBF),形式如下:

                                                                k(x,x')=exp(-\frac{1}{2}(x-x')^T\Sigma ^{-1}(x-x'))

\Sigma 是观测中每个特征的协方差,p维矩阵。当\Sigma是对角线矩阵时,可以写为:

                                                                k(x,x')=exp(-\frac{1}{2}\sum_{j=1}^p\frac{(x_j-x'_j)^2}{\sigma _j^2})  

\sigma_j被定义为特征 j 的伸缩尺度(characteristic length scale)。

如果\Sigma是球形的,则有:

                                                             k(x,x')=exp(-\frac{\left \| x-x' \right \|^2}{2\sigma^2}),\sigma_j=\sigma,\forall j

该核函数的特征空间的维度是无限的。核函数避免了转换函数的计算,所以可以用相对马氏距离计算 n\times n的Gram 矩阵

,即使已经隐式地将对象投射到无限维的特征空间中。

3.3 核函数类别

                                                                     核函数类别(x,y表示输入空间的向量)

名称表达式参数
linear kernelk(x,y)=x^Ty+cc:常数
polynomial kernelk(x,y)=(\alpha x^Ty+c)^d

alpha:slope

c:constant;c=0,同质多项核函数;c=1,不同质多项核函数

d≥1,多项式次数

gaussian kernelk(x,y)=exp(- \frac{||x-y||^2}{2\sigma^2})=exp(-\gamma ||x-y||^2) 
radial kernelk(x,y)=exp(-\gamma ||x-y||^2)正常\gamma= 1/n_features
exponential kernelk(x,y)=exp(- \frac{||x-y||}{2\sigma^2}) 
laplacian kernelk(x,y)=exp(- \frac{||x-y||}{\sigma}) 
ANOVA kernelk(x,y)=\sum_{k=1}^nexp(-\sigma(x^k-y^k)^2)^d回归

hyberbolic tangent

(sigmoid)kernel

k(x,y)=tanh(\alpha x^Ty+c)

主要用于神经网络;

正常 alpha=1/N,N是数据维度;alpha>0,c<0;

非正定核

rational quadratic kernelk(x,y)=1-\frac{||x-y||^2}{\left \| x-y \right \|^2+c}有理二次核的计算量比高斯核小,当使用高斯核代价太大时,它可以作为一种选择
Multiquadric Kernelk(x,y)=\sqrt{\left \| x-y \right \|^2+c^2}非正定核
Inverse Multiquadric Kernel

k(x,y)=\frac{1}{\sqrt{\left \| x-y \right \|^2+c^2}}

与高斯核一样,其结果是一个满秩的核矩阵,从而形成一个无限维的特征空间
Circular Kernel

k(x,y)=\frac{2}{\pi}arccos(-\frac{||x-y||}{\sigma})-\frac{2}{\pi}\frac{||x-y||}{\sigma}\sqrt{1-(\frac{||x-y||}{\sigma})^2}

if  ||x-y||<\sigma , zero otherwise

圆核用于地球静力学应用。它是一个各向同性固定核的例子,在R2中是正定的
Spherical Kernel

k(x,y)=1-\frac{3}{2}\frac{||x-y||}{\sigma}+\frac{1}{2}(\frac{||x-y||}{\sigma})^3

if  ||x-y||<\sigma , zero otherwise

球核与圆核相似,但在R3中是正定的
Wave Kernel 对称正半定
Power Kernelk(x,y)=-||x-y||^d幂核也称为三角核。它是尺度不变核的一个例子,并且也是条件正定的。
Log Kernelk(x,y)=-log(||x-y||^d+1)对于图像来说,Log内核似乎特别有趣,但它只是在一定条件下是正的
Spline Kernel

k(x,y)=1+xy+xy\min(x,y)-\frac{x+y}{2}\min(x,y)^2+\frac{1}{3}\min(x,y)^3

k(x,y)=\prod_{i=1}^d 1+x_iy_i+x_iy_i\min(x_i,y_i)-\frac{x_i+y_i}{2}\min(x_i,y_i)^2+\frac{1}{3}\min(x_i,y_i)^3

x,y\in\mathbb{R}^d

以分段三次多项式的形式给出
B-Spline (Radial Basis Function) Kernel

k(x,y)=B_{2p+1}(x-y),p\in N,B_{i+1}=B_i \otimes B_0

b样条核是在区间[- 1,1]上定义的
Bessel Kernel

 
Cauchy Kernel一个长尾核,可用于在高维空间上提供远程影响和灵敏度。
Chi-Square Kernel

修订版:

 
Histogram Intersection Kernel直方图相交核也被称为最小核,并已被证明在图像分类中是有用的
Generalized Histogram Intersection广义直方图相交核是在直方图相交核的基础上建立的,用于图像分类,但适用于更广泛的环境
Generalized T-Student Kernel是一个Mercel核,因此具有一个正半定核矩阵
Bayesian Kernel

 
Wavelet Kernel

平移不变版:

a和c分别为小波扩张系数和平移系数

此外还可以通过函数组合得到,如对于核函数k_1,k_2,有:

                                                         

c为常数,f(·)是任意函数,q(·)无负系数的多项式,A是半正定矩阵。

4 核函数的应用

核函数是一种灵活表示数据样本的方法,这样就可以在复杂的空间中比较样本。核函数在比较中显示出了很大的实用价值。

  • 不同大小的图片
  • 不同长度的蛋白序列
  • 3D结构对象
  • 不同数量的边和节点的网络
  • 不同长度和形式的样本文件

以上对象都有不同的数量和类型的特征。希望能够对数据样本进行聚类,以找出在这个复杂的高维空间中哪些对是邻居。核函数是一个任意函数,它允许将复杂空间中的对象映射到高维空间,从而能够以简单的方式比较这些复杂的特性。

若有一个样本空间\chi和核函数定义的特征空间,则有助于:

  • 比较:可以用于比较两个具有不同数量单词的文本。一个适当定义的内核为我们提供了一个度量标准,通过它可以量化两个对象之间的相似性
  • 分类:尽管可以在特征空间中量化相似性,但简单的分类器在这个空间中也可能表现不佳。希望将数据投影到另一个空间,并在这个空间中对样本进行分类。

应用于:K近邻、支持向量机

5 核函数的优劣

劣势:

  • 为给定的问题选择核函数可能很困难
  • 对于大型数据集,可能无法存储整个核函数矩阵,可能需要重新计算核函数

优势:

  • 核函数在某些特征空间通过点积的方式计算,但无需知道特征空间以及转换函数。这就是核函数的有用之处。
  • 使在高维空间中以极低的计算成本寻找线性关系成为可能,这是因为在特征空间中输入图像的内积可以在原始空间中计算出来
  • 不需要数据是真实的向量,可用于字符串、时序数据

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

相关文章

Linux笔记(5):库文件

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

vs2019添加库文件

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

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

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

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

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

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

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

库文件的生成和使用

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

3、库文件

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

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

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

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

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

标准库文件

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

linux的库文件

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

linux库文件

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

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

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

库文件简述

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

六、库文件

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

库文件

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

EDID 修改

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

EDID参数介绍

1、显示器的第24个字节是设置显示器的电源管理标准的。 各个位的作用如下&#xff0c;注意到标号为1的位是关于主画面。 3、Gamma源于CRT的响应曲线&#xff0c;即反映显像管的图像亮度与输入电子枪的信号电压的非线性关系的一个参数。对于CRT显示器而言&#xff0c;显像管电子…

EDID文件格式转换工具介绍

EDID文件格式转换工具介绍 1 EDID文件 简单来说&#xff0c;EDID文件主要内容就是128个字节数据&#xff08;V1.3版本&#xff09;或是256个字节数据&#xff08;V1.4版本&#xff09;。   但是不同的EDID的编辑工具支持的文件格式又不同&#xff0c;例如Phoenix EDID Desig…

EDID含义浅析

SoftMCCSEDID 开头&#xff08;HEADER&#xff09; 开头八个字节为EDID的开始标志&#xff0c;简称头&#xff0c;固定为&#xff1a;制造商和产品ID 这十个字节表示产品&#xff08;MONITOR&#xff09;ID和制造商信息。详细如下&#xff1a;EDID版…