AI - 支持向量机算法

🧨概念

支持向量机(Support Vector Machine, SVM)是一种强大的机器学习算法,主要用于解决二分类问题

SVM的核心思想是找到一个超平面,这个超平面能够最好地将数据分为两类,即在保证分类准确的情况下,使得两个类别的数据到超平面的最小距离(即间隔)最大。

  • 对于线性可分的数据,SVM通过硬间隔最大化学习一个线性分类器。这意味着所有训练样本都能够被超平面正确分开,并且最近的样本点与超平面之间的距离(即间隔)达到最大。
  • 当数据不是完全线性可分时,SVM通过软间隔最大化来学习一个线性分类器。这意味着允许一些样本不满足硬间隔的要求,但仍然尽可能地使间隔最大化。
  • 对于非线性可分的数据,SVM使用核技巧将数据映射到更高维度的空间中,使其变得线性可分,然后再进行间隔最大化。这种方法使得SVM成为一个实质上的非线性分类器。
  • 无论是线性还是非线性的情况,SVM的求解过程最终都转化为一个凸二次规划问题。这是因为SVM的目标函数是一个凸函数,可以通过求解凸优化问题来找到全局最优解。
  • 由于其坚实的理论基础和良好的泛化能力,SVM在许多领域都得到了广泛的应用,包括文本分类、图像识别、生物信息学等。

🧨引入

对于桌面上颜色不同的两种小球,用一根棍分开它们,我们可以直接将其放在两种小球中间隔开他们,尽可能使得木棍距离两个群体都远,这样可以方便更多数据进来时有更好的分辨率。 

我们放了更多的球,棍仍然是一个好的分界线,但如果我们打乱小球分布,该如何隔开他们?

 

现在,我们没有棍可以很好帮他分开两种球了 ,我们可以将小球扔到空中进入一个多维空间

但在上边看来就是一个曲线隔开的。我们的数据就是小球data,棍子就是分类器classifier 。

🧨支持向量机分类

  • 线性SVM:对于线性可分的数据,SVM能够找到一个超平面,使得所有训练样本都能够被正确分开,并且最近的样本点与超平面之间的距离(即间隔)达到最大。这种情况下的SVM称为线性SVM。
  • 非线性SVM:当数据在原始空间中不是线性可分时,SVM使用核技巧将数据映射到更高维度的空间中,使其变得线性可分。在这个高维特征空间中,SVM学习一个线性分类器来进行分类。这种方法使得SVM成为一个实质上的非线性分类器。

根据在检验样本上的运行效果,分类器必须从这些分类超平面中选择一个来表示它的决策边界。满足这个条件的很多,但是使得泛化误差最小的条件就是边际margin最大的情况。

🧨 软间隔和硬间隔 

  • 硬间隔指的是让所有的样本都不在最大间隔之间,并位于正确的一边,这就是硬间隔。如果出现异常值、或者样本不能线性可分,此时硬间隔无法实现。        
  • 软间隔指的是我们容忍一部分样本在最大间隔之内,甚至在错误的一边。相对来说,软间隔可以应用在一些线性不可分的场景。 

🧨惩罚参数 C  

SVM中的惩罚参数C是一个非常重要的超参数,它决定了算法对错误分类的容忍度。

在SVM中,C参数用于控制间隔大小与分类误差之间的权衡。较大的C值意味着算法更加重视分类误差,即算法会尽量减小训练集上的分类错误。相反,较小的C值意味着算法更加重视最大化间隔,即使这可能导致在训练集上有更多的分类错误。

C值的选择对模型的泛化能力有显著影响。如果C设置得过大,模型可能会过度拟合训练数据,导致在未知数据上的表现不佳。这是因为模型过于关注训练集中的每个样本,包括那些可能仅仅是噪声的样本。相反,如果C设置得过小,模型可能会欠拟合,即对训练数据的分类错误过多,这也会影响模型在新数据上的性能。 

在实际的应用中,选择合适的C值是非常重要的。通常,这需要通过交叉验证等技术来进行评估和选择。 

🧨SVM损失函数

