支持向量机SVM——基于分类问题的监督学习算法

        支持向量机(SVM,Support Vector Machine)是一种常用于分类问题的监督学习算法,其核心思想是通过寻找一个最佳的超平面来将不同类别的数据点分开,从而实现分类。支持向量机广泛应用于模式识别、文本分类、图像识别等任务。

基本概念

  • 决策超平面: 在一个特征空间中,假设我们有一个二维数据集。通过绘制样本点及其对应的标签,我们希望找到一个直线(在二维空间中,这个超平面是线;在三维或更高维空间中,它是一个平面)来分隔这些数据点。对于SVM来说,我们不仅仅关心能分开数据点的任何一条直线,而是希望找到一条具有最大间隔的直线,间隔是指从直线到最近的数据点的距离。

  • 最大间隔: SVM的目标是通过最大化“间隔”来提高模型的泛化能力。间隔定义为从超平面到最近的训练样本点的距离,最近的点称为支持向量。最大化间隔可以帮助模型更好地分类新的、未见过的数据点。

  • 支持向量: 支持向量是位于边界上,或距离边界最近的数据点。支持向量在训练过程中起着决定性作用,因为它们直接影响超平面的定义。

  • 线性可分问题: 当数据集是线性可分的,即可以找到一个超平面把不同类别的点完全分开时,SVM会寻找那个最大化间隔的超平面。

  • 线性不可分问题: 在现实中,数据集往往是线性不可分的。在这种情况下,SVM通过引入核函数将数据映射到更高维的特征空间,使得在高维空间中数据变得线性可分。

线性SVM原理步骤

1、优化问题

假设我们有一个二分类问题,数据集包含 n 个样本,每个样本 x_{i} \epsilon \mathbb{R}^{d}(这个表示xi是一个d维向量,属于d维实数空间),标签 yi∈{−1,+1}。我们希望找到一个超平面,用方程 w^{T}x+b=0 来表示,其中:

  • w 是超平面的法向量

  • b 是超平面的偏置。

我们的目标是通过最大化间隔来找到最优的超平面。由于超平面到支持向量的距离为\frac{1}{\left \| w \right \|}

因此我们的优化问题可以转化最小化问题为: 

min\frac{1}{2}\left \| w \right \|^{2}

同时要满足约束条件:

y_{i}(w^{T}x_{i}+b)\geqslant 1   ,对于所有的 i = 1,2, ... , n

 这个约束条件确保了每个样本点都被正确分类,并且距离超平面至少有一个单位的间隔。

2、对偶问题

为了通过拉格朗日乘子法来求解这个优化问题,我们构建拉格朗日函数:

L(w,b,\alpha )=\frac{1}{2}\left \| w \right \|^{2}-\sum_{i=1}^{n}\alpha _{i}[y_{i}(w^{T}x_{i}+b)-1]

其中,\alpha _{i}是拉格朗日乘子。

通过对 w 求偏导数并令其为零,可以得到最优的 w,并计算出 b ,从而得到最终的决策超平面。

3、最终的决策函数

最终的决策函数是:

若 f(x) >= 0 ,则预测该类别为 +1 类,否则为 -1 类。

非线性SVM基本原理

        当数据不是线性可分时,SVM通过引入核函数将数据映射到高维空间,使得在这个高维空间中数据变得线性可分。

1、非线性原问题:

约束条件:

其中, ϕ(x) 是一个映射函数,用于将一个原始数据映射到高维,变成高维的数据。

举个例子讲解映射函数ϕ(x)

比如,有以下映射函数:

  • 样本 x1=(1,1)映射到 (1, 1, \sqrt{2})

  • 样本 x2=(2,−1) 映射到 (4, 1, -2\sqrt{2})

通常,直接使用映射后的数据点来求解优化问题通常是不可行的,因为我们并不直接知道映射函数 ϕ(x)的显式形式。然而,通过使用核函数,我们可以通过以下方式计算数据点的内积,进行隐士计算:

2、构造拉格朗日函数

拉格朗日函数其实等价于将约束条件也整合到问题的目标函数中。

为了将约束引入优化问题,我们使用拉格朗日乘子法。针对每个约束 yi(w⋅ϕ(xi)+b)≥1−ξi,引入一个拉格朗日乘子 αi≥0 ,表示每个约束条件的惩罚,并构造拉格朗日函数:

为了消除拉格朗日乘子引入的约束,我们对 w、b 和 ξi 求偏导数,并将其置为零,得到极值条件。

先将 w 代入拉格朗日函数L的部分:

得到:

最后将w以外剩余的两个极值代入拉格朗日函数L,我们得到目标函数:

3、对偶问题的最优化目标

最终的对偶问题可以写成:

通过对偶问题,我们能通过核函数有效处理高维空间的问题,而无需显式地计算映射 ϕ(xi)

通过求解对偶问题(过程复杂,就不写了),我们可以求解出最优的 αi​ ,接着求解出 w :

再求出 b

4、分类决策函数

对于原问题,SVM的最终分类决策函数是:

由于映射函数 ϕ(xi) 难以求解,我们利用核函数,根据对偶问题,我们得到最终分类决策函数:

若 f(x) >= 0 ,则预测该类别为 +1 类,否则为 -1 类。 

常见的核函数

#  内容来源于各渠道整理,结合了自己的见解。若对大噶有帮助的话,希望点个赞支持一下叭!

# 文章如有错误,欢迎大噶指正!

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

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

相关文章

node对接ChatGpt的流式输出的配置

node对接ChatGpt的流式输出的配置 首先看一下效果 将数据用流的方式返回给客户端,这种技术需求在传统的管理项目中不多见,但是在媒体或者有实时消息等功能上就会用到,这个知识点对于前端还是很重要的。 即时你不写服务端,但是服务端如果给你这样的接口,你也得知道怎么去使用联…

SobarQube实现PDF报告导出

文章目录 前言一、插件配置二、使用步骤1.新生成一个Token2.将拷贝的Token加到上文中执行的命令中3.查看报告 三、友情提示总结 前言 这篇博文是承接此文 .Net项目在Windows中使用sonarqube进行代码质量扫描的详细操作配置 描述如何导出PDF报告 众所周知,导出PDF功…

[Codesys]常用功能块应用分享-BMOV功能块功能介绍及其使用实例说明

官方说明 功能说明 参数 类型 功能 pbyDataSrcPOINTER TO BYTE指向源数组指针uiSizeUINT要移动数据的BYTE数pbyDataDesPOINTER TO BYTE指向目标数组指针 实例应用-ST IF SYSTEM_CLOCK.AlwaysTrue THENCASE iAutoState OF0: //读写完成信号在下次读写信号的上升沿或复位信号…

sql注入之二次注入(sqlilabs-less24)

二阶注入(Second-Order Injection)是一种特殊的 SQL 注入攻击,通常发生在用户输入的数据首先被存储在数据库中,然后在后续的操作中被使用时,触发了注入漏洞。与传统的 SQL 注入(直接注入)不同&a…

springboot实现简单的数据查询接口(无实体类)

目录 前言:springboot整体架构 1、ZjGxbMapper.xml 2、ZjGxbMapper.java 3、ZjGxbService.java 4、ZjGxbController.java 5、调用接口测试数据是否正确 6、打包放到服务器即可 前言:springboot整体架构 文件架构,主要编写框选的这几类…

我的第一个PyQt5程序

PyQt5的开发环境配置完成之后,开始编写第一个PyQt5的程序。 方法一:使用将.ui转换成.py文件的方法 import sys from FirstPyQt import Ui_MainWindow from PyQt5.QtWidgets import *#QtCore,QtGui,QtWidgets # from QtTest import Ui_MainWindow#导入Q…

C++ | Leetcode C++题解之第560题和为K的子数组

题目&#xff1a; 题解&#xff1a; class Solution { public:int subarraySum(vector<int>& nums, int k) {unordered_map<int, int> mp;mp[0] 1;int count 0, pre 0;for (auto& x:nums) {pre x;if (mp.find(pre - k) ! mp.end()) {count mp[pre - …

DVWA靶场通关——SQL Injection篇

一&#xff0c;Low难度下unionget字符串select注入 1&#xff0c;首先手工注入判断是否存在SQL注入漏洞&#xff0c;输入1 这是正常回显的结果&#xff0c;再键入1 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for…

MYSQL 精通索引【快速理解】

目录 1、什么是索引&#xff1f; 2、索引结构 1.为什么不使用二叉树呢&#xff1f; 2.B树数据结果 3.B树 4.Hash结构 3、索引语法 1.创建索引 2.查看索引 3.删除索引 4、SQL性能分析 1.SQL执行频次 2.慢查询日志 3.profile详情 4.EXPLAIN 5、索引规则 1.最左前缀法则 2.索…

