首页 > 其他分享 >SVM支持向量机

SVM支持向量机

时间:2025-01-13 10:30:46浏览次数:3  
标签:SVM 函数 间隔 支持 超平面 线性 向量

目录

算法原理

数学基础

向量内积(向量点乘)

范数

对偶问题

拉格朗日乘子法

线性可分与线性不可分

线性可分

线性不可分

超平面

超平面的定义

超平面的作用

如何寻找最优的超平面

损失函数求解

软间隔

鲁棒性

核函数

算法优缺点

优点

缺点

算法API


算法原理

数学基础
向量内积(向量点乘)

两个向量的内积表示一个向量在另一个向量上的投影长度乘以另一个向量的长度。

在线性分类中,内积用于计算样本点到超平面的距离。

更详细的向量内积外积内容向量的内积外积与其几何意义_内积和外积-CSDN博客

范数

范数用于衡量向量的长度或大小。常见的范数有 L1 范数(曼哈顿距离)和 L2 范数(欧几里得距离)。在SVM中,通常使用L2范数来计算间隔。

对偶问题

对于一个原始的优化问题,通过一定的数学变换可以得到另一个相关的优化问题,这个新的优化问题就称为原问题的对偶问题。

对偶问题具有一些良好的性质,比如在某些情况下,求解对偶问题可能比求解原问题更容易,或者通过研究对偶问题可以获得关于原问题的一些有用信息,比如最优解的下界等。

拉格朗日乘子法

用于将有约束的优化问题转化为无约束的优化问题。在 SVM 中,通过引入拉格朗日乘子,将最大化间隔的问题转化为对偶问题进行求解。

线性可分与线性不可分
线性可分

在线性可分的情况下,数据可以通过一个超平面完全分开,使得属于不同类别的样本分别位于超平面的两侧

线性不可分

在线性不可分的情况中,无法找到一个线性超平面将数据完美分开,此时需要引入核函数将数据映射到高维空间,使其在高维空间中变得线性可分。

超平面
超平面的定义

超平面是一个在特征空间中具有特定方程的平面。

对于二维数据,超平面是一条直线;

对于三维数据,超平面是一个平面;

对于更高维度的数据,超平面是一个广义的线性决策边界。

超平面的方程通常表示如下,

其中ω是法向量,决定超平面的方向,b是截距,它决定了超平面与原点的相对位置。具体来说,

当b>0时,超平面向原点的负方向平移;

当b<0时,超平面向原点的正方向平移;

当b=0时,超平面经过原点。

所以, ω与b共同作用,确定了超平面在特征空间中的具体位置和方向。

超平面的作用
  1. 作为分类决策边界,区分不同类别的数据。

  2. 在支持向量机中,找到具有最大间隔的超平面,提升模型的泛化和鲁棒性。

  3. 用于数据降维与特征提取。

  4. 作为数学模型中的线性约束条件。

  5. 反映数据分布特征和内在结构。

如何寻找最优的超平面

损失函数求解
软间隔

在支持向量机中,“软间隔”(Soft Margin)是对标准硬间隔(Hard Margin)SVM 的一种扩展和改进。

在硬间隔 SVM 中,要求所有的样本点都被正确分类,并且离超平面有一定的间隔。但在实际应用中,数据往往不是完全线性可分的,或者要求严格的硬间隔可能导致过拟合。

软间隔 SVM 允许一些样本点违反间隔约束,即可以位于间隔之内,甚至被错误分类,但会对这些违反约束的样本点引入一定的惩罚。

其中C是一个正的惩罚参数,控制对错误分类和违反间隔的容忍程度。

较大的C值表示对错误分类和违反间隔的惩罚较大,模型更倾向于严格分类;

较小的C值则对错误的容忍度更高,模型更注重整体的泛化能力。

通过软间隔 SVM,可以更好地处理噪声数据和不完全线性可分的情况,提高模型的鲁棒性和泛化能力。

鲁棒性

