什么是支持向量回归

什么是支持向量回归?

支持向量回归(Support Vector Regression,简称SVR)是一种利用支持向量机(Support Vector Machine,简称SVM)来解决回归问题的方法。与传统的回归算法不同,SVR基于结构风险最小化原则,通过定义一条“边界”或者“管道”,让训练样本尽可能地落在边界内或者管道内,来实现回归任务。

算法原理

SVR的算法原理可以概括为以下几个步骤:
1. 将数据映射到高维空间(若需要):如果我们的数据集在原始特征空间中不易分割,可以通过核函数将数据映射到高维空间,从而使得数据在高维空间中变得线性可分。
2. 定义回归模型:SVR通过定义一个预测函数,将输入数据映射到输出结果。一般而言,SVR采用以下形式的预测函数:$$f(\mathbf{x}) = \mathbf{w} \cdot \mathbf{x} + b$$其中,$\mathbf{w}$是权重向量,$\mathbf{x}$是输入样本,$b$是偏置。回归模型的目标是通过学习$\mathbf{w}$和$b$来尽可能准确地预测目标值。
3. 定义损失函数:SVR定义了一种损失函数来衡量预测值和真实值之间的差距,并通过最小化损失函数来拟合数据。一般而言,SVR使用的损失函数是经验风险和正则项之和,可以用如下形式表示:$$\min_{\mathbf{w}, b} \frac{1}{2}||\mathbf{w}||^2 + C \sum_{i=1}^{n} (\xi_i + \xi_i^)$$其中,$||\mathbf{w}||$是权重向量的范数,$\xi_i$和$\xi_i^$是松弛变量,$C$是正则化参数。这个损失函数的第一项是正则化项,用来防止过拟合,第二项是经验风险项,用来衡量模型对训练集样本的预测误差。
4. 求解优化问题:通过求解上述损失函数的优化问题,可以得到最优的权重向量$\mathbf{w}$和偏置$b$。这个求解过程可以通过等价的二次规划形式来进行,通过拉格朗日乘子法,可以得到如下优化问题:$$\min_{\mathbf{w}, b, \boldsymbol{\xi}, \boldsymbol{\xi}^} \frac{1}{2}||\mathbf{w}||^2 + C \sum_{i=1}^{n} (\xi_i + \xi_i^)$$同时满足以下约束条件:$$y_i – \mathbf{w} \cdot \mathbf{x}_i – b \leq \varepsilon + \xi_i$$ $$\mathbf{w} \cdot \mathbf{x}_i + b – y_i \leq \varepsilon + \xi_i^$$ $$\xi_i, \xi_i^ \geq 0$$其中,$y_i$是第$i$个样本的真实值,$\varepsilon$是一个用户定义的容忍误差。

公式推导

首先,我们要推导出SVR模型的优化目标函数。根据上述定义的损失函数,我们可以将其转化为一个等价的二次规划问题。

对于上述的优化问题,引入拉格朗日乘子$\alpha_i$和$\alpha_i^$,可以得到拉格朗日函数:$$L(\mathbf{w}, b, \boldsymbol{\xi}, \boldsymbol{\xi}^, \boldsymbol{\alpha}, \boldsymbol{\alpha}^, \boldsymbol{\mu}, \boldsymbol{\mu}^) = \frac{1}{2} ||\mathbf{w}||^2 + C \sum_{i=1}^{n} (\xi_i + \xi_i^) + \sum_{i=1}^{n} (\alpha_i (\varepsilon + \xi_i – y_i + \mathbf{w} \cdot \mathbf{x}_i + b) + \alpha_i^ (\varepsilon + \xi_i^ + y_i – \mathbf{w} \cdot \mathbf{x}_i – b) – \mu_i \xi_i – \mu_i^ \xi_i^ – \sum_{i=1}^{n} (\alpha_i + \alpha_i^) (\varepsilon + \xi_i – y_i + \mathbf{w} \cdot \mathbf{x}_i + b))$$其中,$\boldsymbol{\mu}$和$\boldsymbol{\mu}^$是松弛变量$\boldsymbol{\xi}$和$\boldsymbol{\xi}^$的拉格朗日乘子。

然后,我们需要求解以上优化问题的对偶问题,通过对拉格朗日函数求极小极大,可以得到如下对偶问题:$$\max_{\boldsymbol{\alpha}, \boldsymbol{\alpha}^} \min_{\mathbf{w}, b, \boldsymbol{\xi}, \boldsymbol{\xi}^} L(\mathbf{w}, b, \boldsymbol{\xi}, \boldsymbol{\xi}^, \boldsymbol{\alpha}, \boldsymbol{\alpha}^, \boldsymbol{\mu}, \boldsymbol{\mu}^*)$$

