0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用MATLAB的支持向量机解决方案

MATLAB 来源:MATLAB 2025-10-21 15:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

支持向量机 (SVM) 是一种有监督机器学习算法,它能找到分离两个类的数据点的最佳超平面。

支持向量机的工作原理

支持向量机是一种有监督机器学习算法,常用于信号处理、自然语言处理 (NLP)、语音和图像识别等应用中的分类和回归问题。SVM 算法的目标是找到一个超平面,该超平面以可能的最佳效果将一个类的数据点与另一个类的数据点分离。此超平面在二维空间中是一条直线,在 n 维空间中是一个平面,其中 n 是数据集中每个观测值的特征数量。数据中可能存在多个可用于分离类的超平面。SVM 算法推断出的最佳超平面是使两个类之间边距最大化的超平面。

边距是指平行于超平面的内部不含数据点的平板的最大宽度。标记此平行平板的边界且最接近分离超平面的数据点就是支持向量。支持向量指用于确定分离超平面的位置的训练观测值的子集。

03f78c86-a9b0-11f0-8c8f-92fbcf53809c.png

使用 SVM 算法最大化两个类之间的边距宽度,这两个类分别用加号和减号表示并由超平面分离。

SVM 建模的工作流

构建支持向量机模型的典型工作流包括以下步骤:

预处理数据

使用原始数据训练 SVM 模型通常效果不佳,因为存在缺失值、离群值以及信息冗余。您可以执行数据清洗来处理缺失值或离群值,并执行特征提取从数据中选择合适的特征集。

特征提取将原始数据变换为可以处理的数值特征,同时保留原始数据集中的信息。降维方法,如主成分分析 (PCA),可以减少特征数量,同时保留最重要的信息。这种方法使支持向量机模型更稳健,能够处理复杂数据集。

在数据处理完成后,将数据拆分为训练集和测试集。使用交叉验证以最佳方式拆分数据。SVM 模型基于训练数据集进行训练,测试数据集用于评估模型在陌生数据上的性能。

选择核函数

根据数据分布,选择合适的核函数(线性、多项式、RBF 等)。当无法线性分离时,核函数将数据变换为更高维空间,使类更容易分离。

为 SVM 选择合适的核函数

045096f0-a9b0-11f0-8c8f-92fbcf53809c.png

训练 SVM 模型

构建 SVM 模型并使用训练数据集对其进行训练。训练支持向量机 (SVM) 相当于求解一个二次优化问题,其目标是找到一个能够最大化类别之间边距的超平面。支持向量机算法识别支持向量并确定最佳超平面。使用经过训练的模型基于最佳超平面对新数据和陌生数据点进行分类。

评估 SVM 模型

使用测试数据集测试模型。使用准确度、混淆矩阵、精确率、F1 分数或召回率等度量评估模型性能。

调节超参数

调整超参数以提高模型性能。使用贝叶斯优化等搜索方法,通过概率模型找到最佳超参数。

SVM 分类器的类型

线性支持向量机

线性 SVM 用于有且只有两个类的线性可分数据。这种类型的支持向量机算法使用线性决策边界来分离这两个类的所有数据点。

该 SVM 算法只能为线性可分问题找到这样的超平面。对于大多数复杂任务(其中数据不可分),支持向量机可以使用软边距,获得一个可分离许多(但并非所有)数据点的超平面。算法最大化软边距,允许少量误分类。

04a85fb6-a9b0-11f0-8c8f-92fbcf53809c.png

软边距 SVM 允许 class -1(蓝色)中存在一个数据点误分类。(参阅 MATLAB 文档[1]。)

非线性支持向量机

SVM 也用于非线性分类和回归任务。对于非线性可分数据,非线性支持向量机使用核函数来变换特征。变换后特征的数量由支持向量的数量确定。

