一问看懂——支持向量机SVM(Support Vector Machine)

 

目录

芜湖~~~支持向量机(SVM)

1. 引言

2. 基本思想

3. 数学模型

3.1 超平面定义

3.2 分类间隔与目标函数

3.3 软间隔与松弛变量

4. 核函数方法(Kernel Trick)

4.1 核函数定义

4.2 常用核函数

5. SVM 的几种类型

6. SVM 的训练与预测流程

6.1 模型训练

6.2 模型预测

7. 优点与局限

7.1 优点

7.2 局限

8. SVM 与多分类问题

9.代码示例

9. 应用场景

10. 小结



芜湖~~~支持向量机(SVM)


1. 引言

        支持向量机(Support Vector Machine,简称 SVM)是一种基于统计学习理论的监督学习模型,最早由 Vladimir Vapnik 等人提出,广泛应用于分类(Classification)回归(Regression)任务中。由于其优越的泛化能力和坚实的理论基础SVM 成为现代机器学习领域的重要算法之一,特别适合于高维小样本以及非线性问题。


2. 基本思想

SVM 的核心思想是:

在特征空间中寻找一个最优分离超平面(Optimal Hyperplane),使得该超平面能够最大限度地将不同类别的样本分隔开,并具有   最大化间隔(Margin Maximization) 的特性。

        如下图所示,对于线性可分问题,SVM 会选取离两个类别最近样本点(即支持向量)距离最大的分割平面作为最终分类器。


3. 数学模型

3.1 超平面定义

在 n 维空间中,一个超平面的定义如下:

w^T x + b = 0

其中:

  • w:法向量,决定超平面方向;

  • b :偏置项,决定超平面距离原点的位置;

  • x :输入样本。


3.2 分类间隔与目标函数

对于样本 (x_i, y_i),其分类间隔定义为:

\gamma_i = \frac{y_i(w^T x_i + b)}{\|w\|}

SVM 的目标是最大化所有样本的最小分类间隔,即:

\max_{w,b} \min_i \gamma_i

为简化计算,通常转化为以下凸优化问题(硬间隔 SVM):

\min_{w,b} \frac{1}{2} \|w\|^2 \quad \text{s.t.} \quad y_i(w^T x_i + b) \geq 1


3.3 软间隔与松弛变量

当数据线性不可分时,引入松弛变量 \xi_i 和惩罚系数 C,得到软间隔 SVM:

\min_{w,b,\xi} \frac{1}{2} \|w\|^2 + C \sum_i \xi_i \quad \text{s.t.} \quad y_i(w^T x_i + b) \geq 1 - \xi_i,\quad \xi_i \geq 0

其中:

  • C :控制对误分类的惩罚程度;

  • \xi_i:表示样本违反间隔的程度。


4. 核函数方法(Kernel Trick)

        许多实际问题是非线性可分的。SVM 借助核函数技术将数据映射高维特征空间,在高维空间中实现线性可分。

4.1 核函数定义

核函数 K(x_i, x_j) 实际上是一个隐式内积:

K(x_i, x_j) = \phi(x_i)^T \phi(x_j)

其中 \phi(\cdot)是非线性映射函数,无需显式计算。

4.2 常用核函数

核函数表达式说明
线性核(Linear)K(x_i, x_j) = x_i^T x_j适用于线性问题
多项式核(Polynomial)K(x_i, x_j) = (\gamma x_i^T x_j + r)^d控制多项式的复杂度
RBF核(高斯核)K(x_i, x_j) = \exp(-\gamma \|x_i - x_j\|^2)广泛使用,处理非线性问题
Sigmoid核K(x_i, x_j) = \tanh(\gamma x_i^T x_j + r)类似神经网络激活函数

5. SVM 的几种类型

类型描述
C-SVC最常用的分类 SVM,带惩罚系数 C
NU-SVC用参数 \nu 替代 C 控制支持向量数量
EPS-SVR支持向量回归(SVR)类型,用于回归问题
NU-SVR\nu 形式的回归模型

6. SVM 的训练与预测流程