对于该对偶问题,我们可以通过推导得到以下结果:

  1. 对$\mathbf{w}$求偏导并令其等于零,可以得到:$$\mathbf{w} = \sum_{i=1}^{n} (\alpha_i – \alpha_i^*) \mathbf{x}_i$$

  2. 对$b$求偏导并令其等于零,可以得到:$$\sum_{i=1}^{n} (\alpha_i – \alpha_i^*) = 0$$

  3. 对$\boldsymbol{\xi}$求偏导并令其等于零,可以得到:$$C – \alpha_i – \mu_i = 0$$

  4. 对$\boldsymbol{\xi}^$求偏导并令其等于零,可以得到:$$C – \alpha_i^ – \mu_i^* = 0$$

将上述结果代入拉格朗日函数,可以得到如下对偶问题:$$\max_{\boldsymbol{\alpha}, \boldsymbol{\alpha}^} \sum_{i=1}^{n} (\alpha_i – \alpha_i^) – \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n} (\alpha_i – \alpha_i^) (\alpha_j – \alpha_j^) \mathbf{x}_i \cdot \mathbf{x}_j$$同时满足以下约束条件:$$0 \leq \alpha_i, \alpha_i^ \leq C$$ $$\sum_{i=1}^{n} (\alpha_i – \alpha_i^) = 0$$其中,$\mathbf{x}_i \cdot \mathbf{x}_j$表示$\mathbf{x}_i$和$\mathbf{x}_j$的内积。

计算步骤

根据以上推导的公式,我们可以通过以下步骤来进行SVR的计算:

  1. 准备数据集:准备一个带有输入样本$\mathbf{X}$和对应目标值$\mathbf{y}$的数据集。

  2. 数据预处理:如果需要,对数据集进行预处理,例如特征缩放、标准化等操作。

  3. 定义核函数:根据数据集的特点,选择适当的核函数,例如线性核、多项式核、高斯核等。

  4. 构建优化问题:根据上述公式推导的结果,构建对应的二次规划问题。

  5. 求解优化问题:利用数学优化算法,求解得到最优的拉格朗日乘子$\boldsymbol{\alpha}$和$\boldsymbol{\alpha}^*$。

  6. 计算权重向量和偏置:利用公式推导中的结果,计算得到最优的权重向量$\mathbf{w}$和偏置$b$。

  7. 预测:对新的输入样本,利用预测函数进行预测:$$f(\mathbf{x}) = \mathbf{w} \cdot \mathbf{x} + b$$

复杂Python代码示例

下面是一个复杂的Python代码示例,演示了如何使用SVR进行回归分析。首先,我们需要导入需要的库和模块:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.svm import SVR

然后,我们需要生成一个虚拟数据集作为示例:

# 生成数据集
np.random.seed(0)
X = np.sort(5 artical cgpt2md_gpt.sh cgpt2md_johngo.log cgpt2md_johngo.sh cgpt2md.sh _content1.txt _content.txt current_url.txt history_url history_urls log nohup.out online pic.txt seo test.py topic_gpt.txt topic_johngo.txt topic.txt upload-markdown-to-wordpress.py urls np.random.rand(100, 1), axis=0)
y = np.sin(X).ravel()
y[::5] += 3 artical cgpt2md_gpt.sh cgpt2md_johngo.log cgpt2md_johngo.sh cgpt2md.sh _content1.txt _content.txt current_url.txt history_url history_urls log nohup.out online pic.txt seo test.py topic_gpt.txt topic_johngo.txt topic.txt upload-markdown-to-wordpress.py urls (0.5 - np.random.rand(20))

接下来,我们可以使用SVR进行回归分析:

# 创建SVR模型
svr = SVR(kernel='rbf', C=1e3, gamma=0.1)

# 训练模型
svr.fit(X, y)

# 预测
y_pred = svr.predict(X)

# 显示结果
plt.scatter(X, y, color='black', label='data')
plt.plot(X, y_pred, color='red', label='SVR')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Support Vector Regression')
plt.legend()
plt.show()

在这个示例中,我们使用径向基函数(RBF)作为核函数,设置了C和gamma参数,然后进行训练和预测,并将结果显示为散点图和曲线。这样我们就可以通过图形来观察SVR的回归效果。

代码细节解释

在代码示例中,我们首先通过numpy库生成了一个带有噪声的虚拟数据集。然后,我们创建了一个SVR对象,选择了RBF作为核函数,并设置了C和gamma参数。接下来,我们使用fit方法对模型进行训练,并使用predict方法对新的输入样本进行预测。最后,我们使用matplotlib库绘制了数据集、回归线和图例,展示了SVR模型的结果。

