非线性支持向量回归(Nonlinear Support Vector Regression, Nonlinear SVR)的原理与优化求解过程
我将为你讲解非线性支持向量回归(Nonlinear SVR)。这是一种用于回归问题的核方法,它通过引入核技巧,将输入数据映射到高维特征空间,然后在该空间中寻找一个“ε-不敏感”的回归函数,从而处理非线性关系。下面我们循序渐进地分解其描述、原理和求解过程。
题目描述
核心问题:给定一组训练数据 \(\{ (x_1, y_1), (x_2, y_2), ..., (x_n, y_n) \}\),其中 \(x_i \in \mathbb{R}^d\) 是输入特征,\(y_i \in \mathbb{R}\) 是连续输出值。目标是学习一个回归函数 \(f(x)\),使其能准确预测新样本的输出,同时对于训练数据允许一定的误差(由参数 ε 控制)。当输入与输出之间呈复杂的非线性关系时,标准的线性回归(包括线性SVR)会失效。非线性SVR通过核函数(Kernel Function)将原始特征映射到高维(甚至无限维)的特征空间,在该空间中构造一个线性的回归函数,从而实现原始输入空间中的非线性回归。
关键思想:通过核技巧(Kernel Trick)隐式地进行高维映射,避免直接计算高维特征向量的内积,从而高效地求解非线性回归问题。与分类SVM类似,非线性SVR也依赖于支持向量(Support Vectors)来决定最终模型,具有稀疏性和鲁棒性。
解题过程(循序渐进讲解)
步骤1:从线性SVR到非线性SVR的核心动机
- 线性SVR回顾:线性SVR试图找到一个线性函数 \(f(x) = w^T x + b\)(其中 \(w\) 是权重向量,\(b\) 是偏置),使得对于所有训练样本,预测值 \(f(x_i)\) 与真实值 \(y_i\) 的偏差不超过一个预定的 ε(不敏感带)。它通过最小化 \(\frac{1}{2} \|w\|^2\)(正则化项)和超出ε带的误差(损失项)来优化。
- 非线性问题的挑战:当数据在原始特征空间中不是线性关系时,线性函数无法很好拟合。例如,数据点可能呈现曲线分布。
- 解决方案的思路:借鉴非线性SVM的思想,将原始数据 \(x\) 通过一个非线性映射 \(\phi: \mathbb{R}^d \to \mathcal{H}\) 映射到一个高维特征空间 \(\mathcal{H}\)。在这个高维空间中,数据可能变得线性可分(或近似线性),然后在高维空间中应用线性SVR。核技巧的关键在于,我们不需要显式地知道映射 \(\phi\) 的具体形式,也不需要直接计算高维特征向量 \(\phi(x)\),而只需计算它们的内积 \(K(x_i, x_j) = \langle \phi(x_i), \phi(x_j) \rangle\),这个内积就是核函数。常用的核函数包括多项式核、高斯径向基函数(RBF)核等。
步骤2:非线性SVR的优化问题形式化
- 高维空间中的线性函数:在高维特征空间中,回归函数变为:
\[ f(x) = w^T \phi(x) + b \]
这里 $ w $ 是高维空间中的权重向量,$ \phi(x) $ 是映射后的特征向量。
- ε-不敏感损失函数:采用与线性SVR相同的损失函数。对于每个样本,如果 \(|y_i - f(x_i)| \le \epsilon\),则损失为0;否则,损失为 \(|y_i - f(x_i)| - \epsilon\)。为了便于优化,引入两个松弛变量 \(\xi_i\) 和 \(\xi_i^*\) 分别衡量在 ε 带上方和下方的误差。
- 原始优化问题:非线性SVR的原始优化问题(Primal Problem)可表述为:
\[ \begin{aligned} \min_{w, b, \xi, \xi^*} \quad & \frac{1}{2} \|w\|^2 + C \sum_{i=1}^{n} (\xi_i + \xi_i^*) \\ \text{subject to} \quad & y_i - (w^T \phi(x_i) + b) \le \epsilon + \xi_i, \\ & (w^T \phi(x_i) + b) - y_i \le \epsilon + \xi_i^*, \\ & \xi_i, \xi_i^* \ge 0, \quad i = 1, \dots, n. \end{aligned} \]
其中,$ C > 0 $ 是正则化参数,用于权衡模型复杂度(由 $ \|w\|^2 $ 控制)和训练误差(由松弛变量之和控制)。$ \epsilon $ 定义了不敏感带的宽度。
步骤3:转化为对偶问题以引入核函数
- 构建拉格朗日函数:为上述带约束的优化问题引入拉格朗日乘子 \(\alpha_i, \alpha_i^*, \eta_i, \eta_i^* \ge 0\):
\[ \begin{aligned} L = & \frac{1}{2} \|w\|^2 + C \sum_{i=1}^{n} (\xi_i + \xi_i^*) - \sum_{i=1}^{n} \eta_i \xi_i - \sum_{i=1}^{n} \eta_i^* \xi_i^* \\ & + \sum_{i=1}^{n} \alpha_i \big( y_i - w^T \phi(x_i) - b - \epsilon - \xi_i \big) \\ & + \sum_{i=1}^{n} \alpha_i^* \big( w^T \phi(x_i) + b - y_i - \epsilon - \xi_i^* \big). \end{aligned} \]
- 对偶问题的推导:根据拉格朗日对偶性,原始问题等价于最大化关于 \(\alpha, \alpha^*\) 的最小化问题。我们令 \(L\) 对 \(w, b, \xi_i, \xi_i^*\) 的偏导数为零:
- \(\frac{\partial L}{\partial w} = 0 \Rightarrow w = \sum_{i=1}^{n} (\alpha_i - \alpha_i^*) \phi(x_i)\)。这是关键结果,它表明权重向量 \(w\) 可以表示为训练样本映射的线性组合。
- \(\frac{\partial L}{\partial b} = 0 \Rightarrow \sum_{i=1}^{n} (\alpha_i - \alpha_i^*) = 0\)。
- \(\frac{\partial L}{\partial \xi_i} = 0 \Rightarrow C - \alpha_i - \eta_i = 0\),结合 \(\eta_i \ge 0\),可得 \(0 \le \alpha_i \le C\)。
- \(\frac{\partial L}{\partial \xi_i^*} = 0 \Rightarrow C - \alpha_i^* - \eta_i^* = 0\),同理得 \(0 \le \alpha_i^* \le C\)。
- 代入得到对偶问题:将上述关系代回拉格朗日函数,消去 \(w, b, \xi, \xi^*, \eta, \eta^*\),并利用核函数 \(K(x_i, x_j) = \phi(x_i)^T \phi(x_j)\) 来表示内积,得到对偶优化问题(Dual Problem):
\[ \begin{aligned} \max_{\alpha, \alpha^*} \quad & -\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} (\alpha_i - \alpha_i^*) (\alpha_j - \alpha_j^*) K(x_i, x_j) \\ & + \sum_{i=1}^{n} (\alpha_i - \alpha_i^*) y_i - \epsilon \sum_{i=1}^{n} (\alpha_i + \alpha_i^*) \\ \text{subject to} \quad & \sum_{i=1}^{n} (\alpha_i - \alpha_i^*) = 0, \\ & 0 \le \alpha_i, \alpha_i^* \le C, \quad i = 1, \dots, n. \end{aligned} \]
**注意**:这里我们最大化的是原拉格朗日函数的极小值,通常对偶问题写作最小化其负数的形式。优化变量是对偶变量 $ \alpha_i $ 和 $ \alpha_i^* $。
步骤4:回归函数的表示与支持向量
- 回归函数的对偶表示:从步骤3的 \(w\) 表达式 \(w = \sum_{i=1}^{n} (\alpha_i - \alpha_i^*) \phi(x_i)\),代入原始回归函数 \(f(x) = w^T \phi(x) + b\),得到:
\[ f(x) = \sum_{i=1}^{n} (\alpha_i - \alpha_i^*) K(x_i, x) + b. \]
**这就是非线性SVR的最终预测公式**。它完全由训练样本 $ x_i $、对应的对偶变量差值 $ (\alpha_i - \alpha_i^*) $ 以及核函数 $ K(\cdot, \cdot) $ 决定。我们无需知道映射 $ \phi $ 的具体形式,只需计算核函数值。
- 支持向量的识别:根据KKT(Karush-Kuhn-Tucker)互补松弛条件,对于每个样本 \(i\):
- 当 \(|y_i - f(x_i)| < \epsilon\) 时(即样本落在 ε 不敏感带内),有 \(\alpha_i = \alpha_i^* = 0\)。
- 当 \(y_i - f(x_i) = \epsilon\) 时(样本恰好在不敏感带上边界),有 \(0 < \alpha_i < C\) 且 \(\alpha_i^* = 0\)。
- 当 \(y_i - f(x_i) = -\epsilon\) 时(样本恰好在不敏感带下边界),有 \(\alpha_i = 0\) 且 \(0 < \alpha_i^* < C\)。
- 当 \(|y_i - f(x_i)| > \epsilon\) 时(样本落在不敏感带外),则有 \(\alpha_i = C\) 或 \(\alpha_i^* = C\)。
那些满足 \(\alpha_i \neq 0\) 或 \(\alpha_i^* \neq 0\) 的样本 \(x_i\) 被称为支持向量。模型的预测函数 \(f(x)\) 仅依赖于这些支持向量,这赋予了模型稀疏性。
- 计算偏置 \(b\):利用KKT条件,可以从任意一个满足 \(0 < \alpha_i < C\) 的支持向量计算 \(b\)(或取平均以获得数值稳定性)。例如,对于一个满足 \(0 < \alpha_i < C\) 的支持向量,有 \(y_i - f(x_i) = \epsilon\),即:
\[ b = y_i - \epsilon - \sum_{j=1}^{n} (\alpha_j - \alpha_j^*) K(x_j, x_i). \]
步骤5:优化求解与核函数选择
- 求解对偶问题:得到的对偶问题是一个带有框约束(box constraints)和线性等式约束的凸二次规划(QP)问题。可以使用通用的二次规划求解器,但更高效的是专门为SVM/SVR设计的算法,如序列最小优化(SMO) 的变体。SMO每次选择两个拉格朗日乘子(\(\alpha_i, \alpha_i^*\) 对应样本的两个乘子视为一组)进行优化,固定其他乘子,通过解析解更新这两个乘子,迭代直至收敛。
- 核函数的作用与选择:核函数定义了高维特征空间中的相似性度量。常见选择:
- 多项式核:\(K(x, z) = (x^T z + c)^d\),控制复杂度由阶数 \(d\) 决定。
- 高斯径向基函数(RBF)核:\(K(x, z) = \exp(-\gamma \|x - z\|^2)\),应用最广。参数 \(\gamma\) 控制核的带宽,决定了映射后空间的复杂度。\(\gamma\) 越大,模型越可能过拟合;\(\gamma\) 越小,模型越平滑。
- Sigmoid核:\(K(x, z) = \tanh(\kappa x^T z + \theta)\)。
核函数的选择和其参数(如RBF的 \(\gamma\))以及SVR的正则化参数 \(C\)、不敏感参数 \(\epsilon\) 都是超参数,需要通过交叉验证等技术来调整。
总结
非线性SVR通过核技巧,将原始非线性回归问题转化为高维特征空间中的线性SVR问题,并通过求解其对偶问题得到最终的回归函数。这个函数是支持向量的线性组合(以核函数为权重),具有稀疏性和良好的泛化能力。其核心步骤包括:形式化原始优化问题 → 推导对偶问题并引入核函数 → 识别支持向量并得到回归函数的对偶表示 → 使用SMO等算法求解对偶问题 → 通过交叉验证选择核函数及超参数 \(C, \epsilon, \gamma\) 等。整个过程巧妙地避免了“维数灾难”,实现了高效的非线性回归建模。