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

支持向量机的回归用法详解

支持向量机的回归用法详解

在机器学习的广阔领域中,支持向量机(SVM)是一种极具影响力的算法,它不仅在分类任务上表现出色,在回归任务中同样有着独特的应用价值。本文将深入探讨 SVM 的回归用法,包括其基本原理与代码实现。

一、SVM 回归的基本原理

SVM 作为一种强大的机器学习算法,其能力不仅局限于分类任务,在线性回归和非线性回归领域同样有着出色的表现。在分类任务中,SVM 的目标函数旨在最小化某个特定值(如\(\frac{\lambda}{2}||w||^2\) ),同时让训练集中的点尽可能远离自己类别一侧的支持向量,以实现分类边界的最大化间隔。而在 SVM 回归中,虽然目标函数的形式与分类类似,但其核心目标发生了转变:训练集中的点需要尽量拟合到一个线性模型中。

在常规的回归模型里,均方误差(MSE)是常用的损失度量方式。然而,SVM 回归采用了一种独特的损失计算方式。在 SVM 回归中,我们需要预先定义一个常量\(\epsilon > 0\)。对于任意一个数据点\((x_i, y_i)\) ,如果\(|y_i - f(x_i)| \leq \epsilon\)(其中\(f(x_i)=w^Tx_i + b\)),那么该点完全没有损失;只有当\(|y_i - f(x_i)| > \epsilon\)时,才会产生损失,且对应的损失值为\(|y_i - f(x_i)| - \epsilon\) 。

从图形上直观理解,存在一个以回归超平面为中心、宽度为\(2\epsilon\)的蓝色条带。位于条带内的点由于误差在\(\epsilon\)范围内,所以没有损失;而位于条带外的点则会产生损失,损失大小可以用从该点到条带边界的红色线长度来表示。

SVM 回归模型的核心思想在于:在保证所有样本点在\(\epsilon\)偏差范围内的前提下,让回归超平面尽可能地平缓。这样做的目的是使得超平面两侧的数据样本之间的相对距离达到最小,从而实现更好的回归拟合效果。例如,在不同的回归超平面选择中,能让更多样本点处于\(\epsilon\)范围内且超平面更平缓的那一个,就是更优的选择。

但在实际应用场景中,数据往往存在异常点。为了应对这种情况,SVM 回归引入了与分类类似的软间隔机制,允许一部分样本点位于间隔边界之外,从而增强模型的鲁棒性和泛化能力。

二、SVM 回归代码实现

在 Python 的 Scikit-learn 库中,提供了便捷的函数来实现 SVM 回归。其中,SVR类支持核方法,类似于分类问题中的SVC类;LinearSVR类则对应分类中的LinearSVC类,适用于线性回归场景。

1. 线性 SVM 回归

以下代码展示了如何使用LinearSVR进行线性回归,并通过设置不同的\(\epsilon\)值来观察模型效果:

 

import numpy as np

from sklearn.svm import LinearSVR

np.random.seed(42)

m = 50

X = 2 * np.random.randn(m, 1)

y = (4 + 3 * X + np.random.randn(m, 1)).ravel()

svm_reg1 = LinearSVR(epsilon=1.5, random_state=42)

svm_reg2 = LinearSVR(epsilon=0.5, random_state=42)

svm_reg1.fit(X, y)

svm_reg2.fit(X, y)

运行上述代码后,得到两个线性 SVM 回归模型。其中,设置\(\epsilon = 1.5\)的模型具有较大的间隔,意味着它对数据点的拟合要求相对宽松;而\(\epsilon = 0.5\)的模型间隔较小,对数据点的拟合更加严格。

2. 非线性 SVM 回归

当处理非线性回归问题时,需要指定合适的核函数。以多项式核函数为例,通过设置kernel="poly" 、degree=2(多项式阶次)、C=100(惩罚系数)、epsilon=0.1等参数,可以构建非线性 SVM 回归模型,具体代码如下:

 

from sklearn.svm import SVR

svm_poly_reg1 = SVR(kernel="poly", degree=2, C=100, epsilon=0.1, gamma="auto")

svm_poly_reg2 = SVR(kernel="poly", degree=2, C=0.01, epsilon=0.1, gamma="auto")

svm_poly_reg1.fit(X, y)

svm_poly_reg2.fit(X, y)

运行结果显示,超参数C的值对模型的正则化程度有着显著影响。C值较大(如C=100)时,模型的正则化程度较小,几乎不对模型复杂度进行约束;而C值较小(如C=0.01)时,模型的正则化程度较大,容易出现过度正则化现象,导致模型对训练数据拟合过度,在新数据上的泛化能力下降 。

综上所述,SVM 回归通过独特的原理和灵活的参数设置,在回归任务中展现出强大的适应性。无论是线性回归还是非线性回归问题,都能通过合理调整模型参数,找到合适的解决方案。但在实际应用中,也需要根据数据特点谨慎选择参数,避免出现过拟合或欠拟合的情况,以充分发挥 SVM 回归的优势。

上述文章全面解析了 SVM 回归,若你觉得某些部分需要展开,或有其他补充需求,欢迎随时和我说。

http://www.xdnf.cn/news/387883.html

相关文章:

  • “爱生活”小项目问题总结
  • AVL树解析
  • 控制台打印带格式内容
  • Python Cookbook-7.9 访问 MySQL 数据库
  • 游戏引擎学习第271天:生成可行走的点
  • 【计算机视觉】OpenCV实战项目:ETcTI_smart_parking智能停车系统深度解析
  • 毫米波雷达点云SLAM系统
  • 【python】基础知识点100问
  • .Net HttpClient 使用请求数据
  • 复现nn-Unet模型 实验报告
  • 【RabbitMQ】 RabbitMQ高级特性(一)
  • MYSQL数据库集群高可用和数据监控平台
  • LLM 论文精读(七)Rethinking Reflection in Pre-Training
  • 优化审核模块响应时间从8s降至1.2s的数据库解决方案
  • 初探机器学习与深度学习
  • 产教融合下的康养休闲旅游服务实训室建设要点
  • 什么是卷积神经网络
  • 北斗导航 | 深度学习与北斗导航定位算法结合思路、原理、公式、Python+matlab代码
  • 2025数维杯挑战赛A题【空中芭蕾——蹦床运动的力学行为分析】原创论文分享
  • LabVIEW的PID参数自适应控制
  • MCP(大模型协议文本)服务 的详细解析
  • stm32之SPI
  • 【iOS】Tagged Pointer
  • Linux 第七讲 --- 工具篇(二)gcc/g++与文件编译
  • 用户登录构件示例
  • RL+search = Deep research
  • MySQL 数据库集群部署、性能优化及高可用架构设计
  • 一文了解B+树的删除原理
  • LiteLLM:统一API接口,让多种LLM模型调用如臂使指
  • 【软件工程】基于机器学习的多缺陷定位