SVR的关键在于选择合适的核函数和调整参数,对于不同的数据集,可能需要尝试不同的核函数和参数组合。此外,SVR对数据集的特征缩放敏感,我们需要注意对数据进行适当的预处理,以使得特征具有相似的尺度。

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/821942/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python数据可视化之绘制抖动的带状图(图文并茂版!!!)

    绘制抖动的带状图 * – 数据准备 – 需要抖动的带状图的原因 – 绘制抖动的带状图 – + 注意:重要参数 + 总结 数据准备 •…

    人工智能 2023年7月8日
    071
  • 1×1卷积(Conv 1*1)的作用

    * – 一、来源 – 二、作用 – + 1. 添加非线性特性 + 2. 对通道数实现升维/降维 + 3. 实现跨通道的信息交互与整合 一、来源 …

    人工智能 2023年7月13日
    050
  • 一些图像处理的mask操作

    先知晓的基础知识: 1、掩码与copyTo组合 Image.copyTo(imageROI,mask); 把mask和Image交运算。mask中像素值为0的点,对应的image中…

    人工智能 2023年7月19日
    051
  • 哈工大 信息安全 实验 Snort与单台防火墙联动实验

    XX大学XX学院《网络攻击与防御》实验报告 实验报告撰写要求 实验操作是教学过程中理论联系实际的重要环节,而实验报告的撰写又是知识系统化的吸收和升华过程,因此,实验报告应该体现完整…

    人工智能 2023年6月4日
    075
  • 基于SVM算法的股票预测分析

    基于SVM算法的股票预测分析 1.数据集选取与描述 由于股票数据的混沌性、无序性,不适宜选取太多的数据作为模型训练的数据集。故本文选出的数据是”温氏股份”2…

    人工智能 2023年6月15日
    0161
  • 浅谈GCN

    文章目录 一:GCN与GNN的区别 二:GCN原理 * – Step1: 求图模型的邻接矩阵和度矩阵 Step2:进行特征计算 + ① 邻接矩阵的改变 ② 度矩阵的改变…

    人工智能 2023年7月26日
    052
  • 计算线性回归、指数回归公式

    最近要计算线性回归、指数回归的公式。就整理下吧,以便帮助他人,少走弯路。 发现网上线性回归的资料还算详细,但是指数回归资料很少,还会误导人。 线性回归是利用数理统计中回归分析,来确…

    人工智能 2023年6月17日
    081
  • 深度学习框架人脸识别介绍

    简介 基于深度卷积网络的人脸识别,流程基本上一致,如下图所示,可以看做是一个基本框架: 图1 人脸识别基本框架 由上图,可以看到,人脸识别分为以下几个主要步骤: 输入图像:可以做一…

    人工智能 2023年7月18日
    064
  • 通话降噪ENC

    通话降噪有ENC及CVC,今天则介绍一下ENC降噪技术,ENC(environment noise cancellation)环噪消除,主要是针对通话中针对环境噪声进行处理,利用一…

    人工智能 2023年5月27日
    078
  • 【目标检测】【边界框回归】Bounding-Box regression

    最近开始看目标检测的论文,第一篇为R-CNN论文,是两阶段目标检测的开山奠基之作。论文中的损失函数包含了边界框回归,且在R-CNN论文里面有详细的介绍。 一、为什么要做边界框回归?…

    人工智能 2023年6月16日
    064
  • 从聚类的角度重新审视 Mask Transformer

    全景分割是一个计算机视觉问题,是许多现实世界AI应用的核心任务。由于其复杂性,以前的工作通常将全景分割分为语义分割(为图像中的每个像素分配语义标签,例如”人&#8221…

    人工智能 2023年7月17日
    042
  • 面向过程程序设计——循环结构程序设计(1)

    本题要求对两个正整数m和n(m≤n)编写程序,计算序列和m2+1/m+(m+1)2+1/(m+1)+⋯+n2+1/n。 输入在一行中给出两个正整数m和n(m≤n),其间以空格分开。…

    人工智能 2023年6月27日
    091
  • 【Python】国内生产总值分析预测

    ✨博文作者 wangzirui32💖 喜欢的可以 点赞 收藏 关注哦~~👏 我的第162篇原创作品👉本文首发于CSDN,未经许可禁止转载hello,大家好,我是wangzirui3…

    人工智能 2023年6月16日
    0128
  • 3.yolov5目标检测-常用评估指标

    yolov5官网的模型评估对比图 需要借助狼来了的故事了解:真阳性,假阳性,假阴性,真阴性。 IOU:交并比,用来筛选最终预测出来的边界框。 通过求标注和预测的交并比,可以得到一个…

    人工智能 2023年7月27日
    044
  • DEFORMABLE DETR详解

    1.解决问题 DETR 需要比现有的目标检测器更长的训练时间来收敛。 DETR在检测小物体方面的性能相对较低,并且无法从高分辨率特征地图中检测到小物体。 可变形卷积可以识别重要特征…

    人工智能 2023年6月23日
    067
  • 【CTA系列】复合中短周期双均线策略

    所有策略的出场规则都摒弃了原本传统的信号反转出场,调整为盈亏 比率达到固定比率的止盈止损出场,止盈:止损固定为 4:1。 2.SMA策略分析 双均线策略已在第一部分有所介绍,具体进…

    人工智能 2023年6月27日
    051
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球