【Framework系列】UnityEditor调用外部程序详解

需求介绍 之前Framework系列有介绍过导表配置工具&#xff0c;感兴趣的小伙伴可以看一看之前的文章《【Framework系列】Excel转Json&#xff0c;配置表、导表工具介绍》。由于导表工具和Unity是两个工程&#xff0c;导表工具不在Unity工程之内&#xff0c;所以在配置生成完成之…

Docker+Django项目部署-从Linux+Windows实战

一、概述 1. 什么是Docker Docker 是一个开源的应用容器引擎&#xff0c;支持在win、mac、Linux系统上进行安装。可以帮助我们在一台电脑上创建出多个隔离的环境&#xff0c;比传统的虚拟机极大的节省资源 。 为什么要创建隔离的环境&#xff1f; 假设你先在有一个centos7.…

[GXYCTF2019]BabyUpload--详细解析

信息搜集 进入界面&#xff0c;直接就是文件上传界面&#xff0c;结合题目&#xff0c;得知考察的是文件上传漏洞。 思路 文件上传漏洞&#xff0c;第一步先看有没有前端校验&#xff1a; 没有前端校验。 我们写一个一句话木马文件&#xff1a; //shell.php GIF89a <…

北京大学c++程序设计听课笔记101

基本概念 程序运行期间&#xff0c;每个函数都会占用一段连续的内存空间。而函数名就是该函数所占内存区域的起始地址&#xff08;也称“入口地址”&#xff09;。我们可以将函数的入口地址赋给一个指针变量&#xff0c;使该指针变量指向该函数。然后通过指针变量就可以调用这个…

基本数据类型和包装类型的区别、缓存池、自动拆箱装箱(面试题)

目录 1. 八种基本类型及对应包装类型 2. 基本类型和包装类型 区别 3. 自动拆箱装箱 3.1 自动装箱 3.2 自动拆箱 3.3 缓存池 4. 高频面试案例分析 1. 八种基本类型及对应包装类型 基本数据类型类型描述范围&#xff08;指数形式&#xff09;位数包装类型byte整型&#x…

双子数(枚举素数)

#include <iostream> #include <vector> #include <cmath> using namespace std;vector<long long> generate(long long n) {vector<bool> is(n 1, true);// 标记是否为素数&#xff0c;初始值全为 truevector<long long> v;is[0] is[1]…

Springboot集成ElasticSearch实现minio文件内容全文检索

一、docker安装Elasticsearch &#xff08;1&#xff09;springboot和Elasticsearch的版本对应关系如下&#xff0c;请看版本对应&#xff1a; 注意安装对应版本&#xff0c;否则可能会出现一些未知的错误。 &#xff08;2&#xff09;拉取镜像 docker pull elasticsearch:7…

思源笔记 Creating group siyuan (1000) permission denied (are you root?)

错误提示 siyuan_jx85-1 | Creating group siyuan (1000) siyuan_jx85-1 | addgroup: permission denied (are you root?) siyuan_jx85-1 | Creating group siyuan (1000) siyuan_jx85-1 | addgroup: permission denied (are you root?) siyuan_jx85-1 | Creating group siy…

基于Matlab的碎纸片的自动拼接复原技术

碎纸片的自动拼接复原技术 摘要&#xff1a;破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。目前发现对碎纸片的拼接大部分由人工完成&#xff0c;准确率较高&#xff0c;但耗费大量人力财力及时间&#xff0c;效率很低。随着计算机技术的…

SpringBoot(5)-SpringSecurity

目录 一、是什么 二、实战测试 2.1 认识 2.2 认证和授权 2.3 权限控制和注销 2.4 记住我 一、是什么 Spring Security是一个框架&#xff0c;侧重于为java应用程序提供身份验证和授权。 Web应用的安全性主要分为两个部分&#xff1a; 认证&#xff08;Authentication&…

【eNSP】企业网络架构实验——vlan间的路由通信(三)

VLAN间的路由是指不同VLAN之间的通信&#xff0c;通常VLAN是用来分割网络流量和提高网络安全性的。 一、VLAN 1. 什么是VLAN&#xff1f; VLAN&#xff0c;全称是虚拟局域网&#xff08;Virtual Local Area Network&#xff09;&#xff0c;是一种将物理局域网&#xff08;LA…