SVM的损失函数通常指的是合页损失函数(Hinge Loss),它是一种变种损失函数,用于最大间隔分类。合页损失函数的表达式为:

 

yi​ 是样本的标签,omega 和 b 分别是模型的权重和偏置项,xi​ 是第 i 个样本的特征向量。这个损失函数的第一部分是经验风险,它度量了模型对训练数据的拟合程度。当预测值与实际标签之间的差距大于1时,损失为0;否则,损失为1−yi​(ωTxi​+b)。

🧨鸢尾花种类预测 

Iris 数据集是常用的分类实验数据集,也称鸢尾花卉数据集,是一类多重变量分析的数据集。 

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVCif __name__ == '__main__':# 加载数据集x, y = load_iris(return_X_y=True)# 数据集分割x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, stratify=y)# 特征值标准化transformer = StandardScaler()x_train = transformer.fit_transform(x_train)x_test = transformer.transform(x_test)# 模型训练estimator = SVC()estimator.fit(x_train, y_train)# 模型预测print(estimator.score(x_test, y_test))

分割数据集时stratify=y的作用是在划分训练集和测试集时,保持类别的比例。这样可以确保在训练集和测试集中各类别的比例与原始数据集中的比例相同,有助于避免因数据分布不均导致的模型性能偏差。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hive SQL必刷练习题:同时在线人数问题(*****)

问题描述: 思路: ​ 因为有进直播间时间,和出直播间人数。所以我可以统计,进来一个是不是人数就会加1,出去一个,人数就会减1。 ​ 所以可以给进直播间的时间标记一个1,出直播间的时间标记一个…

【机器学习-02】矩阵基础运算---numpy操作

在机器学习-01中,我们介绍了关于机器学习的一般建模流程,并且在基本没有数学公式和代码的情况下,简单介绍了关于线性回归的一般实现形式。不过这只是在初学阶段、为了不增加基础概念理解难度所采取的方法,但所有的技术最终都是为了…

sparksql简介

什么是sparksql sparksql是一个用来处理结构话数据的spark模块,它允许开发者便捷地使用sql语句的方式来处理数据;它是用来处理大规模结构化数据的分布式计算引擎,其他分布式计算引擎比较火的还有hive,map-reduce方式。 sparksql…

GUROBI之数学启发式算法Matheuristics

参考运小筹的帖子:优化求解器 | Gurobi 数学启发式算法:参数类型与案例实现 - 知乎 (zhihu.com) 简言之,数学启发式是算法就是数学规划和启发式算法的融合,与元启发式算法相比,数学启发式算法具有更强的理论性。 在GUR…

python--模块导入+路径处理+常见异常类型

python--模块导入路径处理常见异常类型 模块导入import 模块名from 模块名 import 类、变量、函数from 模块名 import *from 项目名.包.py文件名称 import 类、变量、函数导包快捷键 os 模块 路径处理路径获取os.path.dirname(__file__)os.path.abspath(test.txt)os.getcwd() 路…

React低代码平台实战:构建高效、灵活的应用新范式

文章目录 每日一句正能量前言一、React与低代码平台的结合优势二、基于React的低代码平台开发挑战三、基于React的低代码平台开发实践后记好书推荐编辑推荐内容简介作者简介目录前言为什么要写这本书 读者对象如何阅读本书 赠书活动 每日一句正能量 人生之美,不在争…

AI论文速读 | TPLLM:基于预训练语言模型的交通预测框架