6.1 模型训练

  • 输入:训练样本(特征向量 + 标签

  • 设置 SVM 参数(核函数、C、γ等)

  • 求解优化问题(使用 SMO、梯度下降等方法)

  • 得到模型(支持向量、权重、偏置)

6.2 模型预测

预测函数定义为:

f(x) = \text{sign} \left( \sum_i \alpha_i y_i K(x_i, x) + b \right)

其中,\alpha_i 是拉格朗日乘子,仅对支持向量不为零。


7. 优点与局限

7.1 优点

  • 理论基础坚实(VC维理论)

  • 高维小样本数据表现良好

  • 可处理非线性问题(通过核方法

  • 具有稀疏解(依赖于少数支持向量)

7.2 局限

  • 对大规模数据训练速度,内存消耗大

  • 核函数和参数选择依赖经验

  • 不易处理多分类问题(需借助一对一/一对多策略)


8. SVM 与多分类问题

SVM 原生为二分类模型,但可通过以下策略扩展为多分类:

  • 一对一(One-vs-One, OvO):为每两个类别训练一个分类器,投票决定最终分类;

  • 一对多(One-vs-Rest, OvR):为每一个类别与其余类别训练一个分类器,选择概率最大者;

  • 结构 SVM:直接扩展的多类模型(不常见于 OpenCV 实现中)。


9.代码示例

基于 Python 的 scikit-learnmatplotlib 实现。这个代码会:

  • 创建两类可分数据;

  • 用 SVM 训练分类器;

  • 可视化:

    • 支持向量(用圈标出)

    • 决策边界(黑线)

    • 间隔边界(虚线)

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
from sklearn.datasets import make_blobs# 生成两个类别的样本数据
X, y = make_blobs(n_samples=40, centers=2, random_state=6)# 拟合一个线性支持向量分类器
clf = svm.SVC(kernel='linear', C=1.0)
clf.fit(X, y)# 获取模型的参数
w = clf.coef_[0]
a = -w[0] / w[1]
xx = np.linspace(min(X[:, 0]) - 1, max(X[:, 0]) + 1)
yy = a * xx - (clf.intercept_[0]) / w[1]# 计算边界线(间隔)
margin = 1 / np.linalg.norm(w)
yy_down = yy - np.sqrt(1 + a ** 2) * margin
yy_up = yy + np.sqrt(1 + a ** 2) * margin# 绘图
plt.figure(figsize=(8, 6))# 分类点
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.coolwarm, s=30)# 决策边界
plt.plot(xx, yy, 'k-')# 间隔边界
plt.plot(xx, yy_down, 'k--')
plt.plot(xx, yy_up, 'k--')# 支持向量
plt.scatter(clf.support_vectors_[:, 0],clf.support_vectors_[:, 1],s=150, facecolors='none', edgecolors='k', linewidths=1.5, label='Support Vectors')plt.legend()
plt.title("SVM Decision Boundary with Margin and Support Vectors")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.grid(True)
plt.show()


9. 应用场景

SVM 被广泛应用于以下任务:

  • 图像分类、人脸识别、字符识别(如 OCR)

  • 基因数据分析与医学诊断

  • 文字情感分类与垃圾邮件检测

  • 股票趋势预测与回归任务


10. 小结

        支持向量机是一种功能强大的分类与回归工具,其“最大间隔 + 核技巧”的方法为机器学习提供了坚实的模型选择方式。在合适的参数和核函数配置下,SVM 能够提供强鲁棒性与良好的泛化能力。对于中小规模问题,SVM 是值得优先尝试的模型之一。

用一句最简单的话讲明白SVM支持向量机

        SVM支持向量机是一种机器学习算法,它通过找到一个最优的超平面来分类数据点,使得不同类别的数据点尽可能分开

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

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

相关文章

蓝桥杯 拼数(字符串大小比较)

题目描述 设有 n 个正整数 a1​…an​,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。 输入格式 第一行有一个整数,表示数字个数 n。 第二行有 n 个整数,表示给出的 n 个整数 ai​。 输出格式 一个正整…

Elasticsearch 系列专题 - 第三篇:搜索与查询

搜索是 Elasticsearch 的核心功能之一。本篇将介绍如何构建高效的查询、优化搜索结果,以及调整相关性评分,帮助你充分发挥 Elasticsearch 的搜索能力。 1. 基础查询 1.1 Match Query 与 Term Query 的区别 Match Query:用于全文搜索,会对查询词进行分词。 GET /my_index/_…

本地电脑使用sshuttle命令将网络流量代理到ssh连接的电脑去实现访问受限网络

本地电脑使用sshuttle命令将网络流量代理到ssh连接的电脑去实现访问受限网络 安装使用 工作过程中, 经常会遇到, 需要访问客户内网环境的问题, 一般都需要安转各式各样的VPN客户端到本地电脑上, 软件多了也会造成困扰, 所有, 找了一款还不错的命令工具去解决这个痛点 安装 官方…

双相机结合halcon的条码检测

以下是针对提供的C#代码的详细注释和解释,结合Halcon库的功能和代码结构进行说明: --- ### **代码整体结构** 该代码是一个基于Halcon库的条码扫描类GeneralBarcodeScan,支持单台或双台相机的条码检测,并通过回调接口返回结果。…

python基础语法12-迭代器与生成器

Python 生成器与迭代器详解 在 Python 中,生成器和迭代器是处理大量数据时的强大工具。它们能够帮助我们节省内存,避免一次性加载过多数据。生成器通过 yield 关键字实现,允许我们逐步产生数据,而迭代器通过实现特定的接口&#…

公司内部建立pypi源

有一篇建立apt源的文章在这里,需要的可以查看:公司内部建立apt源-CSDN博客 server: pip install pypiserver mkdir -d pypi/packages cp test.whl pypi/packages pypi-server run --port 8080 /home/xu/pypi/packages & 网页访问:http:…

VMware Workstation/Player 的详细安装使用指南

以下是 VMware Workstation/Player 的完整下载、安装指南,包含详细步骤、常见问题及解决方法,以及进阶使用技巧,适用于 Windows 和 macOS 用户。 VMware Workstation/Player 的详细安装使用指南—目录 一、下载与安装详细指南1. 系统要求2. 下…

蓝桥杯python组考前准备

1.保留k位小数 round(10/3, 2) # 第二个参数表示保留几位小数 2.输入代替方案(加速读取) import sys n int(sys.stdin.readline()) # 读取整数(不加int就是字符串) a, b map(int, sys.stdin.readline().split()) # 一行读取多个…

【JSON2WEB】16 login.html 登录密码加密传输

【JSON2WEB】系列目录 【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSO…

计算机网络起源

互联网的起源和发展是一个充满创新、突破和变革的历程,从20世纪60年代到1989年,这段时期为互联网的诞生和普及奠定了坚实的基础。让我们详细回顾这一段激动人心的历史。 计算机的发展与ARPANET的建立(20世纪60年代) 互联网的诞生…

洛谷P1824进击的奶牛简单二分

题目如下 代码如下 谢谢观看

如何建立高效的会议机制

建立高效的会议机制需做到:明确会议目标、制定并提前分发议程、控制会议时长、确保有效沟通与反馈、及时跟进执行情况。其中,明确会议目标是核心关键,它直接决定了会议的方向与效率。只有明确目标,会议才不会偏离初衷,…

开源AI大模型AI智能名片S2B2C商城小程序:科技浪潮下的商业新引擎

摘要: 本文聚焦于科技迅猛发展背景下,开源AI大模型、AI智能名片与S2B2C商城小程序的融合应用。通过分析元宇宙、人工智能、区块链、5G等前沿科技带来的商业变革,阐述开源AI大模型AI智能名片S2B2C商城小程序在整合资源、优化服务、提升用户体验…

基于大模型构建金融客服的技术调研

OpenAI-SB api接口 https://openai-sb.com/ ChatGPT与Knowledge Graph (知识图谱)分享交流 https://www.bilibili.com/video/BV1bo4y1w72m/?spm_id_from333.337.search-card.all.click&vd_source569ef4f891360f2119ace98abae09f3f 《要研究的方向和准备》 https://ww…

WSA(Windows Subsystem for Android)安装LSPosed和应用教程

windows安卓子系统WSA的Lsposed和shamiko的安装教程 WSA(Windows Subsystem for Android)安装LSPosed和应用教程 一、环境准备 在开始之前,请确保: 已经安装好WSA(Windows Subsystem for Android)已经安装好ADB工具下载好LSPosed和Shamiko框架安装包 二、连接WSA 首先需要…

辛格迪客户案例 | 河南宏途食品实施电子合约系统(eSign)

01 河南宏途食品有限公司:食品行业的数字化践行者 河南宏途食品有限公司(以下简称“宏途食品”)作为国内食品行业的创新企业,专注于各类食品的研发、生产和销售。公司秉承“质量为先、创新驱动、服务至上”的核心价值观&#xff…

手机静态ip地址怎么获取?方法与解析‌

而在某些特定情境下,我们可能需要为手机设置一个静态IP地址。本文将详细介绍手机静态IP地址详解及获取方法 一、什么是静态IP地址? 静态IP:由用户手动设置的固定IP地址,不会因网络重启或设备重连而改变。 动态IP:由路…

天下飞飞【老飞飞服务端】+客户端+数据库测试带视频教程

天下飞飞服务器搭建测试视频 天下飞飞【老飞飞服务端】客户端数据库测试带视频教程 完整安装教程。 测试环境 系统server2019 sql2022数据库 sql的安装 odbc搭建 sql加载数据库 此测试端能用于服务器搭建测试。 下载地址为:https://download.csdn.net/d…

Gitea的安装和配置以及应用

Gitea的安装和配置以及应用 一、安装 1、创建数据库和数据库账户(pg) su – postgres -c "psql" CREATE ROLE gitea WITH LOGIN PASSWORD gitea; CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE …

如何更改OCP与metadb集群的连接方式 —— OceanBase运维管理

背景 许多用户都会借助OCP平台来进行OceanBase集群的运维与监控,且因为考虑单节点的OCP部署,在遇故障时可能会短时间出现无法管控 OceanBase集群,多数用户倾向于采用多节点方式来部署OCP,即 OCP的 metadb集群也是三节点的集群部署…