“鲁棒性”(Robustness)在机器学习和数据处理中,指的是一个系统或模型在面对各种干扰、不确定性、噪声或异常情况时,仍能保持其性能和功能稳定的能力。

可以理解为如果一个模型具有良好的鲁棒性,那么当输入数据有一定程度的变化、误差或异常时,模型的输出结果不会产生过大的偏差或错误,依然能够给出合理和可靠的预测或决策。

例如,对于一个图像识别模型,如果图像有轻微的模糊、光照变化或部分遮挡,具有鲁棒性的模型仍能准确识别出图像中的对象;对于一个预测模型,如果输入数据存在少量的噪声或异常值,鲁棒的模型不会因此产生显著的预测误差。

鲁棒性是评估模型质量和可靠性的一个重要指标,特别是在实际应用中,数据往往不完美,存在各种可能的干扰和变化。

核函数

多项式核函数

高斯核函数

算法优缺点
优点

1.有严格的数学理论支持,可解释性强,不同于传统的统计方法能简化我们遇到的问题。

2.能找出对任务有关键影响的样本,即支持向量。 3.软间隔可以有效松弛目标函数。 4.核函数可以有效解决非线性问题。 5.最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。 6.SVM在小样本训练集上能够得到比其它算法好很多的结果。

缺点

1.对大规模训练样本难以实施。

SVM的空间消耗主要是存储训练样本和核矩阵,当样本数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。超过十万及以上不建议使用SVM。

2.对参数和核函数选择敏感。 支持向量机性能的优劣主要取决于核函数的选取,所以对于一个实际问题而言,如何根据实际的数据模型选择合适的核函数从而构造SVM算法。目前没有好的解决方法解决核函数的选择问题。 3.模型预测时,预测时间与支持向量的个数成正比。当支持向量的数量较大时,预测计算复杂度较高。

算法API

class sklearn.svm.SVC(C=1.0, kernel=’rbf’, degree=3, gamma=’auto_deprecated’, coef0=0.0, shrinking=True, probability=False, tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, decision_function_shape=’ovr’, random_state=None)

参数说明:(重要的参数有:C、kernel、degree、gamma)

1.C 惩罚因子【浮点数,默认为1.】【软间隔】

建议通过交叉验证来选择

  • C越大,对误分类的惩罚增大,希望松弛变量接近0,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱;

  • C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。

2.kernel 核函数【默认rbf(径向基核函数|高斯核函数)】

默认情况下选择rbf

3.degree【整型,默认3维】

多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。按默认【选择rbf之后,此参数不起作用】

指上面式子中的n

4.‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’。建议通过交叉验证来选择

  • 如果gamma是’auto’,那么实际系数是1 / n_features,也就是数据如果有10个特征,那么gamma值维0.1。(sklearn0.21版本)

  • 在sklearn0.22版本中,默认为’scale’,此时gamma=1 / (n_features*X.var())#X.var()数据集所有值的方差。

    • gamma越大,过拟合风险越高

    • gamma越小,过拟合风险越低

5.coef0:核函数中的独立项。多项式的偏置项。它只在’poly’和’sigmoid’中很重要。

6.probability:是否启用概率估计。

允许在模型训练完成后,使用predict_proba方法来预测每个类别的概率,而不是仅仅给出类别的预测结果。

必须在调用fit之前启用它,并且会减慢该方法的速度。

默认为False,按默认即可【选择rbf之后,不起作用】

7.cache_size :核函数cache缓存大小,默认为200MB

不用调整

8.class_weight :类别的权重,字典形式传递。默认’balanced’

按默认设置

一些属性信息:

  1. support_vectors_【支持向量】

->>以数组的形式储存

  1. n_support_【每个类别支持向量的个数】

->>int类型

  1. coef_【参数w】

->>数组的形式储存

  1. intercept_【偏置项参数b】

->>数组的形式储存

标签:SVM,函数,间隔,支持,超平面,线性,向量
From: https://blog.csdn.net/m0_69045813/article/details/145105606