论文标题:TPLLM: A Traffic Prediction Framework Based on Pretrained Large Language Models 作者:Yilong Ren(任毅龙), Yue Chen, Shuai Liu, Boyue Wang(王博岳),Haiyang Yu(于海洋&#x…

提高安全投资回报:威胁建模和OPEN FAIR™风险分析

对大多数人和企业来说,安全意味着一种成本。但重要的是如何获得适合的量,而不是越多越好。然而,你如何决定什么时候可以有足够的安全性,以及你如何获得它?则完全是另一回事。 该篇文章是由The Open Group安全论坛主办&…

爱奇艺 CTR 场景下的 GPU 推理性能优化

01 背景介绍 GPU 目前大量应用在了爱奇艺深度学习平台上。GPU 拥有成百上千个处理核心,能够并行的执行大量指令,非常适合用来做深度学习相关的计算。在 CV(计算机视觉),NLP(自然语言处理)的模型…

基于SpringBoot SSM vue办公自动化系统

基于SpringBoot SSM vue办公自动化系统 系统功能 登录 个人中心 请假信息管理 考勤信息管理 出差信息管理 行政领导管理 代办事项管理 文档管理 公告信息管理 企业信息管理 会议室信息管理 资产设备管理 员工信息管理 开发环境和技术 开发语言:Java 使用框架: S…

ChatGLM3-6B独立部署提供HTTP服务failed to open nvrtc-builtins64_121.dll

背景 我在本地windoes部署ChatGLM3-bB,且希望部署后能提供HTTP server的能力。 模型部署且启动是成功了,但是在访问生成接口/v1/chat/completions时报错failed to open nvrtc-builtins64_121.dll。 问题详细描述 找不到nvrtc-builtins64_121.dll Runtime…

【JavaScript】JavaScript 运算符 ④ ( 逻辑运算符 | 逻辑与运算符 | 逻辑或运算符 || | 逻辑非运算符 ! )

文章目录 一、JavaScript 逻辑运算符1、逻辑运算符 概念2、逻辑与运算符 &&3、逻辑或运算符 ||4、逻辑非运算符 !5、完整代码示例 一、JavaScript 逻辑运算符 1、逻辑运算符 概念 JavaScript 中的 逻辑运算符 的作用是 对 布尔值 进行运算 , 运算完成 后 的 返回值 也是…

Java面试题20之论如何实现接口的幂等性(高并发情况下)

电商的前后端交互,下一步,登陆注册,由于网络原因的重复发送请求,同一资料发送多份 接口的幂等性:相同的资料进来只注册一个 唯一id: 每次操作,都根据操作和内容生成唯一的id,在执…

2.26回顾章节主体线索脉络,课程要求(评分)

3)翻译程序、汇编程序、编译程序、解释程序有什么差别?各自的特性是什么? 翻译程序是指把高级语言源程序翻译成机器语言程序(目标代码)的软件。 翻译程序有两种:一种是编译程序,它将高级语言源程序一次全部…

学习笔记--强化学习(1)

参考:https://blog.csdn.net/koulongxin123/article/details/122676149 1.什么是强化学习? (1)定义 基于环境的反馈而行动,通过不断与环境的交互、试错,最终完成特定目的或者使得整体行动收益最大化(是一种通过与环境…

CKA认证之Etcd备份与恢复

题目介绍: 资料参考: https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/configure-upgrade-etcd 解题: 1、备份 #参考模板列出 etcdctl 可用的各种选项。 #例如,你可以通过指定端点、证书和密钥来制作快照&#xff0…

15 个最佳免费照片恢复软件快速恢复已删除的图像

这篇文章重点介绍了适用于 Windows 10 的 15 款最佳免费照片恢复软件。阅读整篇文章,了解理想的图像恢复软件。 照片可以带回所有的回忆,回忆起与我们所爱的人和亲密的人度过的每一个“时刻”。照片是我们永远不想失去的东西,但有时我们会无…

Axios 中的文件上传(Upload File)方法

Axios 提供了多种上传文件(Upload File)的方法,适用于不同的上传场景。以下是其中几种常用的方法: 1. 使用 FormData 对象FormData是一个用于创建表单数据的 API,可用于发送包含文件和其他表单数据的multipart/form-d…

【热门话题】前端框架发展史

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 前端开发的历史演变引言第一章:起源与基础建设 - HTML与CSS时代1.1 …

24计算机考研调剂 | 南昌航空大学

2024年南昌航空大学计算机视觉与人工智能团队招收研究生 考研调剂招生信息 学校:南昌航空大学 专业:工学->计算机科学与技术 工学->控制科学与工程->模式识别与智能系统 年级:2024 招生人数:3 招生状态:正在招生中 联系方式:********* (为保护个人隐私,联系方式…