SVM算法的介绍

一、SVM算法的介绍

1.什么是SVM算法?

SVM(Support Vector Machine)是一种常见的监督学习算法,用于进行二分类或多分类任务。它的主要思想是找到一个最优的超平面,将不同类别的样本分隔开

在这里插入图片描述

超平面最大间隔介绍:

在这里插入图片描述

上左图显示了三种可能的线性分类器的决策边界:

虚线所代表的模型表现非常糟糕,甚至都无法正确实现分类。其余两个模型在这个训练集上表现堪称完美。

但是它们的决策边界与实例过于接近,导致在面对新实例时,表现可能不会太好

右图中的实线代表SM分类器的决策边界,不仅分离了两个类别,且尽可能远离最近的训练实例

2.硬间隔和软间隔
  • 硬间隔

    硬间隔指的是当数据线性可分时,支持向量机通过寻找一个可以完全将不同类别的样本分开的超平面。在硬间隔中,SVM的目标是使所有样本都满足线性约束条件,即样本点距离超平面的距离大于等于一个阈值,通常为1。这意味着所有样本都应该被正确分类,并且没有容忍错误分类的余地。硬间隔适用于数据线性可分的情况,但对于噪声和离群点较多的数据集,可能会导致过拟合。

    当有一个异常值的鸢尾花数据:左图的数据根本找不出硬间隔,而右图最终显示的决策边界与我们之前所看到的无异常值时的决策边界也大不相同,可能无法很好地泛化。

    在这里插入图片描述

  • 软间隔

    软间隔是为了处理线性不可分的情况而引入的概念。当数据线性不可分时,硬间隔会导致无法找到满足线性约束的超平面。软间隔允许一些样本点出现在超平面的错误一侧,通过引入松弛变量(Slack Variable)来允许一定程度的错误分类。软间隔的目标是在尽量保持数据分离的同时,最小化错误分类和松弛变量的总和。软间隔允许一定程度的容忍错误分类,从而增加模型的鲁棒性和泛化能力

    软间隔的引入使得支持向量机可以处理线性不可分的情况,并且对噪声和离群点具有一定的容错能力。然而,软间隔引入了一个新的调节参数C,用于平衡间隔大小和错误分类的权重。较大的C值将更加关注正确分类,而较小的C值将更加容忍错误分类。合理选择C值可以有效控制模型的偏差和方差。

    如下图所示,左边使用了高C值,分类器的错误样本较少,但是间隔也较小;右边使用的低C值,间隔大了很多,但是位于间隔上的实例也更多,看起来右图更加容忍错误分类(泛化效果更好)。

    在这里插入图片描述

总结起来,硬间隔适用于线性可分的数据,要求没有错误分类;软间隔适用于线性不可分的数据,通过引入松弛变量允许一定程度的错误分类。选择硬间隔还是软间隔要根据数据的线性可分性以及噪声和离群点的情况来决定。

3.SVM的基本原理
  1. 数据表示:SVM将每个样本表示为特征向量,并将其映射到一个高维特征空间。在特征空间中,样本通过特征向量表示,每个特征表示一个维度。
  2. 构建超平面:SVM寻找一个最优的超平面,将不同类别的样本分开。超平面是一个维数比样本少一的线性子空间。对于二分类任务,超平面将数据划分为两个类别;对于多分类任务,可以使用多个超平面进行分割。
  3. 最大化间隔:SVM的目标是找到一个能够最大化不同类别样本之间的间隔(即支持向量)的超平面。间隔是指离超平面最近的样本点到超平面的距离。
  4. 核函数:当数据不是线性可分时,SVM可以使用核函数将数据映射到更高维的特征空间,从而使数据线性可分。常用的核函数包括线性核、多项式核和高斯核等。
  5. 模型训练和预测:SVM通过最优化问题来训练模型,通常使用凸优化方法求解。训练完成后,可以用于对新样本进行分类预测。
4.SVM的三种损失函数

在这里插入图片描述

左边的二维图像,横标代表y的值,纵标代表误差。

右边的图像是超平面的图像。

  • 绿色:0/1损失
    • 当正例的点落在y=0这个超平面的下边,说明是分类正确,无论距离超平面多远多近,误差都是0;
    • 当这个正例的样本点落在y=0的上方的时候,说明分类错误,无论距离多远多近,误差都是1;
    • 图像就是上面绿色线。
  • 蓝色:SVM Hinge损失函数
    • 当一个正例的点落在y=1的直线上,距离超平面长度1,那么误差就为0;
    • 当它落在距离超平面0.5的地方,误差就为0.5;
    • 当他落在y=0上的时候,距离超平面为0,误差就为1;
    • 当这个点落在了y=0的上方,被误分到了负例中,距离算出来应该是负的,比如距离为-0.5,那么误差就为1.5;
    • 以此类推,画在二维坐标上就是上图蓝色的那条线。
  • 红色:Logistic损失函数
    • 损失函数的公式为:ln(1+e^(-yi));
    • 当yi=0时,损失等于ln2,这样的话损失函数的图像有点丑,所以我们给损失函数再除以ln2;
    • 这样当yi=0时,损失为1,即损失函数的图像过(0,1)点;
    • 对应的损失函数图像是上面红色的线。

