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

文章目录

  • 支持向量机(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在许多应用场景中表现出色。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Linux基本命令总结(佛系更)

目录 前言 一、Linux的基本目录 目录: 前缀: 二、Linux基本命令 文件相关 1.pwd: 2.ls [option] [file]: 3.cd [xxx]: 4.mkdir [option] directory: 5.rmdir [option] directory: rm 6.touch file: 7.cp: 8.mv&…

0-1开发自己的obsidian plugin DAY 1

官网教程有点mismatch,而且从0-100跨度较大,📝记录一下自己的踩坑过程 首先,官网给的example里只有main.ts,需要自己编译成main.js 在视频教程(https://www.youtube.com/watch?v9lA-jaMNS0k)里…

同一网络下两台电脑IP一样吗?探究局域网内的IP分配机制

在日常生活和工作中,我们经常会在同一网络环境下使用多台电脑。这时,一个常见的问题就会浮现:同一网络下两台电脑IP一样吗?这个问题看似简单,但实际上涉及到局域网内的IP分配机制。本文将深入探讨这一问题,…

付费电表系统的通用功能和应用过程参考模型(上)

Generic functions and application process reference model for the Payment Metering System 付费电表系统的通用功能和应用过程参考模型 1. 参考模型 Reference model 1.1 在参考模型中的符号的说明 Legend of symbols used in the reference model 功能框 (function bo…

c++9月23日

1.My_string 头文件 #ifndef MY_STRINGHEAD_H #define MY_STRINGHEAD_H#include <iostream> #include <cstring> using namespace std;class My_string { private:char *ptr;//指向字符数组的指针int size;//字符数组的最大容量int len ;//当前字符串的长度 publ…

IMX6UL开发板中断实验(三)

在上一节我们编写完成了中断驱动文件和中断驱动头文件&#xff0c;那么这一讲我们将继续中断实验 下面就是GPIO的中断设置&#xff0c;第一步要设置中断GPIO的触发方式&#xff0c;首先我们先看到寄存器&#xff0c;一共有GPIOx_ICR1和ICR2&#xff0c; 图如上&#xff0c;ICR1…

【采集软件】小红书评论高级爬取工具

用python开发了一个爬虫采集软件&#xff0c;叫【爬小红书搜索评论软件】&#xff0c;支持2种模式的评论采集&#xff1a; 1. 根据关键词采集评论&#xff0c;爬取思路&#xff1a;笔记关键词->笔记链接->评论 2. 根据笔记链接采集评论&#xff0c;爬取思路&#xff1a;…

每日一练:翻转二叉树

226. 翻转二叉树 - 力扣&#xff08;LeetCode&#xff09; 一、题目要求 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff…

MATLAB Function模块用法案例

Simulink中的MATLAB Function模块是一个非常灵活的工具&#xff0c;允许用户直接在Simulink模型中嵌入MATLAB代码&#xff0c;以实现自定义的算法或功能 MATLAB Function模块的基本用法 添加模块&#xff1a; 在Simulink的模型窗口中&#xff0c;通过搜索“MATLAB Function”…

大数据新视界 --大数据大厂之 Reactjs 在大数据应用开发中的优势与实践

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

2024 年最新前端工程师 Vue3 框架详细教程(更新中)

vue3 前端框架概述 vue 3 是 Vue.js 的最新版本&#xff0c;是一个用于构建用户界面的渐进式 JavaScript 框架。和 vue 2 相比&#xff0c;vue 3 引入了组合式 API&#xff0c;使开发者可以通过函数组织代码逻辑&#xff0c;适合处理复杂功能。vue 3 在性能上也有显著提升&…

AI Agent智能应用从0到1定制开发Langchain+LLM全流程解决方案与落地实战

大模型微调实战&#xff1a;精通、指令微调、开源大模型微调、对齐与垂直领域应用29套AI全栈大模型项目实战&#xff0c;人工智能视频课程-多模态大模型&#xff0c;微调技术训练营&#xff0c;大模型多场景实战&#xff0c;AI图像处理&#xff0c;AI量化投资&#xff0c;OPenC…

使用Charles抓包Android App数据

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 抓包环境准备 1. 下载安装charles charles下载地址&#xff1a;https://www.charlesproxy.com/latest-release/download.do 2. SSL代理设置 3. http代理和…

【计算机网络强化】计网强化笔记

第一章 计算机网络体系结构 1.1 计算机网络概述 1.计算机网络由若干个节点和连接这些节点的链路组成 2. 3.计算机网络的组成 ①硬件、软件、协议 ②边缘部分和核心部分 ③通信子网和资源子网 4.电路交换、报文交换和分组交换 ①电路交换 分为三步&#xff1a;建立连接、…

使用SBP打AssetBundle时脚本引用丢失

1&#xff09;使用SBP打AssetBundle时脚本引用丢失 2&#xff09;在UE 5.3中连接Power节点为何10的3次幂等于1009 3&#xff09;如何在Widget中倾斜一张纹理贴图 4&#xff09;如何在打开关卡蓝图时更改游戏模式 这是第401篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的热…

.NET 6.0 WebAPI 使用JWT生成Token的验证授权

1.引入相关程序包JwtBearer注意版本: 2.配置文件appsettings.json写相关配置参数(也可不写&#xff0c;写在程序里面&#xff0c;数据库读取也是一样的) , //JWT加密"JWTToken": {"SecretKey": "jsaduwqe6asdjewejdue7dfmsdfu0sdfmwmsd8wfsd6",…

Postman导出报告

一、下载node.js 导出测试报告我们需要用到一个工具叫做newman&#xff0c;它是node.js开发的一个插件&#xff0c;要使用他需要先下载node.js&#xff0c;安装包可以去官网下载&#xff0c;这里我分享一个 链接: https://pan.baidu.com/s/179yLzwTtLH3eihYs_yxrZA?pwd7bqt 提…

数据分析:主成分以及贡献变量解析

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍分析目的变量的loadings的含义加载依赖包导入数据数据预处理PCA计算PCA图主成分分布系统信息介绍 PCA分析,即主成分分析(Principal Component Analysis),是一种统计方法,用于…

吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.3-2.4

目录 第四门课 卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;第二周 深度卷积网络&#xff1a;实例探究&#xff08;Deep convolutional models: case studies&#xff09;2.3 残差网络(ResNets)(Residual Networks (ResNets))2.4 残差网络为什么有用&am…

在虚幻引擎中实时显示帧率

引擎自带了显示帧率的功能 但是只能在编辑器中显示 , 在游戏发布后就没有了 , 所以我们要自己做一个 创建一个控件蓝图 创建画布和文本 , 修改文本 文本绑定函数 , 点击创建绑定 添加一个名为 FPS 的变量 格式化文本 用大括号把变量包起来 {FPS Int} FPS 然后转到事件图表…