机器学习中的核函数与核方法(是什么?为什么?怎么做?)

article/2025/9/25 15:49:43

我们在学习机器学习的时候,总是会看到一个概念——核,然后看到一堆公式。但是为什么要核呢?核到底是啥玩意?云里雾里。接下来,我们将要把“核”这个东西的神秘面纱一点点揭开。

一、什么是“核函数”

我们都知道,机器学习(神经网络)的一个很重要的目的,就是将数据分类。我们想象下面这个数据(图1),在二维空间(特征表示为\small x_1\small x_2)中随机分布的两类数据(用圆圈和叉叉表示)。

如果我们想要将这两类数据进行分类,那么分类的边界将会是一个椭圆:

\small \frac{x_1^2}{a_1}+\frac{x_2^2}{a_2}=1

但是如果我们可以通过一个映射,将数据的特征\small (x_1,x_2)通过某个非线性映射\small \phi映射到三维空间,其特征表示为\small (z_1,z_2,z_3),并且映射关系为\small (z_1,z_2,z_3)==\phi (x_1,x_2)=(x_1^2,2^{1/2}x_1y_1,x_2^2)),那么我们是不是就可以用一个平面来将其分类,也即是将上述椭圆的x特征换成z特征:

\small \frac{z_1}{a_1}+0\cdot z_2+\frac{z_3}{a_2}=1

其实这个映射,就是将一个空间中的特征转换到另外一个空间,这就是空间转换(映射)的意义,即可以将原来线性不好分的数据转换到另外一个空间,在这个空间中可以用一个超平面线性可分。

在机器学习中,我们要用到内积运算。而在映射后的高维空间中,内积往往是很不好求解的。所以,我们能不能找到在低维空间中的某个运算,恰好等于高维空间中的内积运算呢?

