支持向量机
支持向量机(Support Vector Machine,SVM)是一种有监督的机器学习算法,可用于分类和回归任务,尤其在分类问题上表现出色。下面将从原理、数学模型、核函数、优缺点和应用场景等方面详细介绍。
原理
支持向量机的基本思想是在特征空间中找到一个最优的超平面,将不同类别的样本分开,并且使该超平面到各类样本的间隔(margin)最大。间隔是指超平面到最近样本点的距离,这些最近的样本点被称为支持向量(Support Vectors)。
在二维空间中,超平面就是一条直线;在三维空间中,超平面是一个平面;在更高维空间中,超平面则是一个维度比特征空间少一维的子空间。通过最大化间隔,可以使分类器具有更好的泛化能力,即对未知数据的分类效果更好。
数学模型
线性可分情况
假设给定一个训练数据集 \(T = \{ (x_1, y_1), (x_2, y_2), \cdots, (x_n, y_n) \}\),其中 \(x_i \in \mathcal{X} = \mathbb{R}^d\) 是第 i 个样本的特征向量,\(y_i \in \mathcal{Y} = \{ +1, -1 \}\) 是第 i 个样本的类别标签。
对于线性可分的数据集,我们要找到一个超平面 \(w^T x + b = 0\),使得对于所有 \(y_i = +1\) 的样本,有 \(w^T x_i + b \geq 1\);对于所有 \(y_i = -1\) 的样本,有 \(w^T x_i + b \leq -1\)。
间隔可以表示为 \(\frac{2}{\| w \|}\),因此最大化间隔等价于最小化 \(\frac{1}{2} \| w \|^2\)。同时,需要满足约束条件 \(y_i (w^T x_i + b) \geq 1\),\(i = 1, 2, \cdots, n\)。
这就转化为一个带约束的凸二次规划问题:
\(\begin{aligned} \min_{w, b} & \quad \frac{1}{2} \| w \|^2 \\ \text{s.t.} & \quad y_i (w^T x_i + b) \geq 1, \quad i = 1, 2, \cdots, n \end{aligned}\)
线性不可分情况
在实际应用中,很多数据集是线性不可分的。为了处理这种情况,引入了松弛变量 \(\xi_i \geq 0\),允许一些样本点违反约束条件。此时的目标函数变为:
\(\begin{aligned} \min_{w, b, \xi} & \quad \frac{1}{2} \| w \|^2 + C \sum_{i=1}^{n} \xi_i \\ \text{s.t.} & \quad y_i (w^T x_i + b) \geq 1 - \xi_i, \quad i = 1, 2, \cdots, n \\ & \quad \xi_i \geq 0, \quad i = 1, 2, \cdots, n \end{aligned}\)
其中 \(C > 0\) 是惩罚参数,用于控制对误分类样本的惩罚程度。C 值越大,对误分类的惩罚越重;C 值越小,对误分类的容忍度越高。
核函数
当数据集线性不可分时,除了引入松弛变量,还可以通过核函数将原始特征空间映射到一个更高维的特征空间,使得数据在新的特征空间中变得线性可分。
常用的核函数有:
- 线性核函数:\(K(x_i, x_j) = x_i^T x_j\),适用于数据本身就是线性可分或者近似线性可分的情况。
- 多项式核函数:\(K(x_i, x_j) = (\gamma x_i^T x_j + r)^d\),其中 \(\gamma > 0\),r 是常数,d 是多项式的次数。
- 高斯核函数(径向基函数,RBF):\(K(x_i, x_j) = \exp(-\gamma \| x_i - x_j \|^2)\),其中 \(\gamma > 0\)。高斯核函数具有很强的非线性映射能力,是最常用的核函数之一。
优缺点
优点
- 泛化能力强:通过最大化间隔,支持向量机能够有效地避免过拟合,对未知数据具有较好的分类和预测能力。
- 适用于高维数据:在高维特征空间中,支持向量机仍然能够找到合适的超平面进行分类,而且不需要考虑特征的维度灾难问题。
- 可以处理非线性问题:通过使用核函数,支持向量机可以将非线性问题转化为线性问题进行处理,具有很强的灵活性。
缺点
- 计算复杂度高:求解支持向量机的优化问题需要进行大量的矩阵运算,尤其是在处理大规模数据集时,计算时间和内存开销会显著增加。
- 参数选择困难:支持向量机的性能很大程度上依赖于核函数的选择和参数(如 C 和 \(\gamma\))的设置,没有通用的方法来选择最优的参数,通常需要通过交叉验证等方法进行调优。
- 解释性较差:支持向量机得到的分类结果是基于超平面和支持向量的,对于分类决策的解释相对困难,不如一些简单的模型(如决策树)直观。
应用场景
- 文本分类:在自然语言处理中,支持向量机常用于对文本进行分类,如新闻分类、垃圾邮件识别等。
- 图像识别:在计算机视觉领域,支持向量机可以用于图像分类、目标检测等任务。
- 生物信息学:在基因序列分析、蛋白质结构预测等生物信息学问题中,支持向量机也有广泛的应用。
Python 代码示例
python
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 创建SVM分类器
clf = SVC(kernel='linear')# 训练模型
clf.fit(X_train, y_train)# 预测
y_pred = clf.predict(X_test)# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
这个示例展示了如何使用 scikit-learn
库中的 SVC
类实现一个简单的支持向量机分类器,并对鸢尾花数据集进行分类。通过设置不同的核函数和参数,可以进一步优化模型的性能。
相关文章:
支持向量机
支持向量机(Support Vector Machine,SVM)是一种有监督的机器学习算法,可用于分类和回归任务,尤其在分类问题上表现出色。下面将从原理、数学模型、核函数、优缺点和应用场景等方面详细介绍。 原理 支持向量机的基本思…...
华为昇腾910B通过vllm部署InternVL3-8B教程
前言 本文主要借鉴:VLLM部署deepseek,结合自身进行整理 下载模型 from modelscope import snapshot_download model_dir snapshot_download(OpenGVLab/InternVL3-8B, local_dir"xxx/OpenGVLab/InternVL2_5-1B")环境配置 auto-dl上选择单卡…...
ZArchiver解压缩工具:高效解压,功能全面
在使用智能手机的过程中,文件管理和压缩文件的处理是许多用户常见的需求。无论是解压下载的文件、管理手机存储中的文件,还是进行日常的文件操作,一款功能强大且操作简便的文件管理工具都能极大地提升用户体验。今天,我们要介绍的…...
ETL介绍
(一)ETL介绍 “ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(Extract)、转换(Transform)、加载(Load)至目的端的过程。ETL一词较…...
2025.05.07-华为机考第三题300分
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 城市紧急救援队伍协同规划 问题描述 智慧城市建设中,卢小姐负责设计一套紧急救援队伍协同系统。城市被规划为一个 n n n \times n...
缓存菜品-04.功能测试
一.功能测试 redis中的数据已缓存 查询数据时并没有发sql 修改鸡蛋汤价格为5元。 缓存数据没有了 价格修改成功 停售启售是一样的。修改后清理,再次查询又被缓存到redis中。...
跨境电商生死局:动态IP如何重塑数据生态与运营效率
凌晨三点的深圳跨境电商产业园,某品牌独立站运营总监李明(化名)正盯着突然中断的广告投放系统。后台日志显示,过去24小时内遭遇了17次IP封禁,直接导致黑五促销期间损失23%的预期流量。这并非个案——2023年跨境电商行业…...
day 14 SHAP可视化
一、原理——合作博弈论 SHAP(SHapley Additive exPlanations)是一种用于解释机器学习模型预测结果的方法,它基于合作博弈论中的 Shapley 值概念。Shapley 值最初用于解决合作博弈中的利益分配问题。假设有 n 个参与者共同合作完成一项任务并…...
处理PostgreSQL数据库事务死锁过程
查询pg_locks表,获取未得到满足的锁信息: select * from pg_locks where granted is false ; --查询得不到锁的,那就是两个互相等待对方持有的锁查询活动的事务会话进程,和上一步的锁的事务对应起来: select * from …...
大数据、物联网(IoT)、平台架构与设计重构大模型应用
结合大数据、物联网(IoT)、平台架构与设计重构大模型应用,需构建一个数据驱动、实时响应、弹性扩展的智能系统。以下从技术架构、数据流、核心模块设计三个维度展开: 一、整体架构设计 分层架构(基于云-边-端协同): [物联网设备层] → [边缘计算层] → [大数据平台层]…...
开发 Chrome 扩展中的侧边栏图标设置实录(Manifest V3)
在开发自己的 Chrome 扩展 Pocket Bookmarks(口袋书签) 的过程中,我遇到了一个看似简单却颇具挑战的问题:如何在扩展的侧边栏显示自定义图标? 这篇文章记录一下我踩过的坑,以及最终的解决方案。 这里说的侧…...
Baumer工业相机堡盟工业相机如何通过BGAPI SDK在Linux系统下设置多个USB相机(C++)
Baumer工业相机堡盟工业相机如何通过BGAPI SDK在Linux系统下设置多个USB相机(C) Baumer工业相机Baumer工业相机BGAPI SDK在Linux系统下设置USB相机的技术背景Linux系统内核 USB 模块内存的修改内存限制的确定使用 GRUB 引导加载程序修改内存限制使用 U-B…...
zst-2001 历年真题 知识产权
知识产权 - 第1题 发表权有时间限制 其他下面3个没有 c 知识产权 - 第2题 bd是财产权 c 知识产权 - 第3题 b 知识产权 - 第4题 d 知识产权 - 第5题 d 知识产权 - 第6题 d 知识产权 - 第7题 d 知识产权 - 第8题 b是国务院发布的 d没有复制权…...
设备与驱动:UART设备
大部分的嵌入式系统都包括一些I/O设备,例如仪器上的数据显示屏、工业设备上的串口通信、数据采集设备上模拟数据采样、用于保存数据的Flash/SD卡以及网络设备上的以太网接口等,都是嵌入式系统中容易找到的I/O设备例子。 本专栏主要是分享RT-Thread是如何…...
Linux 服务器静态 IP 配置初始化指南
✅ 第一步:确认网络管理方式 运行以下命令判断系统使用的网络管理服务: # 检查 NetworkManager 是否活跃 systemctl is-active NetworkManager# 检查 network(旧服务)是否活跃 systemctl is-active network或者检查配置路径&…...
【ROS2】Nav2源码之行为树定义、创建、加载
1、简述 在 Navigation2 里,机器人的导航是一项复杂的任务,包含路径规划、避障、恢复机制等多个子任务。行为树能把这些子任务组织成清晰的层次结构,让机器人可以依据不同的情况做出合理的决策。例如,当机器人在导航途中碰到障碍物时,行为树可以决定是重新规划路径、尝试…...
Redis持久化存储介质评估:NFS与Ceph的适用性分析
#作者:朱雷 文章目录 一、背景二、Redis持久化的必要性与影响1. 持久化的必要性2. 性能与稳定性问题 三、NFS作为持久化存储介质的问题1. 性能瓶颈2. 数据一致性问题3. 存储服务单点故障4. 高延迟影响持久化效率.5. 吞吐量瓶颈 四、Ceph作为持久化存储介质的问题1.…...
如何统一修改word中所有英文字母的字体格式
1.需求分析 我想让整篇论文中的所有英文字母格式都修改为Time New Roman格式。 2.直观操作流程 点击左上角开始 --> 点击替换 --> 点击更多 --> 点击特殊格式 --> 选择查找内容为任意字母(Y) --> 将光标点到替换内容 --> 点击格式 --> 点击字体 --> …...
服务器上机用到的设备
服务器上机通常需要以下硬件设备: 服务器主机: CPU:选择高性能的多核处理器,如英特尔至强(Xeon)系列或AMD EPYC系列,以满足高并发和多任务处理需求。 内存(RAM)…...
【Java ee 初阶】多线程(8)
Synchronized优化: 一、锁升级 锁升级时一个自适应的过程,自适应的过程如下: 在Java编程中,有一部分的人不一定能正确地使用锁,因此,Java的设计者为了让大家使用锁的门槛更低,就在synchronize…...
数字孪生大屏UI设计
近年来,5G、大数据、云计算等新一代信息技术的蓬勃发展,计算机仿真技术与拟真软件的成熟运用,让数字孪生技术开始蔓延渗透到“互联网”相关的产业中。数字孪生大屏给予了可视化的数据直观窗口,其中展现的动态映射与实时数据让业务流转效率得到了有效提升,管理、运营和决策都能高…...
【Java ee 初阶】多线程(9)上
一、信号量Semaphore 本质上就是一个计数器,描述了一种“可用资源”的个数 申请资源(P操作):使得计数器-1 释放资源(V操作):使得计数器1 如果计数器为0了,继续申请资源ÿ…...
eclipse开发环境中缺少JavaEE组件如何安装
新版本eclipse去掉server了吗?在最近新版本的eclipse里面,确实找不到server模块了,无法配置tomcat等web服务器插件了。我们需要自己手工安装一下javaEE组件才行。 1 1:找到自己当前eclipse版本号码 2:去这个地址&…...
stm32之ADC
目录 1.简介2.逐次逼近型ADC3.基本结构4.输入通道5.转换模式6.触发控制7.数据对齐8.转换时间7.校准10.ADC外围电路11.api和结构体11.1 结构体11.2 api1. ADC_DeInit2. ADC_Init3. ADC_StructInit4. ADC_Cmd5. ADC_DMACmd6. ADC_ITConfig7. ADC_ResetCalibration8. ADC_GetReset…...
从电话到V信语音:一款App实现全场景社交脱身
作为一名资深社恐人士,我深知那些无法脱身的社交场合有多煎熬。上周参加一个行业聚会,面对滔滔不绝的陌生人,我如坐针毡却又找不到合适的离场理由。这时我突然想起之前朋友推荐的一款神器应用,它让我得以优雅脱身。今天就来分享这…...
conda init before conda activate
先conda init 然后退出命令窗口,再重新打开命令窗口再conda activate...
MySQL数据库高可用(MHA)详细方案与部署教程
一:MHA简介 核心功能 二:MHA工作原理 三:MHA组件 四:MHA 架构与工具 MHA架构 Manager关键工具 Node工具 五:工作原理与流程 1: 故障检测 2: 故障切换(Failover) 3 : 切换模式 六&a…...
《Python星球日记》 第44天: 线性回归与逻辑回归
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏:《Python星球日记》,限时特价订阅中ing 目录 一、引言:回归方法的重要性二、线性回归原理与损失函数1. 线性回归的数学模型2. 损失函数:衡量…...
Flutter TabBar / TabBarView 详解
目录 一、引言 二、基本用法 代码解析 三、主要属性 3.1 TabBar 3.2 TabBarView 四、进阶定制:突破默认样式 4.1 视觉样式深度定制 4.2 自定义指示器与标签 4.3 动态标签管理 五、工程实践关键技巧 5.1 性能优化方案 5.2 复杂手势处理 5.3 响应式布局…...
001 环境搭建
🦄 个人主页: 小米里的大麦-CSDN博客 🎏 所属专栏: Linux_小米里的大麦的博客-CSDN博客 🎁 GitHub主页: 小米里的大麦的 GitHub ⚙️ 操作环境: Visual Studio 2022 文章目录 Linux 环境搭建全解析:从历史到实践一、Linux 的起源与…...
Spark-core-RDD入门
RDD基本概念 Resilient Distributed Dataset 叫做弹性分布式数据集,是Spark中最基本的数据抽象,是分布式计算的实现载体,代表一个不可变,可分区,里面的元素并行计算的集合。 - Dataset: 一个数据集合&…...
在scala中,转换算子和行动算子有什么区别
在Scala结合Spark编程中,转换算子(Transformation)和行动算子(Action)有以下区别: 执行机制 **转换算子**: 具有惰性求值(延迟计算)特性 。它对RDD(弹性分布…...
六级阅读---2024.12 卷一 仔细阅读1
文章 Imagine youre an alien sent to Earth to document the behaviour of the mammals inhabiting the planet. You stumble into a movie theatre thats showing the latest Hollywood horror film. Several dozen humans are gathered together in a dark, undercoated r…...
驱动开发硬核特训 · 专题篇:Vivante GPU 与 DRM 图形显示体系全解析(i.MX8MP 平台实战)
视频教程请关注 B 站:“嵌入式Jerry”。 一、背景导读:GPU 与 DRM 到底谁负责“显示”? 在嵌入式 Linux 图形系统中,“画面怎么显示出来”的问题,表面看似简单,实则涉及多个内核子系统与用户态组件的协同&…...
智慧医疗时代下的医疗设备智能控费系统解决方案
—以科技赋能医疗控费,构建精细化管理新生态 一、行业背景与现存痛点 (一)政策驱动与行业挑战 随着DRG/DIP支付改革全面落地、医保基金监管趋严,医疗机构面临“提质增效”与“成本管控”的双重压力。国家卫健委数据显示&#x…...
软件设计师2025
笔记链接 第5章:软件工程基础知识 第6章:结构化开发方法 第10章:网络和信息安全基础知识...
Umi+React+Xrender+Hsf项目开发总结
一、菜单路由配置 1.umirc.ts 中的路由配置 .umirc.ts 文件是 UmiJS 框架中的一个配置文件,用于配置应用的全局设置,包括但不限于路由、插件、样式等。 import { defineConfig } from umi; import config from ./def/config;export default defineCon…...
【软件设计师:数据结构】1.数据结构基础(一)
一 线性表 1.线性表定义 线性表是n个元素的有限序列,通常记为(a1,a2,…,an)。 特点: 存在惟一的表头和表尾。除了表头外,表中的每一个元素均只有惟一的直接前驱。除了表尾外,表中的每一个元素均只有惟一的直接后继。2.线性表的存储结构 (1)顺序存储 是用一组地址连续…...
linux_进程地址空间(虚拟地址空间)
一、进程地址空间是什么? 先看这样一个具体的例子 #include<stdlib.h> #include <stdio.h> #include<unistd.h> int main() {int a1;pid_t idfork();while(1){if(id0){printf("i am child,pid:%d,ppid:%d,a:%d ,&a:%p\n",getpid(…...
计操第四章存储管理
地址再定位...
尚硅谷-硅谷甄选项目记录
一、Vue3 1 基础配置 1.1 路径别名 vite.config.ts import { defineConfig } from vite import vue from vitejs/plugin-vue// 引入path,node提供的模块,可以获取文件或文件夹的路径 import path from pathexport default defineConfig({plugins: […...
c# LINQ-Query01
文章目录 查询数据源标准查询分两类即时查询已推迟流式处理非流式处理分类表聚合Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>)Aggregate<TSour…...
Vue3渲染引擎:虚拟DOM与响应式原理
Vue3渲染引擎:虚拟DOM与响应式原理 在当今的前端开发中,Vue.js作为一种流行的JavaScript框架,经常被用来构建用户界面。而Vue.js 3作为其最新版本,在性能和功能上进行了许多优化和改进。其中,Vue3渲染引擎的核心原理—…...
[dify]官方模板DeepResearch工作流学习笔记
一、功能 根据用户输入的主题进行多轮搜索并生成综合报告 1、流程分析 1.1 初始阶段 Start节点:接收用户输入的"depth"参数,决定搜索的深度/轮数 参数可以不填,不填的时候取默认值3 Create Array节点:根据depth参数…...
大模型系列(四)--- GPT2: Language Models are Unsupervised Multitask Learners
论文链接: Language Models are Unsupervised Multitask Learners 点评: GPT-2采用了与GPT-1类似的架构,将参数规模增加到了15亿,并使用大规模的网页数据集WebText 进行训练。正如GPT-2 的论文所述,它旨在通过无监督语…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(15):何と どういう
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(15):何と &どういう 1、前言(1)情况说明(2)工程师的信仰 2、知识点(1)かもしれません & ~…...
基于英特尔 RealSense D455 结构光相机实现裂缝尺寸以及深度测量
目录 一,相机参数规格 二,结合YOLO实例分割实现裂缝尺寸以及深度测量 2.1 应用场景 2.2 实现流程 2.3 效果展示 2.4 精度验证 2.5 实物裂缝尺寸以及深度测量效果展示 一,相机参数规格 英特尔 RealSense D455 是英特尔 RealSense D400 系…...
利用并行处理提高LabVIEW程序执行速度
在 LabVIEW 编程中,提升程序执行速度是优化系统性能的关键,而并行处理技术则是实现这一目标的有力武器。通过合理运用并行处理,不仅能加快程序运行,还能增强系统的稳定性和响应能力。下面将结合实际案例,深入探讨如何利…...
C++并发编程完全指南:从基础到实践
在当今多核处理器普及的时代,充分利用硬件并发能力已成为高性能编程的关键。C11引入的现代并发编程支持使得开发者能够以标准化、可移植的方式编写多线程程序。本文将全面介绍C并发编程的各个方面,从基础概念到实际应用,帮助您掌握这一重要技…...
vue3 element-plus 输入框回车跳转页面问题处理
问题描述: 当页面搜索条件只有一个的情况下,输入框不管有没有值,回车后会跳转页面 解决办法,给表单添加 submit.prevent <el-form ref"ruleForm" :model"search" label-width"120px" class&qu…...