数学原理
本章目标
- 理解 SVR 的 ε-不敏感损失函数——管道内误差不计,管道外线性惩罚。
- 理解原始优化问题中的正则项
与松弛变量 的分工。 - 理解对偶问题中核技巧的引入——内积替换为
实现非线性映射。 - 将数学符号中的
、 、 与源码中的 C=10.0、epsilon=0.1、gamma='scale'精确对应。
重点方法与概念速览
| 名称 | 类型 | 作用 |
|---|---|---|
| ε-不敏感损失 | 损失函数 | |
| 正则项 | 控制模型平滑度—— | |
| 超参数 | 正则化强度的倒数——越大越强调拟合,越小越强调平滑 | |
| RBF 核 | 核函数 | |
| 支持向量 | 概念 | 拉格朗日乘子 |
1. ε-不敏感损失函数
SVR 的核心创新:不惩罚管道内的误差。
参数速览
| 参数名 | 类型 | 说明 | 示例取值 |
|---|---|---|---|
| 标量 | 管道半宽—— | epsilon=0.1 | |
| 函数 | — |
理解重点
- 当预测误差在
内时损失为零——SVR 主动"忽视"小误差。 - ε 越大管道越宽,更多样本落入管道内——模型更平滑,支持向量更少。
- 这与 OLS(所有误差都平方惩罚)和 Lasso/Ridge(所有误差都平方惩罚 + 系数惩罚)根本不同。
2. 原始优化问题
参数速览
| 参数名 | 类型 | 说明 | 示例取值 |
|---|---|---|---|
| 向量 | 线性模型的系数—— | — | |
| 标量 | 管道外误差的惩罚权重——正则化强度的倒数 | C=10.0 | |
| 标量 | 管道上方的松弛变量——样本超出管道上界的量 | — | |
| 标量 | 管道下方的松弛变量——样本超出管道下界的量 | — |
理解重点
的意义:使拟合函数尽可能平坦(flatness)——这是 SVM/SVR 区别于其他回归方法的核心。 :管道外样本的惩罚—— 越大,偏离管道的代价越高,模型越倾向于缩小管道覆盖所有样本。 是正则化强度的倒数—— 退化为硬间隔(无正则化), 趋向完全平坦。 - 样本在管道内 →
且 → 不计损失,不是支持向量。
3. 对偶问题与核技巧
引入拉格朗日乘子
参数速览
| 参数名 | 类型 | 说明 | 示例取值 |
|---|---|---|---|
| 标量 | 拉格朗日乘子——约束在 | — | |
| 函数 | 核函数——隐式计算高维特征空间的内积 | kernel='rbf' | |
| 标量 | RBF 核宽度—— | gamma='scale' |
对偶问题:
RBF 核:
理解重点
- 核技巧的本质:不显式计算
,而是直接计算内积 。 - RBF 核将数据映射到无限维空间——任何连续函数在理论上都可以被 RBF 核的 SVR 逼近。
控制每个样本的影响半径: 大 → 影响局部 → 可能过拟合; 小 → 影响全局 → 可能欠拟合。 gamma='scale'=——scikit-learn 根据特征方差自动缩放。
4. 预测函数
参数速览
| 参数名 | 类型 | 说明 | 示例取值 |
|---|---|---|---|
| 函数 | 对新样本的预测——仅支持向量的加权核函数求和 | model.predict(X_test_s) |
理解重点
- 预测不是
的矩阵乘法——而是支持向量与测试点的核函数加权和。 的样本对预测零贡献——只有支持向量参与计算。 - 预测复杂度
——支持向量越多预测越慢。
5. SMO 类优化算法
SVR 的对偶问题是一个带约束的二次规划。scikit-learn 使用 SMO(Sequential Minimal Optimization)类算法求解:
参数速览
| 参数名 | 类型 | 说明 | 示例取值 |
|---|---|---|---|
| 优化变量 | — | — | |
| 约束 | — | — | |
tol | float | 停止条件的对偶间隙容忍度 | 1e-3(scikit-learn 默认) |
max_iter | int | 最大迭代次数 | -1(无限制,scikit-learn 默认) |
理解重点
- SMO 每次只优化两个拉格朗日乘子——其余固定,子问题有解析解。
- 训练复杂度约
到 ——样本量超过万级时训练显著变慢。 - 当前 200 样本的 SMO 求解几乎瞬时完成。
6. 数学概念与代码实现的映射
| 数学概念 | 数学符号 | 代码实现 |
|---|---|---|
| 特征矩阵 | X_train_s——标准化后形状 (160, 10) | |
| 目标向量 | y_train——形状 (160,) | |
| 管道半宽 | SVR(epsilon=0.1) | |
| 惩罚系数(正则化倒数) | SVR(C=10.0) | |
| 核函数 | SVR(kernel='rbf') | |
| RBF 核宽度 | SVR(gamma='scale') — 即 | |
| 拉格朗日乘子差值 | model.dual_coef_——形状 (1, nSV) | |
| 支持向量索引 | model.support_ | |
| 支持向量数量 | model.support_.shape[0] | |
| 截距 | model.intercept_——标量 |
7. SVR vs 线性回归 vs 正则化回归 数学对比
| 数学维度 | 线性回归 | 正则化回归 | SVR |
|---|---|---|---|
| 损失函数 | 平方损失 | 平方损失 + | ε-不敏感损失——管道内不计 |
| 正则化 | 无 | L1/L2 系数惩罚 | |
| 对偶形式 | 不需要——闭式解 | 不需要(Ridge 有闭式解,Lasso 用原问题) | 需要——引入核技巧的途径 |
| 核函数 | 无 | 无 | RBF 核——映射到无限维空间 |
| 求解方法 | SVD 闭式解 | 坐标下降 / 闭式解 | SMO——序列最小优化 |
| 稀疏性 | 无 | Lasso: 系数稀疏 | 支持向量稀疏——仅部分样本参与预测 |
| 预测公式 | |||
| 参数可解释性 | coef_ 直接对照 | coef_ 观察稀疏化 | 无法直接解释各特征贡献(RBF 核) |
常见坑
- 将
理解为正则化强度—— 是正则化的倒数, 越大正则化越弱,越容易过拟合。 - 忘记 SVR 需要标准化——RBF 核基于欧氏距离,特征量纲不一致会导致某些维度主导核计算。
- 将支持向量稀疏与 Lasso 系数稀疏混为一谈——前者的零是"不参与预测的样本",后者的零是"不参与决策的特征"。
- 期待 SVR 输出
coef_做特征重要性——RBF 核的 SVR 没有coef_,权重存在于对偶空间。
小结
- SVR 的数学核心是三层结构:ε-管道损失 + 平坦性正则化 + 核技巧非线性映射。
- ε-管道使管道内样本不计损失——它们不是支持向量,不参与预测,实现样本层面的稀疏性。
- RBF 核将数据隐式映射到无限维空间——使 SVR 能拟合任意非线性关系,但代价是可解释性下降。
- 数学公式中的
、 、 直接映射到源码中的 C=10.0、epsilon=0.1、gamma='scale'。