设在原空间中有两个点\small (x_1,x_2)\small (x_1^{'},x_2^{'}),映射到高维空间中变成\small (z_1,z_2,z_3)\small (z_1^{'},z_2^{'},z_3^{'}),我们来看这个例子中的高维空间的内积运算:

\small <(z_1,z_2,z_3),(z_1^{'},z_2^{'},z_3^{'})> =<(x_1^2,2^{1/2}x_1x_2,x_2^2),(x_1^{'}^2,2^{1/2}x_1^{'}x_2^{'},x_2^{'}^2)> =(<x,x^{'}>)^2

我们就将低维空间中的这个对于内积的运算定义为核函数\small \kappa (x,x^{'})=(<x,x^{'}>)^2。换句话说,核函数就是低维空间中的内积的某个函数,或者写成\small \kappa (x,x^{'})=g(<x,x^{'}>),因为在别的例子中,有可能不是内积的平方。即核函数就等于就是高维空间的内积。

二、为什么要用核函数

因为在机器学习中,我们求解的过程要用到内积,而变换后的高维空间的内积我们不好求,所以我们定义了这个核函数,可以把高维空间的内积运算转化成内为空间的某些运算,这样求起来不是很简单吗?

换句话说,如果我们有了核函数,我们就不再需要知道那个映射\small \phi到底是个什么鬼,我们就可以直接通过核函数,就可以求导高维空间的内积了,从而可以计算出高维空间中两个数据点之间的距离和角度。

三、怎么用?(一个简单的分类例子)

现在我们假设,有N个数据{\small {(x_1,y_1),(x_2,y_2),...,(x_N,y_N)}},其中\small x_i=(x_{i1},x_{i2},...,x_{ip})是第i个数据的p维特征,\small y_i是第i个数据的分类标签,现将其映射到高维空间变成\small [{(\phi(x_1),y_1),(\phi(x_2),y_2),...,(\phi(x_N),y_N)],而在这个空间中,有两个类别,所以标签可以假定为+和-,其中每一类的样本个数为\small n_+\small n_-。正样本的中心点\small C_+=\frac{1}{n_+}\sum_{y_i=+}\phi( x_i),负样本的中心点\small C_-=\frac{1}{n_-}\sum_{y_i=-} \phi(x_i),从\small C_-\small C_+有一条差向量\small w=C_+-C_-,而w的中心点为C,所以在C点垂直于w的超平面就是两类的分类边界。

而想要把某个数据\small \phi(x)分类为+的依据为:从C点到样本点的向量差与w向量的夹角应该小于90°,也即:\small 0<cos\theta<1;反之,\small \small 0>cos\theta>-1。即,当内积为正,那就说明在分类1,内积为负,就说明在分类2。即:

\small y=sgn(<\phi(x)-C,w>)=sgn(w^{T}\phi(x)-w^{T}C)

于是我们来\small cos\theta的表达式:

\small cos\theta=\frac{<\phi(x)-C,w>}{|\phi(x)-C||w|} =\frac{1}{a}<\phi(x)-C,w>= \frac{1}{a}(<\phi(x),w>-<C,w>)

 

(PS:说到这,你应该知道为什么分类需要内积了吧?因为内积的正负代表了数据点是位于分类边界的正方向还是负方向,从而实现分类。)

其中:

\small w=C_+-C_-=\frac{1}{n_+}\sum_{y_i=+}\phi( x_i) -\frac{1}{n_-}\sum_{y_i=-}\phi( x_i)

\small C=\frac{1}{2}(C_++C_-)=\frac{1}{2}(\frac{1}{n_+}\sum_{y_i=+}\phi( x_i) -\frac{1}{n_-}\sum_{y_i=-}\phi( x_i))

\small <\phi(x),w>=<\phi(x),\tfrac{1}{n_{+}} \sum_{y_{i}\in +}\phi(x_{i})- \tfrac{1}{n_{-}} \sum_{y_{i}\in -}\phi(x_{i})> =\tfrac{1}{n_{+}} \sum_{y_{i}\in +}<\phi(x),\phi(x_{i})>+ \tfrac{1}{n_{-}}\sum_{y_{i}\in -}<\phi(x),\phi(x_{i})> =\tfrac{1}{n_{+}} \sum_{y_{i}\in +}\kappa (x,x_{i})+ \tfrac{1}{n_{-}}\sum_{y_{i}\in -}\kappa (x,x_{i})

\small <C,w>=

后面的就不继续写了,化简形式都一样,即:我们就可以把高维空间的内积,改写成低维空间的核函数的形式,这样在不知道映射\small \phi是个什么鬼的情况下吗,也可以轻松地进行分类工作了。

四、补充一点

1. 有限半正半定:给定任意有限 n个点(x1~xn),求解其矩阵是正定的:

\small \kappa =\begin{bmatrix} \kappa(x_1,x_1) & ... &\kappa(x_1.x_n) \\ ...& ... & ...\\ \kappa(x_n,x_1)&... & \kappa(x_n,x_n) \end{bmatrix} \geq 0

五. 核函数与机器学习的关系

我们在机器学习中,经常看到\small f(x)=w^Tx+b,而我们看上面的公式\small y=sgn(<\phi(x)-C,w>)=sgn(w^{T}\phi(x)-w^{T}C),是不是感觉到很熟悉? 


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

相关文章

【Kernel Method】Kernel Method核方法介绍

引言 核方法是20世纪90年代模式识别与机器学习领域兴起的一场技术性革命。其优势在于允许研究者在原始数据对应的高维空间使用线性方法来分析和解决问题&#xff0c;且能有效地规避“ 维数灾难”。在模式识别的特征抽取领域&#xff0c;核方法最具特色之处在于其虽等价于先将原…

通俗理解核方法(kernel function)

最近对核方法比较有兴趣&#xff0c;想了解一下&#xff0c;在网上查阅了很多资料&#xff0c;感觉说的很晦涩&#xff0c;没有理解&#xff0c;于是查看了李政轩老师的课程&#xff0c;对其有了一定程度上的理解&#xff0c;本博客目的为了记录&#xff0c;也为了加深理解。 …

电机选型及校核方法总结

序&#xff1a;原先最初是没打算写电机选型总结的&#xff0c;而是准备写一些关于数字信号处理相关的东西&#xff0c;但是我的一个朋友提醒了我。他说&#xff0c;现在网上关于数字信号处理的东西写的太多了&#xff0c;特别是基础的知识都写烂了&#xff0c;你再写也没人看&a…

核方法与核技巧

本文对核方法&#xff08;kernel method&#xff09;进行简要的介绍。 核方法的主要思想是基于这样一个假设&#xff1a;“在低维空间中不能线性分割的点集&#xff0c;通过转化为高维空间中的点集时&#xff0c;很有可能变为线性可分的” &#xff0c;例如下图 左图的两类数据…

机器学习中的核方法(Kernel Method)

说到机器学习中的核方法(Kernel Method),大部分人应该是在学习SVM的时候认识到它或者听说它。它的基本思想是说,普通的SVM分类超平面只能应对线性可分的情况,而对于线性不可分的情况我们则需要引入一个Kernel,这个Kernel可以把数据集从低维映射到高维,使得原来线性不可分…

支持向量机原理小结(3)——核方法和非线性支持向量机

前面两篇博客对线性支持向量机进行了详细的讲解&#xff0c;但线性SVM对于非线性的数据是无可奈何的。这篇博客将讲一下非线性支持向量机。 1. 核方法 对SVM有过一定耳闻的人&#xff0c;一定听说过“核技巧”、“核方法”这些名词&#xff0c;其实核方法并不是只能应用于SVM&…

核方法以及核函数讲解

核方法的主要思想是基于这样一个假设&#xff1a;“在低维空间中不能线性分割的点集&#xff0c;通过转化为高维空间中的点集时&#xff0c;很有可能变为线性可分的” &#xff0c;例如下图 左图的两类数据要想在一维空间上线性分开是不可能的&#xff0c;然而通过F(x)(x-a)(x-…

MLAPP————第十四章 核方法

第十四章 核方法 14.1 简介 到目前为止&#xff0c;我们书上提到的各种方法&#xff0c;包括分类&#xff0c;聚类或者是其它的一些处理手段&#xff0c;我们的特征都是固定大小的一个向量&#xff0c;一般具有如下的形式&#xff0c;。然而&#xff0c;对于某些类型的对象&a…

核方法的理解

核方法在非线性分类问题上有很好的解决思路&#xff0c;应用于学习器SVM以及降维KPCA上&#xff0c;当然二者路径也不同&#xff0c;SVM就是从低维不可分映射到高维可分&#xff0c;而KPCA是从低维不可分映射到高维后再降维到低维可分&#xff0c;但都脱离不来这个核方法。 核…

核方法原理

核方法原理 1.无力的线性分类器 一般情况下&#xff0c;我们考虑构造一个线性分类器来解决问题。但是实际中&#xff0c;线性分类器的效果达不到要求&#xff0c;因为大部分数据都不是线性可分的&#xff0c;如下面这幅图。一种改进的方法是把多个弱的线性分类器组合得到一个强…

核方法(kernel method)的主要思想

kernel method是针对低维线性不可分而提出的一种解决方法&#xff0c;在PRML中有一章节的介绍&#xff0c;对其理解&#xff0c;也是迭代更进的过程。 简单来说&#xff0c;kernel method是一种低维和高维特征空间映射的方法&#xff0c;利用低维内积的函数来表征高维内积&…

python svm核函数_Python.SVM(三)核方法

Python.SVM(三)核方法 1 什么是核方法 往简单里说&#xff0c;核方法是将一个低维的线性不可分的数据映射到一个高维的空间、并期望映射后的数据在高维空间里是线性可分的。 我们以异或数据集为例&#xff1a;在二维空间中、异或数据集是线性不可分的&#xff1b;但是通过将其映…

核方法回归

参考论文-DENSITY ESTIMATION FOR STATISTICS AND DATA ANALYSIS 给定数据集&#xff0c;来估计概率密度函数 Histograms The naive estimator 也是分成段的平行x轴直线连接起来 The kernel estimator 其中kernel可以是高斯核&#xff0c;结果图: 可以见到&#xff0c;高斯核…

【机器学习】SVM核方法

https://blog.csdn.net/qq_32742009/article/details/81430534 Kernel Trick 在 SVM 中引入核方法便可使得 SVM 变为非线性分类器&#xff0c;给定非线性可分数据集 &#xff0c;如下图所示&#xff0c;此时找不到一个分类平面来将数据分开&#xff0c;核方法可以将数据投影到…

核函数与核方法整理

一些之前提到过的知识, 对核函数相关进行详细梳理和串联. 根据胡老师建议的重点, 学习了一下: 核函数公式&#xff0c;作用&#xff0c;选择, 调参, 如何简化运算 目录 SVM回顾 严格线性可分问题 近似线性可分 核函数 什么是核函数 如何使用核函数 为什么要用核函数 …

核方法也称为核技巧(Kernel method)

简介 核函数是干嘛的&#xff1f; 核方法的好处#套用ice110956的说法 1. 在线性与非线性间架起一座桥梁&#xff0c;低维空间里面数据特征是非线性的&#xff0c;没法儿用线性方法解决&#xff0c;当数据特征映射到高维的时候&#xff0c;可以用线性方法解决。 2. 通…

Kernel Method核方法—应用与理解

前一篇主要梳理了几个基本概念以及相关关系&#xff0c;这一篇主要针对核方法的应用进行讨论&#xff0c;并理解核方法的思想&#xff0c;了解为什么要引入核方法。 核方法在机器学习中是一种灵活的技术&#xff0c;主要归结为两个方面&#xff1a; 非线性问题转换为高维线性…

核方法学习

20201101 - 0. 引言 核方法&#xff08;kernel methods&#xff0c;核函数、核技巧&#xff09;是一种能够将在原始数据空间中的非线性数据转化到高维线性可分的方法。而最开始学习机器学习的时候&#xff0c;也是在SVM中接触到的。不过在那个时候之后&#xff0c;就很少从理…

核方法(kernel Method)

核方法 核方法定义 一种能够将在原始数据空间中的非线性数据映射到高维线性可分的方法。 核方法的用处 1、低维数据非线性&#xff0c;当其映射到高维空间&#xff08;feature space&#xff09;时&#xff0c;可以用线性方法对数据进行处理。 2、线性学习器相对于非线性学…

核方法概述----正定核以及核技巧(Gram矩阵推导正定核)

在再谈SVM&#xff08;hard-margin和soft-margin详细推导、KKT条件、核技巧&#xff09;中我们大致谈到了核函数以及为什么要用核函数&#xff0c;今天在这里更加详细的介绍一下。 核方法 1.核函数概述2.正定核2.1定义2.2证明 3.核技巧4.常见的核函数 1.核函数概述 从前面的学…