基础 · 06

核技巧与非线性分类

数据在低维不可分?搬到高维就行。核技巧、决策树、k-NN——三条绕过直线限制的路。

13 min read

线性的天花板

上一篇我们看到,SVM 能找到间隔最大的线性边界。但「线性」意味着只能画直线——如果两类数据像两个新月一样交织在一起,再好的直线也只能切对一半。

问题不在于算法不够聪明,而在于特征空间的维度不够。一个天才的想法:

如果数据在当前维度不可分,那就把它搬到更高维的空间——也许在那里,一条直线就够了。

升维一刀:核技巧

最简单的例子:一维数轴上,两类点穿插排列——紫色在两端,青色在中段。一刀怎么切都分不开。

但如果给每个点加一个坐标 x2x^2,把 (x)(x) 变成 (x,x2)(x, x^2)

-3-2-10123

在 1D 数轴上,紫色(两端)和青色(中段)穿插排列——任何一刀都切不开。

核技巧不是黑魔法——把数据搬到更高维,原本画不出的线就自然出现了。

映射到 2D 后,紫色点(x|x| 大)升到高处,青色点(x|x| 小)留在底部,一条水平线就够了。投影回 1D,这条线变成了两个切点——在低维看起来是「曲线」,在高维其实是「直线」。

这就是核技巧的核心直觉:非线性决策边界 = 高维空间里的线性边界投影回来

数学上,映射 ϕ(x)\phi(\mathbf{x}) 把数据送到高维后,SVM 在高维做线性分类:

f(x)=wϕ(x)+bf(\mathbf{x}) = \mathbf{w} \cdot \phi(\mathbf{x}) + b

精妙之处:SVM 的优化只用到数据点之间的内积 ϕ(xi)ϕ(xj)\phi(\mathbf{x}_i) \cdot \phi(\mathbf{x}_j)。核函数 K(xi,xj)K(\mathbf{x}_i, \mathbf{x}_j) 直接算出这个内积,不需要先显式算 ϕ\phi 再做点积。这就是为什么叫「技巧」——你从未真正计算过高维坐标,但效果就像在高维做了线性分类。

RBF 核:映射到无穷维

最常用的核函数是 RBF(Radial Basis Function)核

K(xi,xj)=exp ⁣(γxixj2)K(\mathbf{x}_i, \mathbf{x}_j) = \exp\!\left(-\gamma \|\mathbf{x}_i - \mathbf{x}_j\|^2\right)

它等价于映射到无穷维空间——但计算量跟原始维度一样。

γ\gamma 控制「视野」:γ\gamma 大时只看很近的邻居,边界贴着数据弯曲(容易过拟合);γ\gamma 小时看得远,边界平滑(可能欠拟合)。

在下面的散点图里,切到 RBF SVM 看它如何绕过两个新月。对比 Logistic 和 Linear SVM 的直线——差距一目了然:

一条直线acc 83%
点切换算法。同一份数据,五种画法。线性算法在两个新月之间无路可走;RBF / 树 / k-NN 各以不同形状绕过去。

决策树:轴对齐的递归切分

决策树用完全不同的画法绕过线性限制:它只切平行于坐标轴的线,但可以递归地切很多刀。

算法从根节点开始,每次选一个特征和一个阈值,把数据分成两半,让两边尽量「纯」(一类占压倒多数)。衡量「纯度」的标准通常是基尼系数

Gini(S)=1kpk2\text{Gini}(S) = 1 - \sum_k p_k^2

pkp_k 是集合 SS 中第 kk 类的比例。纯的节点(全是一类)Gini = 0;最不纯(均匀混合)时 Gini 最大。每次选使得分裂后加权 Gini 下降最多的那一刀。

递归下去,空间被切成一堆轴对齐的矩形。在上面的散点图里切到决策树,你能清楚看到这些方框的边界。

决策树的两个独特优势:

  • 可解释——每个决策路径都能说成 "如果 x1>0.5x_1 > 0.5x2<0.3x_2 < 0.3 则…"。
  • 不需要特征缩放——分裂只看一个特征的阈值,不涉及特征之间的距离计算。

代价是:轴对齐意味着对角线方向的边界需要很多层才能逼近,容易过拟合到训练数据的噪声。随机森林(Random Forest)和 XGBoost 通过集成多棵树来缓解这个问题。

k-NN:跟邻居投票

k-近邻(k-NN) 是最"懒"的分类器:完全不训练,不画任何边界。分类一个新点时,找训练集里离它最近的 kk 个邻居,投票。

决策边界是训练数据点之间的 Voronoi 图——完全由数据的局部密度决定。在上面的散点图里切到 k-NN (k=5),看它的边界如何贴着数据波浪起伏——比树更灵活,但也更不稳定。

k-NN 的几何直觉极其纯粹:相似的东西应该有相似的标签。这个直觉在 2026 年的 LLM 系统里以一个新名字活着——向量检索(embedding retrieval)。

kk 的选择是偏差-方差权衡:

  • kk(如 1):边界完全贴着每个训练点,噪声敏感。
  • kk(如 50):边界很平滑,但细节丢失。

k-NN 的致命缺点是维度诅咒(curse of dimensionality):在高维空间里,所有点之间的距离都趋于相同,「最近邻」变得没有意义。这就是为什么现代系统不直接在原始特征上跑 k-NN,而是先用神经网络学出一个低维 embedding,再在 embedding 空间里做最近邻。

这个想法在前沿里