SVM Hinge 损失函数是比较常用的损失函数。

5.什么是核函数?

在支持向量机(SVM)算法中,核函数是一种用于处理非线性问题的技术。它通过将原始特征映射到一个高维特征空间,从而使数据在高维空间中线性可分。

核函数的作用是将原始数据从低维空间映射到高维空间,通过非线性映射使得数据在高维空间中呈现线性可分的特性。在高维空间中,支持向量机可以找到一个超平面来分割不同类别的样本。

在这里插入图片描述

比如左上面这张图,在二维空间中,无法找到一个超平面来分割红色和蓝色样本。但如果把这些数据映射到三维空间中,如右上图所示,此时就可以找到一个超平面来分割这两种数据。

核函数的一般形式为:
K ( x , y ) = φ ( x ) ⋅ φ ( y ) K(x, y) = φ(x)·φ(y) K(x,y)=φ(x)φ(y)
其中,K(x, y) 表示核函数的计算结果,x 和 y 是原始特征空间中的样本点,φ(·) 表示映射函数。

核函数的选择非常重要,不同的核函数会对数据的映射效果和最终的分类结果产生影响。常用的核函数有以下几种:

  1. 线性核函数(Linear Kernel):线性核函数是最简单的核函数,它只进行内积计算,不进行任何映射操作。适用于线性可分问题
  2. 多项式核函数(Polynomial Kernel):多项式核函数将数据映射到高维空间,并使用多项式函数进行计算。它在原始特征的基础上引入了高次项,可以处理一些非线性问题
  3. 高斯核函数(Gaussian Kernel):高斯核函数也称为径向基函数(Radial Basis Function,RBF核函数),它是常用的核函数之一。高斯核函数通过计算样本点与支持向量之间的距离,构建一个类似于高斯分布的权重。它能够有效处理复杂的非线性问题
  4. Sigmoid核函数(Sigmoid Kernel):Sigmoid核函数使用了一个sigmoid函数,可以将数据映射到一个S形曲线上。它可以处理一些非线性可分问题,但在实际中使用较少

选择适当的核函数取决于数据的特性和问题的性质,一般有如下规则

  • 如果特征数量很大,甚至和样本数量差不多时,往往线性可分,这时选用逻辑回归(LR)或者线性核函数
  • 如果特征数量很小样本数量正常,不多也不少,可以选用高斯核函数(RBF)
  • 如果特征数量很小,而样本数量很大,这是可以手动添加一些特征,使得线性可分,然后选用逻辑回归或者线性核函数
  • 多项式核函数一般很少用,效率不高,结果也不优于高斯核函数;
  • 线性核函数参数少,速度快;高斯核函数参数多,分类结果非常依赖于参数,需要交叉验证或者网格搜索最佳参数,比较耗时;
  • 高斯核函数的应用非常广,无论是小样本还是大样本,高维还是低维等情况,高斯核函数均适用。
6.SVM算法的优缺点
  • 优点:
    • 在高维空间中处理非线性问题:通过使用核函数,SVM可以将数据映射到高维特征空间中,从而处理非线性问题。
    • 有效处理小样本数据集:SVM在小样本数据集上表现出色,并且对于样本维度较高的问题也适用。
    • 泛化能力强:SVM通过最大化间隔来选择最优超平面,可以有效地避免过拟合。
  • 缺点:
    • 对于大规模数据集计算复杂度高:SVM在处理大规模数据集时,需要较高的计算资源和时间。
    • 参数选择敏感:SVM的性能受到参数选择的影响,如选择核函数和正则化参数等。
    • 对于噪声和缺失数据敏感:SVM对于噪声和缺失数据比较敏感,需要进行适当的数据预处理。

综上所述,SVM是一种强大的分类算法,尤其适用于小样本数据集和高维特征空间。它在许多领域都有广泛的应用,包括图像分类、文本分类、生物信息学等。

二、SVM算法的API介绍

