【第二章:机器学习与神经网络概述】04.回归算法理论与实践 -(2)支持向量回归(SVR)
第二章: 机器学习与神经网络概述
第四部分:回归算法理论与实践
第二节:支持向量回归(SVR)
内容:核函数、软间隔与容忍参数。
支持向量回归(Support Vector Regression)是支持向量机(SVM)在回归任务中的扩展。它在保留最大间隔思想的同时,引入间隔容忍度(ε)与软间隔,实现对回归问题的建模。
一、SVR 的基本思想
SVR 的目标是找到一个函数 f(x),使预测值与真实值的误差尽量在 ε 以内:
并且对在 ε 范围外的预测误差惩罚较大。
二、SVR 的核心概念
1. ε-不敏感损失函数(ε-insensitive loss)
-
在误差小于 ε 时,不计算损失。
-
误差超过 ε 时,才进行惩罚。
公式表示如下:
2. 软间隔与松弛变量(Slack Variables)
-
引入
处理不可避免的预测偏差。
-
容许部分样本落在 ε 管道外,提升鲁棒性。
3. 正则化目标函数:
其中:
-
C:控制模型复杂度和容忍度的惩罚系数
-
:预测误差超过 ε 的松弛变量
三、核函数(Kernel)机制
与 SVM 一样,SVR 可通过核技巧在高维空间建模非线性关系。
常见核函数:
名称 | 形式 | 用途 |
---|---|---|
线性核 | 简单线性关系 | |
多项式核 | 高阶非线性 | |
RBF核(高斯核) | 常用非线性映射 |
四、Python 实现示例(使用 RBF 核)
from sklearn.svm import SVR
import numpy as np
import matplotlib.pyplot as plt# 构造样本
X = np.sort(np.random.rand(40))
y = np.sin(2 * np.pi * X) + np.random.randn(40) * 0.1
X = X.reshape(-1, 1)# 训练 SVR 模型
svr_rbf = SVR(kernel='rbf', C=100, epsilon=0.1)
svr_rbf.fit(X, y)# 预测与可视化
x_plot = np.linspace(0, 1, 100).reshape(-1, 1)
y_pred = svr_rbf.predict(x_plot)plt.figure(figsize=(8, 5))
plt.scatter(X, y, color='darkorange', label='Data')
plt.plot(x_plot, y_pred, color='navy', lw=2, label='SVR (RBF kernel)')
plt.title("SVR 回归曲线示意图")
plt.xlabel("X")
plt.ylabel("y")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
参数解释与调优
参数 | 说明 |
---|---|
C | 惩罚系数,越大越关注训练误差,可能导致过拟合 |
epsilon | ε 管道宽度,越大越“容忍”误差,适当控制模型复杂度 |
kernel | 指定核函数类型 |
gamma | RBF 核中高斯函数宽度,值越小模型越复杂 |
以下是一个简明清晰的 SVR(支持向量回归)模型调参分析表,涵盖关键参数、其作用、默认值、调参建议及常见影响:
支持向量回归(SVR)模型调参分析表
参数名 | 说明 | 默认值 | 调参建议与影响 |
---|---|---|---|
kernel | 核函数类型:'linear' , 'poly' , 'rbf' , 'sigmoid' | 'rbf' | - 通常优先选择 rbf ;- 高维线性可试 'linear' ;- 'poly' 适合周期性/交互性特征 |
C | 惩罚系数:控制模型在训练集上的拟合程度 | 1.0 | - 值越大越强调拟合训练集,风险过拟合;- 小值提升泛化能力但可能欠拟合 |
epsilon | ε 不敏感间隔:误差小于该值不计入损失 | 0.1 | - 控制模型对小误差的容忍度;- 小值捕捉细节但风险过拟合;- 大值提高鲁棒性 |
gamma | RBF核宽度(对多项式核也适用):控制单个支持向量的影响范围 | scale | - 值越小,模型复杂度越高,可能过拟合;- 可调为 'auto' , 0.01 , 0.1 , 1 等 |
degree | 多项式核的阶数 | 3 | - 仅对 'poly' 核有效;- 高阶可能产生震荡、欠拟合或过拟合问题 |
coef0 | 核函数中的常数项:仅用于 'poly' , 'sigmoid' 核 | 0.0 | - 改变核函数输出偏移量,可用于调整非线性度(仅对部分核有效) |
shrinking | 是否启用启发式收缩优化算法 | True | - 通常保持为 True 可获得更快的训练速度 |
tol | 停止迭代的容忍误差 | 1e-3 | - 控制收敛精度;较小值提升精度但训练慢 |
max_iter | 最大迭代次数(-1 表示不限制) | -1 | - 控制训练时间;训练不收敛时建议限制或调节学习参数 |
实用调参建议
-
核心组合推荐(适用于多数非线性回归):
-
kernel='rbf'
-
C=10~100
-
epsilon=0.01~0.2
-
gamma='scale'
或0.1
-
-
调参顺序建议:
-
首调
C
与epsilon
控制偏差与容差; -
后调
gamma
以调节核复杂度; -
使用网格搜索(
GridSearchCV
)+交叉验证获取最优组合。
-
-
可视化辅助:
-
结合预测曲线图、残差图和学习曲线判断模型表现。
-