基本概念
核函数是在机器学习领域,尤其是在支持向量机(SVM)算法中常用到的一个概念。核函数的基本想法是通过一个非线性变换将原始数据映射到一个更高维的空间,在这个新的空间中,原本线性不可分的数据可能变得线性可分。简单来说,核函数允许我们在更高维的特征空间中进行线性分类,而无需显式地计算出这个高维空间中的坐标。
在原始的特征空间中,如果数据是线性不可分的,那么找到一个能将所有样本正确分类的线性分类器是不可能的。但是,通过将数据映射到更高维的空间,找到这样一个分类超平面变得可行。这就是核技巧(kernel trick)的核心。
核函数的性质
核函数 K ( x , y ) K(x, y) K(x,y) 必须满足以下性质:
- 对称性: K ( x , y ) = K ( y , x ) K(x, y) = K(y, x) K(x,y)=K(y,x),即无论如何交换其输入,核函数的值都保持不变。
- 正定性:对于任何非零向量 a \mathbf{a} a和样本集 x 1 , x 2 , . . . , x n {x_1, x_2, ..., x_n} x1,x2,...,xn,核函数矩阵(或称格拉姆矩阵, Gram matrix) K \mathbf{K} K,其中 K i j = K ( x i , x j ) K_{ij} = K(x_i, x_j) Kij=K(xi,xj),必须是半正定的。
常用核函数
- 线性核(Linear Kernel): K ( x , y ) = x T y K(x, y) = x^T y K(x,y)=xTy。这实际上没有进行任何映射,即原始特征空间就是用于分类的空间。
- 多项式核(Polynomial Kernel): K ( x , y ) = ( x T y + c ) d K(x, y) = (x^T y + c)^d K(x,y)=(xTy+c)d。参数 d d d代表映射到的高维空间的维度, c c c 是一个自由参数。
- 径向基函数核(Radial Basis Function Kernel, RBF,或高斯核): K ( x , y ) = exp ( − γ ∣ x − y ∣ 2 ) K(x, y) = \exp(-\gamma |x - y|^2) K(x,y)=exp(−γ∣x−y∣2)。其中 γ \gamma γ 是一个自由参数,控制了高维空间中的径向作用范围。
- Sigmoid核: K ( x , y ) = tanh ( α x T y + c ) K(x, y) = \tanh(\alpha x^T y + c) K(x,y)=tanh(αxTy+c)。这个函数形式上类似于神经网络中的sigmoid激活函数。
核函数的应用
核函数主要用于支持向量机模型中,但其概念也被用在其他机器学习算法中,如核主成分分析(Kernel PCA)、核化的线性判别分析(Kernel LDA)、以及任何可以用核技巧来隐式映射数据到高维空间的算法。
核技巧的一个重要优势是它使得在高维空间的复杂计算变得不必要,因为它允许我们在原始空间中直接通过核函数计算高维空间中的内积。这样不仅节省了巨大的计算成本,还使得处理高维数据变得更加可行。
柯西核(Cauchy Kernel)
柯西核(Cauchy Kernel)是一种用于核方法的相似性测量函数,其灵感来源自概率论中的柯西分布(Cauchy Distribution),也称为洛伦兹分布(Lorentz Distribution)。柯西分布是一种连续概率分布,其形状类似于正态分布但是尾部更为厚重,这意味着它具有更多的极端值。
柯西核的数学形式定义如下:
K
(
x
,
y
)
=
1
1
+
∥
x
−
y
∥
2
σ
2
K(x, y) = \frac{1}{1 + \frac{\|x - y\|^2}{\sigma^2}}
K(x,y)=1+σ2∥x−y∥21
这里
x
x
x 和
y
y
y是特征空间中的两个点,
∥
x
−
y
∥
2
\|x - y\|^2
∥x−y∥2是这两点之间的欧氏距离的平方,
σ
\sigma
σ是一个自由参数,它控制着核函数的宽度。
柯西核是一个非线性核,它与径向基函数核(RBF)或高斯核在某些方面相似,因为它也是关于两点间距离的单调递减函数。然而,与高斯核相比,柯西核的长尾特性意味着即使两个点相距较远,它们通过柯西核计算出的相似性值也不会快速趋近于零。这使得柯西核对于那些具有较大尺度变异或者异常值的数据集可能更为适用。
柯西核的特点之一在于其生成的核矩阵(也称为格拉姆矩阵)通常是正定的,这是应用核技巧(kernel trick)的一个重要条件。然而,由于其长尾特性,柯西核在机器学习中的应用相比于其他更加流行的核函数(如线性核、多项式核、RBF核)来说依然较少。
在支持向量机(SVM)和其他核方法中,核函数的选择会直接影响模型的性能。因此,虽然柯西核在理论上是一个有趣的选择,但在实际应用中,仍然需要根据具体问题和数据集的特性来决定是否使用柯西核。通常,通过交叉验证等模型选择技术来评估不同核函数对于特定问题的效果。
线性核(Linear kernel)
线性核(Linear kernel)是最基本的核函数之一,用于支持向量机(SVM)或其他核方法中。它的主要特点是不进行任何非线性映射,直接使用原始特征空间中的数据点。线性核的数学表达式非常简单,对于两个向量
x
x
x和
y
y
y,线性核定义如下:
K
(
x
,
y
)
=
x
T
y
K(x, y) = x^T y
K(x,y)=xTy
这里的
x
T
y
x^T y
xTy 就是
x
x
x和
y
y
y 两个向量的点积(内积)。线性核实际上就是在计算两个向量在原始输入空间中的相似度。如果两个向量的方向越接近,点积的值就越大;反之,如果它们的方向差异很大,点积的值就会小。
线性核函数的主要优点包括:
- 简单高效:不涉及复杂的计算,特别适合于线性可分的数据。
- 易于理解:直接反映了原始特征空间中的数据结构。
- 易于实现:在实际应用中,它不需要像其他核函数那样有额外的参数调整。
- 稀疏性支持:与稀疏特征矩阵兼容性良好,这在处理文本数据等高维但稀疏的数据集时尤其有用。
尽管线性核很强大,但它并不适用于所有问题。特别是对于那些线性不可分的数据集,线性核可能无法得到一个好的决策界,这时就需要考虑使用非线性核函数。例如:多项式核、径向基函数核(RBF)或者 Sigmoid 核等能将数据映射到更高维的特征空间,可能在这些情况下表现得更好。
多项式核 (Polynomial kernel)
多项式核(Polynomial kernel)是一种常用的核函数,它可以在机器学习中用于将输入数据从原始特征空间映射到一个更高维的特征空间,以便能够在这个新空间中找到数据的线性决策边界,即便数据在原始空间中是非线性可分的。多项式核通过原始特征空间中的点积的多项式变换实现这一映射。
多项式核的表达式定义为:
K
(
x
,
y
)
=
(
α
x
T
y
+
c
)
d
K(x, y) = (\alpha x^T y + c)^d
K(x,y)=(αxTy+c)d
其中,
x
x
x 和
y
y
y 是两个输入向量,
x
T
y
x^T y
xTy 表示它们的点积,
α
\alpha
α是一个缩放参数(有时也可以设为1),
c
c
c是一个自由参数,通常称为核函数的“常数项”(在多项式中起到类似偏置项的作用),而
d
d
d是多项式的阶数,它决定了映射到高维空间的特征会有多复杂。
这个核函数的特点是可以通过调整参数
d
d
d、
α
\alpha
α 和
c
c
c 来控制映射后特征空间的复杂性。例如:
- 当 d = 1 d = 1 d=1 时,多项式核就退化为线性核。
- 当 c = 0 c = 0 c=0 且 α = 1 \alpha = 1 α=1 时,多项式核只考虑输入数据的原始特征的 d d d 次幂和交互项,而不考虑低于 d d d 次的项。
- 当 c ≠ 0 c \neq 0 c=0 时,常数项 c c c 允许模型在变换到高维空间时考虑更多的特征组合,包括低阶项。
多项式核的优点在于,它能够模拟特征间相互作用,即原始特征空间中各个特征组合的影响。然而,缺点也很明显:
- 当数据的维数非常高时,多项式核可能会导致模型过拟合,因为它会产生大量的特征组合。
- 多项式核的计算成本随着 d d d的增加而显著增加,尤其是当 d d d 很大的时候。
- 参数 d d d、 α \alpha α 和 c c c的选择通常需要通过交叉验证等模型选择技巧来确定,这可能会导致模型训练的时间成本增加。
在实际应用中,多项式核经常用于图像处理、自然语言处理等领域,尤其是在问题结构允许并能从特征间的相互作用中获益时。然而,它并不是万能的,对于特定问题,是否选择多项式核以及如何设置参数需要根据数据集的具体特点和问题的需求来决策。
径向基函数核 (Radial Basis Function kernel, RBF, 也称为高斯核)
径向基函数核(Radial Basis Function kernel,简称RBF),也常被称为高斯核(Gaussian kernel),是一种在支持向量机(SVM)以及其他核方法中广泛使用的核函数。它能够将数据从原始特征空间映射到无限维的特征空间,通常用于处理非线性可分的数据。RBF核的形式适用于许多种类的数据,因为它不依赖于数据的具体形式。
RBF核的数学表达式如下:
K
(
x
,
y
)
=
exp
(
−
∣
x
−
y
∣
2
2
σ
2
)
K(x, y) = \exp\left(-\frac{|x - y|^2}{2\sigma^2}\right)
K(x,y)=exp(−2σ2∣x−y∣2)
其中:
- x x x和 y y y 是特征空间中的两个数据点。
- ∣ x − y ∣ 2 |x - y|^2 ∣x−y∣2是 x x x和 y y y之间的欧氏距离的平方。
- σ \sigma σ 是一个自由参数,通常称为高斯核的“带宽”。在实践中,它决定了数据点间相似性下降的速度,即它控制了函数的局部响应的范围。
RBF核的特点是能够处理复杂的非线性模式,因为它可以创建包含所有可能多项式的特征空间,从而允许分类器找到复杂的非线性决策边界。在高维空间中,即使数据在原始空间是非线性可分的,也可能变得线性可分。
RBF核的主要优点有:
- 灵活度高:RBF核可以通过调整带宽参数 σ \sigma σ 来适应不同的数据分布,使模型有很高的灵活度。
- 只有一个参数:与多项式核相比,RBF核只需要调整一个参数 σ \sigma σ,这简化了模型的选择和验证。
- 无限维的映射:RBF核能映射到无限维空间,这使得它能够捕捉到数据中的高度复杂的模式。
然而,RBF核也有一些潜在缺点:
- 参数选择敏感:带宽参数 σ \sigma σ 的选择对模型性能有很大影响,需要通过交叉验证或其他模型选择技术进行优化。
- 可能过拟合:如果选择的带宽太小,RBF核可能会对训练数据过度敏感,导致过拟合。
- 计算开销:计算RBF核矩阵可能在大规模数据集上非常耗时。
在实际应用中,RBF核是一个非常受欢迎的选择,尤其是在不清楚数据内在结构的情况下。但是,正确地选择 σ \sigma σ 值是关键,通常需要通过实验确定。此外,当面对非常大的数据集时,计算开销可能成为一个问题。在这种情况下,可能需要考虑使用近似方法或其他类型的核函数。
Sigmoid核
Sigmoid核,有时也被称为多层感知器核(因为在神经网络中,多层感知器的激活函数通常是Sigmoid函数),是一种借鉴了神经网络中激活函数形式的核函数。Sigmoid核函数将数据从原始空间映射到高维空间,但与高斯核(RBF)或者多项式核不同,Sigmoid核不一定总是产生正定的核矩阵。
Sigmoid核的数学表达式如下:
K
(
x
,
y
)
=
tanh
(
α
x
T
y
+
c
)
K(x, y) = \tanh(\alpha x^T y + c)
K(x,y)=tanh(αxTy+c)
这里:
- x x x 和 y y y 是两个数据点的特征向量。
- α \alpha α 是缩放参数,通常大于0。
- c c c是偏置项,可以是正的、负的或零。
- tanh \tanh tanh是双曲正切函数,是一个将任意实数值映射到 -1 和 +1 之间的S型函数。
Sigmoid核的特点是在特定条件下,它可以模仿神经网络中的两层感知器的行为。然而,Sigmoid核不总是满足Mercer定理,即不是每次都能保证其对应的核矩阵是半正定的。为了使Sigmoid核函数有效,参数
α
\alpha
α和
c
c
c 需要仔细选择,以确保核矩阵是正定的。
Sigmoid核的优点包括:
- 直观性:由于其与神经网络激活函数的关联,很多人对这个函数比较熟悉。
- 参数少:只有两个参数 α \alpha α和 c c c需要调整。
然而,Sigmoid核也有几个潜在的缺点:
- 参数敏感性:正确选择 α \alpha α 和 c c c是十分关键的,并且没有普适的方法来选择这些参数;通常需要通过交叉验证进行选择。
- 非正定性:Sigmoid核可能会产生非正定的核矩阵,这在理论上可能会导致优化问题没有解。
- 性能变化:在不同的数据集上性能可能相差很大。
Sigmoid核通常用于在特定数据集上实验,看看是否可以通过模仿神经网络的方式来获得良好的性能。然而,由于它的非正定性和参数选择的困难,它可能不如RBF或多项式核那样受欢迎或有效。在使用Sigmoid核之前,建议先尝试其他更稳定和普遍有效的核函数。
拉普拉斯核 (Laplacian kernel)
拉普拉斯核(Laplacian kernel)是一种用在核方法中的函数,类似于径向基函数(RBF)核,但是它使用的是拉普拉斯分布而不是高斯分布。拉普拉斯核是一种局部化的核,它能够捕捉到数据点之间的局部结构,尤其是在数据具有稀疏特征时。这种核函数对于不同数据点之间的距离更敏感,因为它的衰减速度比RBF核更快。
拉普拉斯核的数学表达式定义为:
K
(
x
,
y
)
=
exp
(
−
∣
x
−
y
∣
σ
)
K(x, y) = \exp\left(-\frac{|x - y|}{\sigma}\right)
K(x,y)=exp(−σ∣x−y∣)
这里:
- x x x 和 y y y是特征空间中的两个数据点。
- ∣ x − y ∣ |x - y| ∣x−y∣是 x x x 和 y y y 之间的曼哈顿距离(也称为 L 1 L_1 L1 距离),它是这两点在每个维度上差的绝对值之和。
- σ \sigma σ 是一个正的比例常数(也就是带宽参数),它控制了函数的衰减速率。
拉普拉斯核的特点是:
- 快速衰减:由于拉普拉斯核使用 L 1 L_1 L1 距离而不是 L 2 L_2 L2距离(欧氏距离),它对于数据点间的小变动更加敏感,这意味着它在特征空间中创建了更多的局部性。
- 稀疏数据适用性:拉普拉斯核特别适合处理稀疏数据集,因为它能够强调这些数据点之间的局部邻近性。
与RBF核相比,拉普拉斯核的优点包括:
- 局部性更强:拉普拉斯核由于其快速衰减的特点,更加注重局部邻近的数据点,这使得它可以更好地捕捉局部特征。
- 少数参数:与RBF核一样,拉普拉斯核只有一个参数 σ \sigma σ,因此相对容易调整。
然而,拉普拉斯核也有其自身的缺点:
- 参数选择:与RBF核一样,带宽参数 σ \sigma σ的选择对模型性能有很大的影响,通常需要通过交叉验证来选择最优参数。
- 边界影响:快速的衰减意味着决策边界可能受到局部数据点的较大影响,这有时可能导致过拟合。
在实际应用中,拉普拉斯核可以用作SVM或其他核方法的一个替代核函数,特别是当数据具有明显的局部结构或者数据是稀疏的时候。然而,与所有核函数一样,是否选择拉普拉斯核以及如何设置参数 ( \sigma ) 都需要根据具体问题和数据集的性质进行决定。
余弦相似性核 (Cosine Similarity kernel)
余弦相似性核,也简称为余弦核(Cosine Similarity kernel),在机器学习和向量空间模型中非常常用,尤其是在文本处理和信息检索领域。余弦相似性是通过测量两个向量的夹角的余弦值来判断它们之间的相似度。它特别适合于文本数据的特征向量,因为它可以有效地衡量文档之间的相似性,忽略了文档长度的差异。
余弦相似性的定义为两个向量点乘的结果与各向量长度(欧几里得范数)乘积的商:
cosine similarity
(
x
,
y
)
=
x
⋅
y
∣
x
∣
⋅
∣
y
∣
\text{cosine similarity}(x, y) = \frac{x \cdot y}{|x| \cdot |y|}
cosine similarity(x,y)=∣x∣⋅∣y∣x⋅y
这里:
- x x x和 y y y是特征空间中的两个非零向量。
- x ⋅ y x \cdot y x⋅y 是向量 x x x 和向量 y y y的点积。
- ∣ x ∣ |x| ∣x∣ 和 ∣ y ∣ |y| ∣y∣ 是向量 x x x和 y y y的欧几里得范数,即 x ⋅ x \sqrt{x \cdot x} x⋅x和 y ⋅ y \sqrt{y \cdot y} y⋅y。
余弦相似性的值域是 -1 到 1。当两个向量的方向完全一致时,余弦相似性为 1;当两个向量的方向完全相反时,余弦相似性为 -1;当两个向量独立(即正交)时,余弦相似性为 0。在文本分析中,通常只考虑非负特征向量,这意味着余弦相似性的范围会在 0 到 1 之间。
余弦相似性的优点包括:
- 长度不变性:它比较的是方向而不是向量的大小,这对于文本数据很有用,因为它允许比较不同长度的文档。
- 稀疏数据适用性:在高维空间中,尤其是文档-词项矩阵,往往会有很多零值,余弦相似性可以有效处理这种稀疏性。
使用余弦相似性作为核函数意味着它可以和支持向量机等核方法一起使用,允许在非线性分类或回归问题中应用余弦相似性的概念。
然而,余弦相似性也存在一些局限性:
- 忽略大小和重复性:余弦相似性不考虑向量的实际大小,这有时候可能是一个问题,特别是当大小本身就是一个重要特征时。
- 对中心化敏感:如果数据没有适当的中心化处理,余弦相似性可能会受到均值的影响,这可能会导致结果的偏差。
在实践中,余弦相似性核经常用于文本分类、文档相似性比较以及协同过滤等任务。它的简单性和对文档长度不敏感的特点使得它成为处理高维数据特别是文本数据的一种流行和有效的手段。