核技巧

发布时间:2023年10月4日
更新时间:2024年1月23日

假设你正在尝试分离两种油,一种是橄榄油,另一种是葵花籽油。它们在一个平的盘子里混合在一起,你试图用一条直线把它们分开。听起来很不可能对吧?因为在平的盘子里(或者说在二维空间里),这两种油混合在一起,无法分开。

现在这个时候你把它们装在一个底面积更小的三维容器里,那么用不了一会儿,因为二者密度的差异,密度低的油会慢慢浮上去,密度大的油会慢慢沉下来。

这就类似于“核技巧”做的事情。如果数据在原始空间中不能线性分隔(就像平盘中的油),我们可以将它投影到一个更高维度的空间(把二维平面的盘子变成三维的容器),在那里它可以被线性分隔。

“核技巧”本质上是一种机器学习技术,它允许我们以一种使决策边界更易于发现的方式转换数据。通过这种方式,我们可以解决复杂的问题,而不会过多地增加计算复杂性,因为“技巧”让我们能够在高维空间工作,而实际上不需要计算那个空间中的数据坐标。

在支持向量机(SVM)中,核技巧是一种非常重要的方法。对于线性不可分的问题,我们可以通过特征映射,把原始的样本空间映射到一个更高维度的新空间(即特征空间),使得样本在新的空间中变成线性可分。

这里Decision surface可以理解为超平面

核函数

在实际计算过程中,直接进行映射和计算会产生大量的计算量,核函数的出现就是为了解决这个问题。给定两个原空间的向量,核函数可以直接计算出它们在高维特征空间的内积,而不需要实际进行映射。换句话说,核函数提供了一种“捷径”,使我们能在原空间直接进行计算,而无需实际到高维空间去计算。

举一个具体的例子,假设我们有一个转换函数 ϕ\phi,它可以将原始数据 xx 转换到一个新的特征空间,那么在新的特征空间中,两个数据点的内积就可以表示为 ϕ(xi)Tϕ(xj)\phi(x_i)^T\phi(x_j)。对于很多情况,原始空间的维度可能相对较低,但转换后的特征空间维度可能会非常高,所以直接计算这个内积可能会非常复杂甚至无法计算。

但如果我们有一个核函数

K(xi,xj)=ϕ(xi)Tϕ(xj),K(x_i, x_j) = \phi(x_i)^T\phi(x_j),

那么我们就可以直接在原始空间中通过计算 K(xi,xj)K(x_i,x_j) 来获得新的特征空间中的内积,而无需显式地进行空间转换和高维度内积的计算。这就是核函数的基本思想。

线性核

线性核函数也被称为线性核,是最简单的一种核函数。在许多应用中,尽管它非常简单,但往往表现非常良好。

线性核函数的形式如下:

K(xi,xj)=xiTxj,K(x_i, x_j) = x_i^T x_j,

这里 xix_ixjx_j 是输入向量。线性核函数实际上就是在输入数据上计算普通的点积。

重要的是注意,使用线性核函数的支持向量机(SVM)是线性分类器,这意味着它只能找到一个线性决策边界(即可以被一条直线或者一个平面分开的数据)。

因此,如果数据是线性可分的,或者近似为线性可分,那么线性核函数可能是一种很好的选择。然而,如果数据不是线性可分的,那么可能需要使用比如多项式核函数,或者高斯径向基函数核(RBF kernel)等非线性核函数来处理。

多项式核

多项式核函数是在支持向量机(SVM)中常用的一种核函数,它可以处理线性不可分的数据。多项式核可以将输入特征映射到一个高维度的特征空间,从而在高维度空间找到一个分类超平面。

多项式核函数的标准形式如下:

K(x,y)=(γxTy+r)d, K(x, y) = ( \gamma x^T y + r )^d,

其中 xxyy 是输入向量。γ\gammarrdd 是核函数的参数,根据这些参数的不同,可以得到不同的核函数。γ\gamma 是比例系数,rr 是偏置项,dd 是特征映射的目标维度,也就是度数。

在实际使用中,多项式核函数的参数需要根据具体问题进行调整,以便找到最佳的分类性能。参数的选择通常涉及到交叉验证等技术。

多项式核通过增加特征的交互项,可以很好地捕捉到特征之间的非线性关系,因此它通常用于处理特征之间有交互影响的数据。然而,如果多项式核的度数选择过高,可能会导致过拟合问题。

总的来说,多项式核通过在高维度空间中创建非线性决策边界,解决了一些线性核无法处理的问题,从而在许多实际问题中提供了更好的解决方案。

高斯径向基核

RBF(Radial Basis Function)径向基函数,是一类以原点为中心,对所有方向均具有相同表现的标量函数。在机器学习和模式识别领域,RBF特别被用作RBF网络的基函数或者是SVM的核函数。

当RBF用作SVM的核函数时,通常使用的是高斯径向基函数(Gaussian RBF),表达式为:

K(x,y)=exp(γxy2), K(x, y) = exp(- \gamma ||x - y||^2),

其中,xxyy 是输入向量,xy2||x - y||^2 表示 xxyy 的欧式距离的平方,γ\gamma 是一个预先设定的超参数,决定了高斯函数的宽度。

RBF 核具有非常好的特性:它可以将数据从原始空间映射到一个无穷维的特征空间。在这个新的特征空间中,任何数据集都可以被线性划分。换句话说,RBF 核使 SVM 有能力处理线性不可分的数据,即使在原始空间中数据是非线性的,也可以找到一个非线性决策边界来进行分类。

值得注意的是,虽然 RBF 核可以提供强大的分类能力,但如果参数 γ\gamma 选择不当,可能会导致过拟合(如果 γ\gamma 选得过大)或者欠拟合(如果 γ\gamma 选得过小)。因此在实际使用中,参数 γ\gamma 的选择通常需要通过交叉验证等方法来确定。

非线性映射

非线性映射,从字面上理解,就是将数据从一个空间映射到另一个空间的过程,而这个映射过程是非线性的。

在支持向量机(SVM)中,我们经常遇到一种情形,就是在原始的输入空间中,数据是线性不可分的。这时,我们可以通过非线性映射 ϕ\phi,将原始的输入空间映射到高维特征空间。

假设我们的原始输入数据是二维的 x=(x1,x2)x=(x_1, x_2),我们可以定义一个非线性映射 ϕ\phi,将原始数据映射到三维特征空间,具体的映射过程可以定义为:

ϕ(x)=ϕ(x1,x2)=(z1,z2,z3)=(x12,2x1x2,x22). \phi(x) = \phi(x_1, x_2) = (z_1, z_2, z_3) = (x_1^2, \sqrt{2}x_1x_2, x_2^2) .

在新的特征空间中,原本在原始空间线性不可分的数据可能会变得线性可分。例如,原始空间中的一组环形分布的数据在被映射到特征空间后变成呈柱状分布,核函数的应用就能够找到合适的超平面进行分类。

不过在这样的处理过程中,会出现一种复杂性即维度灾难问题,随着特征空间维度的提升,存储和计算的复杂性会急剧增加。为了解决这个问题,SVM引入了核函数的方法,核函数可以将特征空间中高维向量的内积转化为输入空间中的内积计算,避免了在实际计算中涉及到高维度映射。这种在原始输入空间利用核函数计算新特征空间中点积的方法,就被称为核技巧。