核函数将数据映射到一个不同的(通常是更高维的)空间。这种变换可以将复杂的非线性决策边界简化为更高维映射特征空间中的线性边界,从而使类更容易分离。在此过程(通常称为核方法)中,不必对数据进行显式变换,否则计算成本会很高。非线性数据的核函数包括多项式、径向基函数(高斯)和多层感知器机或 Sigmoid(神经网络)。

050258fe-a9b0-11f0-8c8f-92fbcf53809c.png

在 MATLAB 中使用高斯核函数训练的非线性 SVM 分类器。(请参阅代码[2]。)

支持向量回归

SVM 主要用于分类任务,但也可经过调整用于回归。SVM 回归被视为一种非参数化方法,因为它依赖核函数。在线性回归中,响应变量(输出)和预测变量(输入)之间的关系已知。与之不同,支持向量回归 (SVR) 的目标是找到这种关系。SVR 通过识别在指定的容差边距(简称为边距)内能够最优拟合数据的超平面来实现这一点,同时保持预测误差为最小。

SVR 的工作原理与支持向量机分类器相同,只是 SVR 旨在预测连续值而非离散类。SVR 可以通过使用不同的核类型处理线性和非线性数据。使用核方法,您可以通过将数据映射到高维空间来执行非线性回归。

为什么支持向量机很重要

SVM 的优点

SVM 是机器学习和人工智能中最受欢迎的有监督学习算法之一,主要是因为它们能有效处理高维数据和复杂决策边界。支持向量机的主要优点包括:

数据通用性。SVM 在处理高维和非结构化数据集时特别有效。支持向量机可用于线性和非线性数据,使其广泛适用于许多应用。

稳健性。由于正则化参数控制在训练数据上实现低误差和最小化权重范数之间的权衡,SVM 在高维空间中不易出现过拟合。

可解释性。线性 SVM 分类器创建的决策边界清晰且可解释,有助于理解模型预测并作出明智决策。

准确性。SVM 对于较小数据集非常准确和有效,尤其是在维数超出采样数的情况下。

SVM 应用

上述优点使支持向量机成为多种应用中数据建模的极具吸引力的选择,这些应用有:

自然语言处理。SVM 广泛用于 NLP 任务,如通过将文本分为若干类别来进行垃圾邮件检测和情绪分析。

计算机视觉。SVM 可用于图像分类任务,如手写识别、人脸或目标检测,以及作为医学诊断工具对可能指示存在肿瘤的 MRI 影像进行分类。

信号处理。SVM 也应用于信号数据,用于异常检测、语音识别和生物医学信号分析等任务。

异常检测。SVM 经过训练可以找到将正常数据与异常分离的超平面。

生物信息学。SVM 应用于生物数据分类,如蛋白质分类和基因表达谱分析。

055c589a-a9b0-11f0-8c8f-92fbcf53809c.png

使用 SVM 分类器进行分类的高光谱图像。(请参阅 MATLAB 代码[3]。)

SVM 的缺点

与所有机器学习模型一样,支持向量机也有局限性:

大型数据集。由于高计算成本和内存要求,SVM 不适合处理大型数据集。虽然核方法使支持向量机能够处理非线性数据,但其计算成本高昂。SVM 需要求解二次优化问题。对于大型数据集,核矩阵也会很大,从而增加了内存要求。

含噪数据。SVM 不适合处理含噪数据,因为 SVM 旨在使类之间的边距最大化。

可解释性。虽然线性 SVM 可解释,但非线性 SVM 不可解释。非线性 SVM 中涉及的复杂变换使决策边界难以解释。

05d8fa62-a9b0-11f0-8c8f-92fbcf53809c.png

常见的机器学习算法的预测能力和可解释性比较。

使用 MATLAB 的支持向量机

使用 MATLAB 和 Statistics and Machine Learning Toolbox,您可以训练、评估 SVM 模型和使用 SVM 模型进行预测以用于分类和回归。MATLAB 提供了构建高效支持向量机模型的工具,涵盖特征选择和超参数调节以及交叉验证和性能度量等。MATLAB 中的低代码机器学习 App 使您能够以交互方式训练和评估 SVM,生成 C/C++ 代码并部署到 CPU微控制器,无需自己编写代码。