相关文章

  • 开箱即用!一款支持多个大语言模型服务的桌面客户端!
    大家好,我是Java陈序员。可以说现在AI给我们的生活、工作带来了极大的便利,各种大语言模型层出不穷,功能多样。今天,给大家介绍一款支持多模型服务的桌面客户端,开箱即用!关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。项目介绍Ch......
  • AccessData FTK Imager 是一款由 AccessData 公司开发的数字取证工具,用于创建计算机系
    AccessDataFTKImager是一款由AccessData公司开发的数字取证工具,用于创建计算机系统和存储设备的完整数据镜像,并且支持从中提取和分析数据。它是一款非常流行的取证软件,尤其在计算机取证、数据恢复和法律领域应用广泛。FTKImager的主要功能:创建数据镜像:FTKImager可以......
  • 统计学习方法(第二版) 第七章 支持向量机(第一节)
    本章主要介绍线性可分支持向量机与硬间隔最大化。前提知识:统计学习方法(第二版)第七章拉格朗日对偶性-CSDN博客目录前言问题引出与思考回顾1.回顾感知机2.回顾逻辑回归3.寻找更好的超平面一、线性可分支持向量机与硬间隔最大化1.线性可分支持向量机2.函数间隔与几......
  • Redis 是一个开源的高性能键值对存储数据库,通常被用作缓存、消息队列和持久化数据库。
    Redis服务器是什么?Redis是一个开源的高性能键值对存储数据库,通常被用作缓存、消息队列和持久化数据库。Redis支持多种数据结构,如字符串、哈希、列表、集合、有序集合、位图等。它被广泛用于需要快速读写操作、低延迟的场景。Redis可以作为一个独立的数据库使用,也可以作为缓......
  • Elasticsearch:向量数据库基础设施类别的兴衰
    过去几年,我一直在观察嵌入技术如何从大型科技公司的“秘密武器”转变为日常开发人员工具。接下来发生的事情——向量数据库淘金热、RAG炒作周期以及最终的修正——教会了我们关于新技术如何在更广泛的生态系统中找到一席之地的宝贵经验。更多有关向量搜索及结合传统搜......
  • 【IPQ5018】IPQ5018 5G 获取支持信道列表并格式化输出字符串
     IPQ5018    IPQ5018isahighlyintegrated802.11axWi-Fi/Bluetooth5.2system-on-chip(SoC)designedandbuiltforhigh-performance,powerefficient,andcost-effectivewirelessnetworkingapplicationsincludinghomerouters,meshnodes,andgate......
  • Rockchip RK3588 - 板级支持包之RKNPU
    ----------------------------------------------------------------------------------------------------------------------------开发板:ArmSoM-Sige7开发板eMMC:64GBLPDDR4:8GB显示屏:15.6英寸HDMI接口显示屏u-boot:2017.09linux:5.10-------------------------------......
  • zenoh client 以及peer 对于存储插件的支持配置说明
    以前说过从1.0.0开始zenoh支持对于存储插件的配置,但是会有一些要求,就是timestamping必须开启client以及peer支持存储插件配置参考配置"mode":"client"|"peer","timestamping":{"enabled":{"router":true,"peer":......
  • 通义万相2.1:VBench榜单荣登第一!阿里通义万相最新视频生成模型,支持生成1080P长视频
    ❤️如果你也关注AI的发展现状,且对AI应用开发非常感兴趣,我会每日分享大模型与AI领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!......
  • ios A12+设备激活绕过神器:支持物主锁绕过,不可插卡也能用!
    最近的遭遇,让我不得不说点什么有一次,一个朋友用iPhoneXR来找我,他的AppleID密码彻底忘了,结果手机变成了砖。看到他一脸绝望的样子,我赶紧翻箱倒柜找解决方案。后来发现了一款叫iC-BypassTool的工具,真的让我眼前一亮!它不仅能解锁A12+处理器设备(比如iPhoneXR到iPhone15......