1.SVM算法API综述
  • SVM算法既可以用于分类问题,也可以用于回归和异常值检测问题。

  • SVM具有良好的鲁棒性,对未知数据拥有较强的泛化能力,特别是在数据量较少的情况下,相较于其他传统机器学习算法具有更优的性能。

sklearn中支持向量分类主要有三种方法:SVC、NuSVC、LinearSVC,扩展为三个支持向量回归的方法为:SVR、NuSVR、LinearSVR。

  • SVC和NuSVC方法基本一致,唯一区别就是损失函数的度量方式不同。
    • NuSVC中的nu参数和SVC中的C参数
  • LinearSVC是实现线性核函数的支持向量分类,没有kernel参数。
2.使用SVM模型时,通常采用以下流程:
  1. 对样本数据进行归一化处理;
  2. 应用核函数对样本进行映射(样本线性可分时,采用线性核函数;样本线性不可分时,采用高斯核函数(RBF));
  3. 若采用高斯核函数的话,需要用交叉验证和网格搜索选择最佳参数;
  4. 用最优参数训练得到模型;
  5. 模型评估。
3.SVC

class sklearn.svm.SVC(C=1.0, kernel=“rbf”, degree=3, coef0=0.0, random_state=None)

  • C:惩罚系数,用来控制损失函数的惩罚系数,类似于线性回归中的正则化系数。

    • C值大,惩罚力度大,趋向于对训练集全分对的情况。这样会出现训练集测试时的准确率很高,但泛化能力弱,容易导致过拟合。
    • C值小,惩罚力度小,容错能力增强,泛化能力较强,但也可能欠拟合。
  • kernel:算法中采用的核函数类型,核函数是用来将非线性问题转化为线性问题的一种方法。

    • 默认值是“RBF”,高斯核函数
    • Linear指的是线性核函数
    • Poly指的是多项式核函数
    • Sigmoid指的是双曲正切函数tanh核函数
  • degree:

    • 当指定kernel为“Poly”时,表示选择的多项式的最高次数,默认为三次多项式。
    • 当指定kernel不是“Poly”时,则忽略该参数。
  • coef0:核函数常数值(y=kx+b中的b值,即偏置)

    • 只有Poly和Sigmoid核函数中有,默认值为0
4.NuSVC

class sklearn.svm.NuSVC(nu=0.5)

  • nu:训练误差部分的上限和支持向量部分的下限,取值在(0,1)之间,默认值为0.5。
5.LinearSVC

class sklearn.svm.LinearSVC(penalty=“l2”, loss=“squared_hinge”, dual=True, C=1.0)

  • penalty:正则化参数
    • L1和L2两种参数值
  • loss:损失函数
    • 有hinge和squared_hinge两种值,前者又称L1损失,后者称为L2损失,默认值是squared_hinge。
    • 其中hinge是SVM的标准损失,squared_hinge是hinge的平方
  • dual:是否转化为对偶问题求解,默认值为True。
  • C:惩罚系数。
    • 用来控制损失函数的惩罚系数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/32065.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

人体姿态估计技术的理解(Human Pose Estimination)

本人毕设题目是人体姿态估计技术的相关课题,本人按照自己对人体姿态估计技术的学习和理解进行论述,如有不足,请大家指正!!! 首先讨论一个问题:什么是姿态估计? “姿势估计?……姿势这个词对…

opencv如何使用GPU的三种方法

我在工作实验涉及到图像和视频处理时,通常使用opencv提供的库来做处理,虽然OpenCV是一个广泛使用的库,它提供了丰富的功能和工具。然而,有时候在处理大量图片或视频时,我们可能会面临速度受限的问题。 opencv执行图像…

【C/C++】之内存管理(超详细练气篇)

个人主页:平行线也会相交💪 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C之路】💌 本专栏旨在记录C的学习路线,望对大家有所帮助🙇‍ 希望我们一起努力、成长&…

基本 SQL 命令 、重要的 SQL命令、SQL 约束 及 SQL语句 的 执行顺序

学习目标: 学习目标如下: SQL语句执行顺序 学习内容: 基本 SQL 命令: FROMONJOINWHEREGROUP BYAGG_FUNCWITHHAVINGSELECT 从数据库中提取数据UNIONDISTINCTORDER BY 排序LIMIT 重要的sql命令: 1、SELECT - 从数据…

Finalshell安全吗?Xshell怎么样?

