当前位置: 首页 > news >正文

【机器学习】——支持向量机

文章目录

  • 支持向量机(Support Vector Machine, SVM)概述
  • SVM 的工作原理
  • 线性不可分数据:软间隔与核技巧
  • SVM 的数学形式
  • SVM 的优势
  • SVM 的缺点
  • SVM 的应用

支持向量机(Support Vector Machine, SVM)概述

支持向量机(SVM)是一种用于分类和回归分析的监督学习算法,尤其在分类问题上表现出色。SVM的核心思想是通过在特征空间中寻找一个最佳超平面,将不同类别的样本点尽可能地分开。这个超平面与训练数据点的距离最大化,从而使得分类器对未知数据具有良好的泛化能力。

SVM 的工作原理

1.线性可分数据:对于线性可分的数据,SVM通过寻找一个超平面将数据分为两类。假设有两类数据点(+1类和-1类),SVM的目标是找到一个能够最大化两个类别之间间隔的超平面。
**超平面:**在二维空间中,超平面就是一条直线;在三维空间中,它是一个平面;在更高维的空间中,它是一个超平面。数学上,超平面可以表示为
𝑤^𝑇*𝑥+𝑏=0其中 w 是法向量,定义了超平面的方向,b 是偏置,决定超平面与原点的距离。
**间隔(Margin):**超平面与数据点之间的最小距离称为间隔。SVM的目标是找到使这个间隔最大化的超平面。数据点距离超平面越远,分类结果越可靠。

2.支持向量:那些位于边界上的数据点称为支持向量。支持向量是定义超平面的关键数据点,因为它们决定了最优超平面的具体位置。移除其他数据点不会影响分类结果。

3.优化问题:SVM的核心是一个凸优化问题,其目标是最大化分类间隔。这个问题可以表示为一个约束优化问题:在这里插入图片描述

约束条件是:在这里插入图片描述
其中,𝑥𝑖是输入样本,𝑦𝑖 是类别标签(+1或-1),w 是权重向量,b 是偏置。

线性不可分数据:软间隔与核技巧

现实数据往往是线性不可分的,因此我们需要对SVM进行扩展。

1.软间隔(Soft Margin):当数据不可完全线性分离时,SVM引入松弛变量
𝜉𝑖 ,允许部分数据点出现在错误的边界一侧。这样,优化问题变为在最大化间隔的同时,允许一定的分类错误。目标函数更新为:
在这里插入图片描述
其中,𝐶 是一个超参数,控制分类错误和间隔大小之间的权衡。

核技巧(Kernel Trick):当数据在低维空间不可分时,可以通过核技巧将数据映射到高维空间,从而使其线性可分。SVM不需要显式地计算映射后的数据点坐标,而是通过核函数在低维空间中进行高维空间的运算。常见的核函数包括:

线性核:适用于线性可分的数据。
多项式核:处理多项式关系的数据。
高斯核(RBF核):适用于数据分布较复杂的情况。其形式为:
在这里插入图片描述
Sigmoid核:类似神经网络的激活函数,适合某些特定任务。

SVM 的数学形式

通过对偶问题的求解,SVM可以表达为拉格朗日乘子的形式。目标变成了求解下列拉格朗日函数:
在这里插入图片描述
其中,αi是拉格朗日乘子。优化后,最终分类器的决策函数可以表示为:
在这里插入图片描述
通过核函数 𝐾(𝑥𝑖,𝑥)SVM能够高效处理高维特征空间的计算。

SVM 的优势

强大的泛化能力:SVM通过最大化分类间隔,能有效提升对未知数据的预测准确性。
适应高维数据:SVM能够处理高维特征空间的数据,且在特征数远大于样本数时仍然有效。
使用核技巧:通过核函数,SVM可以处理非线性问题,而无需显式进行高维映射

SVM 的缺点

计算复杂度高:SVM的计算成本较高,尤其在样本数量很大时(因为其复杂度与样本数量呈平方关系)。
超参数调优困难:SVM的性能高度依赖于超参数(如核函数类型、𝐶 参数和 𝛾 参数等)的选择,通常需要交叉验证来确定最佳参数。
不适合大型数据集:在大规模数据集上,SVM的计算效率不如其他算法(如随机森林、神经网络等)。

SVM 的应用

SVM广泛应用于以下领域:

文本分类:如垃圾邮件检测、情感分析等。
图像识别:如人脸识别、手写数字识别等。
基因数据分类:用于生物信息学中的基因数据分析。
时间序列预测:尽管SVM本质上是一种分类算法,但在特定情况下也可用于回归任务。
总结
支持向量机是一种功能强大且理论坚实的分类算法,尤其在处理高维数据和小样本数据上有着显著的优势。SVM通过核函数扩展,能够处理复杂的非线性分类问题。虽然在处理大型数据集时效率较低,但通过合适的参数调整和核函数选择,SVM在许多应用场景中表现出色。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • antd table 可展开行的多种控制
  • PS教程,从零开始学PS
  • css基础知识笔记
  • 告别枯燥:我开发了一个在电脑桌面上使用弹幕来背单词的软件
  • [数据集][目标检测]中草药类型识别检测数据集VOC+YOLO格式7976张45类别
  • JVM 虚拟机的编译器、类加载过程、类加载器有哪些?
  • 信息技术的革新与未来展望
  • 面试金典题2.6
  • TLV解码 - 华为OD统一考试(E卷)
  • C++第十二节课 模板初阶和string引入
  • 新能源汽车知识点集萃
  • Invalid Object: LngLat(NaN, NaN)高德地图报错
  • 【深入理解SpringCloud微服务】了解微服务的熔断、限流、降级,手写实现一个微服务熔断限流器
  • OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【LMS调测】
  • 十三 系统架构设计(考点篇)
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • CSS盒模型深入
  • Next.js之基础概念(二)
  • spring + angular 实现导出excel
  • 阿里云应用高可用服务公测发布
  • 大型网站性能监测、分析与优化常见问题QA
  • 力扣(LeetCode)357
  • 通过git安装npm私有模块
  • 我与Jetbrains的这些年
  • 系统认识JavaScript正则表达式
  • 国内开源镜像站点
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #LLM入门|Prompt#3.3_存储_Memory
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (12)Linux 常见的三种进程状态
  • (7)摄像机和云台
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (含笔试题)深度解析数据在内存中的存储
  • (十)Flink Table API 和 SQL 基本概念
  • (转)菜鸟学数据库(三)——存储过程
  • (转载)hibernate缓存
  • .htaccess配置重写url引擎
  • .net Signalr 使用笔记
  • .net 程序发生了一个不可捕获的异常
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .net8.0与halcon编程环境构建
  • .NET基础篇——反射的奥妙
  • @31省区市高考时间表来了,祝考试成功
  • [ C++ ] 类和对象( 下 )
  • []Telit UC864E 拨号上网
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [12] 使用 CUDA 加速排序算法
  • [AutoSar]BSW_OS 01 priority ceiling protocol(PCP)
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [bzoj1006]: [HNOI2008]神奇的国度(最大势算法)