支持向量回归(Support Vector Regression, SVR)的数学原理与优化求解过程
1. 问题描述
支持向量回归(SVR)是支持向量机(SVM)在回归任务中的扩展,其目标是在给定训练样本 \(\{(\mathbf{x}_i, y_i)\}_{i=1}^n\)(\(\mathbf{x}_i \in \mathbb{R}^d, y_i \in \mathbb{R}\))后,找到一个函数 \(f(\mathbf{x}) = \mathbf{w}^T \phi(\mathbf{x}) + b\),使得 \(f(\mathbf{x})\) 与真实值 \(y\) 的偏差控制在允许范围内,同时保持模型复杂度最低。SVR 的关键思想是引入 ε-不敏感损失函数,仅当预测值与真实值的绝对偏差大于 ε 时才计算损失,从而获得稀疏解(即仅部分样本参与定义模型)。
2. ε-不敏感损失函数
对于预测值 \(f(\mathbf{x})\) 和真实值 \(y\),定义损失函数:
\[L_\epsilon(y, f(\mathbf{x})) = \max(0, |y - f(\mathbf{x})| - \epsilon) \]
该函数在区间 \([y-\epsilon, y+\epsilon]\) 内损失为 0,即允许预测存在 ε 的误差,超出部分才计入损失。
3. 原始优化问题
为容忍误差,引入两个松弛变量 \(\xi_i \geq 0\) 和 \(\xi_i^* \geq 0\),分别对应正偏差和负偏差超过 ε 的情况。优化目标是最小化正则化项与损失之和:
\[\begin{aligned} \min_{\mathbf{w}, b, \xi, \xi^*} &\quad \frac{1}{2} \|\mathbf{w}\|^2 + C \sum_{i=1}^n (\xi_i + \xi_i^*) \\ \text{s.t.} &\quad y_i - (\mathbf{w}^T \phi(\mathbf{x}_i) + b) \leq \epsilon + \xi_i, \\ &\quad (\mathbf{w}^T \phi(\mathbf{x}_i) + b) - y_i \leq \epsilon + \xi_i^*, \\ &\quad \xi_i, \xi_i^* \geq 0, \quad i = 1, \dots, n. \end{aligned} \]
其中 \(C > 0\) 是正则化参数,控制模型复杂度和损失之间的权衡;\(\phi(\cdot)\) 是映射到高维特征空间的函数(核技巧)。
4. 拉格朗日对偶问题
引入拉格朗日乘子 \(\alpha_i \geq 0\)、\(\alpha_i^* \geq 0\) 对应两个约束,以及 \(\eta_i, \eta_i^* \geq 0\) 对应松弛变量的非负性。拉格朗日函数为:
\[\begin{aligned} L &= \frac{1}{2} \|\mathbf{w}\|^2 + C \sum_{i=1}^n (\xi_i + \xi_i^*) \\ &- \sum_{i=1}^n \alpha_i \big( \epsilon + \xi_i - y_i + \mathbf{w}^T \phi(\mathbf{x}_i) + b \big) \\ &- \sum_{i=1}^n \alpha_i^* \big( \epsilon + \xi_i^* + y_i - \mathbf{w}^T \phi(\mathbf{x}_i) - b \big) \\ &- \sum_{i=1}^n (\eta_i \xi_i + \eta_i^* \xi_i^*). \end{aligned} \]
对原始变量 \(\mathbf{w}, b, \xi_i, \xi_i^*\) 求偏导并令为零:
\[\begin{aligned} \frac{\partial L}{\partial \mathbf{w}} &= \mathbf{w} - \sum_{i=1}^n (\alpha_i - \alpha_i^*) \phi(\mathbf{x}_i) = 0 \quad \Rightarrow \quad \mathbf{w} = \sum_{i=1}^n (\alpha_i - \alpha_i^*) \phi(\mathbf{x}_i), \\ \frac{\partial L}{\partial b} &= \sum_{i=1}^n (\alpha_i - \alpha_i^*) = 0, \\ \frac{\partial L}{\partial \xi_i} &= C - \alpha_i - \eta_i = 0 \quad \Rightarrow \quad \alpha_i \leq C, \\ \frac{\partial L}{\partial \xi_i^*} &= C - \alpha_i^* - \eta_i^* = 0 \quad \Rightarrow \quad \alpha_i^* \leq C. \end{aligned} \]
将上述关系代入拉格朗日函数,消去原始变量,得到对偶问题:
\[\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(\mathbf{x}_i, \mathbf{x}_j) - \epsilon \sum_{i=1}^n (\alpha_i + \alpha_i^*) + \sum_{i=1}^n y_i (\alpha_i - \alpha_i^*) \\ \text{s.t.} &\quad \sum_{i=1}^n (\alpha_i - \alpha_i^*) = 0, \\ &\quad 0 \leq \alpha_i, \alpha_i^* \leq C, \quad i = 1, \dots, n. \end{aligned} \]
其中 \(K(\mathbf{x}_i, \mathbf{x}_j) = \phi(\mathbf{x}_i)^T \phi(\mathbf{x}_j)\) 是核函数(如高斯核 \(K(\mathbf{x}_i, \mathbf{x}_j) = \exp(-\gamma \|\mathbf{x}_i - \mathbf{x}_j\|^2)\))。
5. 支持向量的定义与模型表示
求解对偶问题后,根据 KKT 条件:
- 当 \(|y_i - f(\mathbf{x}_i)| < \epsilon\) 时,对应的 \(\alpha_i = \alpha_i^* = 0\)(样本在 ε 管道内,不是支持向量)。
- 当偏差等于 ε 或更大时,\(\alpha_i\) 或 \(\alpha_i^*\) 可能非零,这些样本称为 支持向量。
最终回归函数为:
\[f(\mathbf{x}) = \sum_{i=1}^n (\alpha_i - \alpha_i^*) K(\mathbf{x}_i, \mathbf{x}) + b. \]
偏置 \(b\) 可通过任意满足 \(0 < \alpha_i < C\) 或 \(0 < \alpha_i^* < C\) 的样本计算:
\[b = y_i - \sum_{j=1}^n (\alpha_j - \alpha_j^*) K(\mathbf{x}_j, \mathbf{x}_i) - \epsilon \quad \text{(若 } \alpha_i > 0\text{)}, \]
或
\[b = y_i - \sum_{j=1}^n (\alpha_j - \alpha_j^*) K(\mathbf{x}_j, \mathbf{x}_i) + \epsilon \quad \text{(若 } \alpha_i^* > 0\text{)}. \]
6. 求解方法与总结
- 对偶问题是凸二次规划,可用序列最小优化(SMO)或通用优化器求解。
- 核函数使 SVR 能处理非线性回归,其稀疏性源于 ε-不敏感损失。
- 超参数 \(C\)(惩罚系数)、\(\epsilon\)(管道宽度)和核参数(如高斯核的 \(\gamma\))通常通过交叉验证选择。
SVR 通过 ε-不敏感损失控制模型复杂度与误差容忍度,利用核技巧处理非线性关系,最终解仅依赖部分支持向量,具有较好的泛化能力。