文章目录 一、我的常用ssh连接工具二、Xshell2.1 下载:认准官网2.2 Xshell 配置2.3 Xftp和WinSCP 一、我的常用ssh连接工具 之前讲过: 【服务器】远程连接选SSH(PUTTY、Finalshell、WinSCP) 还是 远程桌面(RDP、VNC、…

解决 CentOS/Alma 安装 libpcap-devel 报错:No match for argument: libpcap-devel

环境:Alma 8.5、Centos 7.x 解决方案 Linux 安装软件的时候,需要 libpcap-devel 这个组件,执行命令:yum install libpcap-devel ,然后报错如下: Last metadata expiration check: 0:05:24 ago on Mon 12…

【算法】数学相关知识总结

文章目录 gcd 和 lcm取模运算 %求一个点和一片矩形区域之间的最短距离 本文用于记录一些关于算法题中偶尔被使用到的数学相关知识。 gcd 和 lcm gcd 和 lcm 分别是 最大公约数(Greatest common divisor) 和 最小公因数(Least Common Multip…

机器学习——决策树算法

一、实验目的 掌握如何实现决策树算法,用并决策树算法完成预测。 二、实验内容 本次实验任务我们使用贷款申请样本数据表,该数据表中每列数据分别代表ID、年龄、高薪、有房、信贷情况、类别,我们根据如下数据生成决策树,使用代…

二值化的mask生成yolov5-7.0的实例分割训练标签

背景:要用yolov5-7.0训练分割,这里使用自己的数据,mask是二值化的数据,要先转换成COCO格式,这里用imantics实现。 详见:https://zhuanlan.zhihu.com/p/427096258 截取部分代码如下图,读取image图…

ninja的简单使用

文章目录 Ninja安装windows环境Linux环境 入门使用与CMake一起使用 Ninja安装 windows环境 问题的解决通常有多种方法。按照结果的好坏程度,可以将解决方法简单的划分为,上中下三个层次,见:为什么谋士总喜欢提上中下三策? 在w…

C++静态和动态链接库导出和使用

1、简介 代码开发过程中会遇到很多已有的函数库,这些函数库是现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。 本质上来说库是一种…

在 K8S 中部署一个应用 上

本身在 K8S 中部署一个应用是需要写 yaml 文件的,我们这次简单部署,通过拉取网络上的镜像来部署应用,会用图解的方式来分享一下,过程中都发生了什么 简单部署一个程序 我们可以通过 kubectl run 的方式来简单部署一个应用&#…

测试技术体系

目录: 软件测试分类分层测试体系 1.软件测试分类 软件测试的分类_安全性测试属于功能测试吗_阿瞒有我良计15的博客-CSDN博客 1.单元测试(Unit Testing):单元测试是指对软件的最小可测试单元进行测试,例如一个函数、一…

ES+Redis+MySQL,这个高可用架构设计

一、背景 会员系统是一种基础系统,跟公司所有业务线的下单主流程密切相关。如果会员系统出故障,会导致用户无法下单,影响范围是全公司所有业务线。所以,会员系统必须保证高性能、高可用,提供稳定、高效的基础服务。 …

macOS Ventura 13.4.1 (22F82) Boot ISO 原版可引导镜像下载

macOS Ventura 13.4.1 (22F82|22F2083) Boot ISO 原版可引导镜像下载 本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。另外也支持在 Wind…

TSception:从EEG中捕获时间动态和空间不对称性用于情绪识别

TSception:从EEG中捕获时间动态和空间不对称性用于情绪识别(论文复现) 摘要模型结构代码实现写在最后 **这是一篇代码复现,原文通过Pytorch实现,本文中使用Keras对该结构进行复现。**该论文发表在IEEE Transactions on…

Spark10-11

10. 广播变量 10.1 广播变量的使用场景 在很多计算场景,经常会遇到两个RDD进行JOIN,如果一个RDD对应的数据比较大,一个RDD对应的数据比较小,如果使用JOIN,那么会shuffle,导致效率变低。广播变量就是将相对…

Spring Boot 如何使用 @ExceptionHandler 注解处理异常消息

Spring Boot 如何使用 ExceptionHandler 注解处理异常消息 在 Spring Boot 应用程序中,异常处理是非常重要的一部分。当应用程序出现异常时,我们需要能够捕获和处理这些异常,并向用户提供有用的错误消息。在 Spring Boot 中,可以…

二叉平衡树之红黑树

目录 1.概念 2.性质 3.节点的定义 4.插入 1.按照二叉搜索树规则插入结点 2.调整颜色 1.uncle存在且为红色 2.uncle不存在或者为黑 cur为 3.根节点改为黑色 5.验证 6.比较 7.应用 1.概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存…

2023年5月青少年机器人技术等级考试理论综合试卷(五级)

青少年机器人技术等级考试理论综合试卷(五级) 分数: 100 题数: 30 一、 单选题(共 20 题, 每题 4 分, 共 80 分) 1.ESP32 for Arduino, 下列程序的运行结果是? ( &#x…