预处理数据

为确保结果准确,数据必须无离群值且准备好用于模型训练。使用 MATLAB,您可以执行清洗任务,如处理缺失值和离群值、归一化数据和平滑数据。您可以使用数据预处理实时编辑器任务或数据清洗器以交互方式预处理数据。这些 App 还可以生成代码。

MATLAB 支持各种数据类型,如时间序列数据、文本、图像和音频。专用工具箱,如 Audio Toolbox 和 Signal Processing Toolbox,提供特征提取功能,可用于测量不同领域的独特特征并重用中间计算。

训练 SVM 模型

您可以使用 fitcsvm 和 fitrsvm 函数训练 SVM 模型以执行二类分类或多类分类以及回归任务。对于非线性支持向量机,支持若干核函数(如线性、多项式和 RBF),您也可以创建并指定自定义核函数(如 Sigmoid)。

您还可以使用分类学习器和回归学习器以交互方式训练 SVM 模型。通过这些 App,您可以执行从训练到调节的 SVM 模型完整工作流,而无需编写代码。您可以使用这些 App 浏览数据、选择特征、执行自动化训练、优化超参数和评估结果。

0633a610-a9b0-11f0-8c8f-92fbcf53809c.png

使用分类学习器创建的验证混淆矩阵。(请参阅 MATLAB 代码[4]。)

这些 App 可以生成 C/C++ 代码并导出 SVM 模型,便于您共享结果并在 App 外进一步研究。例如,您可以从分类学习器或回归学习器导出支持向量机模型,并将其导入试验管理器中以执行其他任务,如更改训练数据、调整超参数搜索范围和运行自定义训练试验。

进行预测

在训练 SVM 模型后,使用 predict 函数预测标签。您可以在 Simulink 中使用 ClassificationSVM Predict 或 RegressionSVM Predict 模块对经过训练的 SVM 模型进行仿真

评估结果

您可通过编程方式使用 confusionchart 和 rocmetrics 等函数或以交互方式评估 SVM 模型的性能。使用机器学习 App 可以比较不同模型的性能,找到最适合您的数据的模型。

在分类学习器中训练分类器后,您可以基于准确性比较模型,通过绘制类预测可视化分类器结果,以及使用混淆矩阵、ROC 曲线或精确率召回率曲线检查性能。

同样,在回归学习器中,您可以基于模型度量比较模型,在响应图中或通过绘制实际响应对预测响应的图可视化回归结果,以及使用残差图评估模型。

0691600c-a9b0-11f0-8c8f-92fbcf53809c.png

在回归学习器中训练的回归模型的实际响应对预测响应的图。点越接近线,预测效果越好。(请参阅 MATLAB 代码[5]。)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • matlab
    +关注

    关注

    189

    文章

    3018

    浏览量

    237661
  • 支持向量机
    +关注

    关注

    0

    文章

    72

    浏览量

    12979
  • 机器学习
    +关注

    关注

    66

    文章

    8541

    浏览量

    136247

原文标题:什么是支持向量机(SVM)?

