当前位置: 首页 > news >正文

【第二章:机器学习与神经网络概述】04.回归算法理论与实践 -(2)支持向量回归(SVR)

第二章: 机器学习与神经网络概述

第四部分:回归算法理论与实践

第二节:支持向量回归(SVR)

内容:核函数、软间隔与容忍参数。

支持向量回归(Support Vector Regression)是支持向量机(SVM)在回归任务中的扩展。它在保留最大间隔思想的同时,引入间隔容忍度(ε)软间隔,实现对回归问题的建模。


一、SVR 的基本思想

SVR 的目标是找到一个函数 f(x),使预测值与真实值的误差尽量在 ε 以内:

f(x) = \mathbf{w}^T \mathbf{x} + b

并且对在 ε 范围外的预测误差惩罚较大。


二、SVR 的核心概念

1. ε-不敏感损失函数(ε-insensitive loss)
  • 在误差小于 ε 时,不计算损失。

  • 误差超过 ε 时,才进行惩罚。

公式表示如下:

L_\varepsilon(y, f(x)) = \begin{cases} 0 & \text{if } |y - f(x)| \leq \varepsilon \\ |y - f(x)| - \varepsilon & \text{otherwise} \end{cases}

2. 软间隔与松弛变量(Slack Variables)
  • 引入 \xi_i, \xi_i^* 处理不可避免的预测偏差。

  • 容许部分样本落在 ε 管道外,提升鲁棒性。

3. 正则化目标函数:

\min \frac{1}{2} \|\mathbf{w}\|^2 + C \sum (\xi_i + \xi_i^*)

其中:

  • C:控制模型复杂度和容忍度的惩罚系数

  • \xi_i, \xi_i^*:预测误差超过 ε 的松弛变量


三、核函数(Kernel)机制

与 SVM 一样,SVR 可通过核技巧在高维空间建模非线性关系。

常见核函数:

名称形式用途
线性核K(x, x') = x^T x'简单线性关系
多项式核K(x, x') = (x^T x' + 1)^d高阶非线性
RBF核(高斯核)K(x, x') = \exp(-\gamma \|x - x'\|^2)常用非线性映射

四、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指定核函数类型
gammaRBF 核中高斯函数宽度,值越小模型越复杂

以下是一个简明清晰的 SVR(支持向量回归)模型调参分析表,涵盖关键参数、其作用、默认值、调参建议及常见影响:


支持向量回归(SVR)模型调参分析表

参数名说明默认值调参建议与影响
kernel核函数类型:'linear', 'poly', 'rbf', 'sigmoid''rbf'- 通常优先选择 rbf;- 高维线性可试 'linear';- 'poly'适合周期性/交互性特征
C惩罚系数:控制模型在训练集上的拟合程度1.0- 值越大越强调拟合训练集,风险过拟合;- 小值提升泛化能力但可能欠拟合
epsilonε 不敏感间隔:误差小于该值不计入损失0.1- 控制模型对小误差的容忍度;- 小值捕捉细节但风险过拟合;- 大值提高鲁棒性
gammaRBF核宽度(对多项式核也适用):控制单个支持向量的影响范围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- 控制训练时间;训练不收敛时建议限制或调节学习参数

实用调参建议

  1. 核心组合推荐(适用于多数非线性回归):

    • kernel='rbf'

    • C=10~100

    • epsilon=0.01~0.2

    • gamma='scale'0.1

  2. 调参顺序建议

    • 首调 Cepsilon 控制偏差与容差;

    • 后调 gamma 以调节核复杂度;

    • 使用网格搜索(GridSearchCV)+交叉验证获取最优组合。

  3. 可视化辅助

    • 结合预测曲线图、残差图和学习曲线判断模型表现。

http://www.dtcms.com/a/263770.html

相关文章:

  • 软考中级【网络工程师】第6版教材 第1章 计算机网络概述
  • MATLAB构建capm和三因子模型
  • (论文总结)语言模型中的多模态思维链推理
  • 记一次Ubuntu22安装MongoDB8并同步本地数据过程
  • 动手学深度学习13.5. 多尺度目标检测-笔记练习(PyTorch)
  • FPGA FMC 接口
  • 【仿muduo库实现并发服务器】LoopThreadPool模块
  • Linux安装JDK和Maven
  • 多探头分布式雷达测流系统解决方案概述
  • 洛谷P1379 八数码难题【A-star】
  • 目标检测在国防和政府的应用实例
  • vue-i18n+vscode+vue 多语言使用
  • 缺乏对新成员的有效融入机制,如何改进
  • 学习昇腾开发的第12天--安装第三方依赖
  • 【Linux基础知识系列】第三十八篇 - 打印系统与 PDF 工具
  • Ubuntu 20.04 下 OpenVINO 2024 安装与配置
  • 业界优秀的零信任安全管理系统产品介绍
  • 基于 51 单片机做的二十四点小游戏
  • MongoDB 常用增删改查方法及示例
  • stm32 单片机主要优点有哪些?
  • 【Docker基础】Docker数据卷:命名卷(Named Volumes)详解
  • 从 0 到 1 构建可视化限流演示:React + Framer Motion 实现 Token Bucket 动画
  • Camera相机人脸识别系列专题分析之十五:人脸特征检测FFD算法之libcvface_api.so算法API详细注释解析
  • 解决 GitHub Actions 中 S3 部署文件堆积问题的完整指南
  • 使用tensorflow的线性回归的例子(二)
  • 数字雨动画背景
  • TensorFlow源码深度阅读指南
  • 工作中常用的Git操作命令(一)
  • 深度解析服务级别协议(SLA):保障业务稳定性的关键承诺
  • RabbitMQ简单消息发送