文章出处:【微信号:MATLAB,微信公众号:MATLAB】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于支持向量的分类问题

    小菜鸟一枚 ,有哪位大神能提供部分基于支持向量积的分类鉴别问题的MATLAB编码,思路过程,不胜感激
    发表于 04-03 18:54

    基于支持向量的预测函数控制

    基于支持向量的预测函数控制 Predictive Functional Control Based on Support Vector Machine
    发表于 03-17 09:24 21次下载

    特征加权支持向量

    该文针对现有的加权支持向量(WSVM)和模糊支持向量(FSVM)只考虑样本重要性而没有考虑特
    发表于 11-21 11:15 15次下载

    基于改进支持向量的货币识别研究

    首先,预抽取支持向量以减少训练样本数量,大大缩减训练时间;然后,用缩减后的样本对改进后的分类支持向量进行货币识别,改进后的
    发表于 12-14 14:57 14次下载

    基于支持向量(SVM)的工业过程辨识

    支持向量应用到典型的时变、非线性工业过程 连续搅拌反应釜的辨识中, 并与BP 神经网络建模相比较, 仿真结果表明了支持向量
    发表于 03-30 16:12 42次下载
    基于<b class='flag-5'>支持</b><b class='flag-5'>向量</b><b class='flag-5'>机</b>(SVM)的工业过程辨识

    基于标准支持向量的阵列波束优化及实现

    为了考察基于支持向量算法的波束形成器在实际水声环境中的主瓣宽度、旁瓣级以及阵增益等性能,将标准支持向量
    发表于 11-10 11:03 13次下载
    基于标准<b class='flag-5'>支持</b><b class='flag-5'>向量</b><b class='flag-5'>机</b>的阵列波束优化及实现

    多分类孪生支持向量研究进展

    孪生支持向量因其简单的模型、快速的训练速度和优秀的性能而受到广泛关注.该算法最初是为解决二分类问题而提出的。不能直接用于解决现实生活中普遍存在的多分类问题.近来,学者们致力于将二分类孪生支持
    发表于 12-19 11:32 0次下载

    基于支持向量的测深激光信号处理

    针对浅海探测中激光回波噪声源多、信噪比低,传统非加权最小二乘支持向量和加权最小二乘支持向量
    发表于 12-21 13:46 0次下载

    支持向量的故障预测模型

    针对现有的故障预测技术无法从整体上反映系统性能下降趋势等问题,提出一种基于健康度分析的故障预测方法。首先,在支持向量回归算法基础上构造多输出支持
    发表于 12-29 11:24 0次下载

    关于支持向量(SVMs)

    支持向量(Support Vector Machine: SVM)是一种非常有用的监督式机器学习算法
    的头像 发表于 04-02 08:52 4556次阅读
    关于<b class='flag-5'>支持</b><b class='flag-5'>向量</b><b class='flag-5'>机</b>(SVMs)

    什么是支持向量 什么是支持向量

    支持向量,英文为Support Vector Machine,简称SV(论文中一般简称SVM)。它是一 种监督式学习的方法,它广泛的应用于统计分类以及回归分析中。
    发表于 01-28 16:01 2.3w次阅读
    什么是<b class='flag-5'>支持</b><b class='flag-5'>向量</b><b class='flag-5'>机</b> 什么是<b class='flag-5'>支持</b><b class='flag-5'>向量</b>

    介绍支持向量的基础概念

    支持向量(Support Vector Machine)是一种较知名的机器学习算法,该算法由俄罗斯数学家Vladimir Vapnik创立。
    的头像 发表于 04-28 09:09 1525次阅读
    介绍<b class='flag-5'>支持</b><b class='flag-5'>向量</b><b class='flag-5'>机</b>的基础概念

    支持向量(核函数的定义)

    根据机器学习相关介绍(10)——支持向量(低维到高维的映射),支持向量可通过引入φ(x)函数
    的头像 发表于 05-20 10:41 1376次阅读
    <b class='flag-5'>支持</b><b class='flag-5'>向量</b><b class='flag-5'>机</b>(核函数的定义)

    支持向量(原问题和对偶问题)

    本文主要介绍原问题(PRIME PROBLEM)和对偶问题(DUAL PROBLEM),支持向量优化问题可通过原问题向对偶问题的转化求解。
    的头像 发表于 05-25 09:31 2186次阅读

    支持向量(兵王问题描述)

    本文主要内容为采用支持向量(SVM)解决国际象棋兵王问题。
    的头像 发表于 06-09 17:52 2830次阅读
    <b class='flag-5'>支持</b><b class='flag-5'>向量</b><b class='flag-5'>机</b>(兵王问题描述)