支持向量机-数学模型

news2024/11/21 1:23:28

支持向量机(support vector machines, SVM)是一种二分类模型。基本模型是定义在特征空间上的间隔最大的线性分类器;学习策略:间隔最大化;学习算法:求解凸二次规划的最优化算法。

支持向量机分为线性可分支持向量机(linear support vector machine in linearly separable case)、线性支持向量机(linear support vector machine)、非线性支持向量机(non-linear support vector machine)。

n n n 维空间的超平面 ( w T x + b = 0 \left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b=0\right. (wTx+b=0,其中 w , x ∈ R n ) \left.\boldsymbol{w}, \boldsymbol{x} \in \mathbb{R}^n\right) w,xRn) :

  • 超平面方程不唯一
  • 法向量 w \boldsymbol{w} w 和位移项 b b b 确定一个唯一超平面
  • 法向量 w \boldsymbol{w} w 垂直于超平面(缩放 w , b \boldsymbol{w}, b w,b 时, 若缩放倍数为负数会改变法向量方向)
  • 法向量 w \boldsymbol{w} w 指向的那一半空间为正空间,另一半为负空间
  • 任意点 x \boldsymbol{x} x 到超平面的距离公式为

r = ∣ w T x + b ∣ ∥ w ∥ r=\frac{\left|\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b\right|}{\|\boldsymbol{w}\|} r=w wTx+b

  • 若存在一个划分样本类别的超平面,则存在无数个可划分的超平面。

线性可分支持向量机

如下图所示,分类目标是将两类样本分开。
在这里插入图片描述
二分类问题中,划分超平面应满足(以下条件可扩充至高维的情形):

  1. 正确划分两类样本
  2. 过「支持向量」且平行于「划分超平面」的两个超平面距离最大(间隔最大
  3. 距所有「支持向量」距离相等

数学模型

根据划分超平面的满足条件,推导支持向量机的数学模型。

定义数据及标签

给定训练数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } D=\left\{\left(\boldsymbol {x_1}, y_1\right),\left(\boldsymbol {x_2}, y_2\right), \ldots,\left(\boldsymbol {x_m}, y_m\right)\right\} D={(x1,y1),(x2,y2),,(xm,ym)},共有两类标签 y i ∈ { − 1 , + 1 } y_i \in\{-1,+1\} yi{1,+1} y i = − 1 y_i=-1 yi=1 为反例, y i = + 1 y_i=+1 yi=+1 为正例。

划分超平面的线性模型

划分超平面线性模型: w T x + b = 0 \boldsymbol{w}^{\boldsymbol{T}} \boldsymbol{x}+b=0 wTx+b=0。其中, w = ( w 1 , w 2 , … , w d ) T \boldsymbol{w}= \left(w_1, w_2, \ldots, w_d\right)^\mathrm{T} w=(w1,w2,,wd)T 为法向量,决定超平面的方向; b b b 为偏移项,决定超平面与原点间的距离。划分超平面可简记为 ( w , b ) \left(\boldsymbol{w}, b\right) (w,b)

正确线性划分

假设超平面 ( w , b ) (\boldsymbol{w}, b) (w,b) 能将训练样本正确分类,

从划分超平面来看,对于 ( x i , y i ) ∈ D \left(\boldsymbol{x}_i, y_i\right) \in D (xi,yi)D,若 y i = y_i= yi= + 1 +1 +1,则有 w T x i + b ⩾ 0 \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_i+b \geqslant 0 wTxi+b0;若 y i = − 1 y_i=-1 yi=1, 则有 w T x i + b < 0 \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_i+b<0 wTxi+b<0。简写为:
y i [ w T x i + b ] ⩾ 0 (1) y_i [\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_i+b ] \geqslant 0 \tag 1 yi[wTxi+b]0(1)
从穿过「支持向量」且平行于「划分超平面」的两个超平面来看,对于 ( x i , y i ) ∈ D \left(\boldsymbol{x}_i, y_i\right) \in D (xi,yi)D,若 y i = + 1 y_i=+1 yi=+1,则有 w T x i + b ⩾ + 1 \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_i+b \geqslant+1 wTxi+b+1

y i = − 1 y_i=-1 yi=1,则有 w T x i + b ⩽ − 1 \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_i+b \leqslant-1 wTxi+b1。简写为:
y i [ w T x i + b ] ⩾ 1 (2) y_i [\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_i+b ] \geqslant 1 \tag 2 yi[wTxi+b]1(2)
确定划分超平面时只有支持向量起作用,其他样本点不起作用。如果移动支持向量将改变所求的解;但移动、去掉其他样本点,解不会改变,因此采用公式 (2) 来表示正确线性划分更好。

间隔最大

两类支持向量所在超平面间的距离支持向量到划分超平面的距离*2两个角度,可得异类支持向量到划分超平面的距离和为:
γ = 2 ∣ ∣ w ∣ ∣ \gamma = \frac{2}{|| \boldsymbol{w} ||} γ=∣∣w∣∣2
综上,可得支持向量机数学模型:
min ⁡ w , b 1 2 ∥ w ∥ 2  s.t.  y i ( w T x i + b ) ⩾ 1 , i = 1 , 2 , … , m . \begin{align} \min _{\boldsymbol{w}, b} & \frac{1}{2}\|\boldsymbol{w}\|^2 \tag{3a} \\ \text { s.t. } & y_i\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_i+b\right) \geqslant 1, \quad i=1,2, \ldots, m . \tag{3b} \end{align} w,bmin s.t. 21w2yi(wTxi+b)1,i=1,2,,m.(3a)(3b)
目标函数表示:过「支持向量」的平行于「最优划分超平面」的两个超平面距离最大(间隔最大)。

目标函数中乘 1 / 2 1/2 1/2 的目的是便于求导。

思考

  • 约束方程为什么乘 y i y_i yi

    w T x i + b \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_i+b wTxi+b 的符号与类别标记 y i y_i yi 的符号是否一致能够表示分类是否正确。

  • 约束方程右端为什么是1?可以为其他数吗?

    约束方程右端的数可以改成任意的正数。若改为正数 a a a ,意味着所有向量距离最优划分超平面最小距离为 a a a,参数 w 、 b \boldsymbol{w}、b wb 的值与原来的为 1 时的只差 a a a 倍。

  • 为什么取 y i y_i yi 为 -1 或 1?

    两个值表示两类不同样本,和 w T x i + b = ± 1 \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_i+b = \pm 1 wTxi+b=±1 式中的 1 1 1 没有关系,也可取其他值,如:0 和 1、1 和 2,……此处定为 -1 或 1 是为了便于推导数学模型,如公式 (2) 的简洁形式。

  • 为什么设支持向量所在超平面方程为 w T x i + b = ± 1 \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_i+b = \pm 1 wTxi+b=±1?可以是 w T x i + b = ± 5 \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_i+b = \pm 5 wTxi+b=±5 吗?

    原则上说,这两条直线可以是 w T x + b = ± k \boldsymbol{w}^{\boldsymbol{T}} \boldsymbol{x}+b= \pm k wTx+b=±k ,其中, k k k 为任意常数。若对上式两边同时乘以 1 k \frac{1}{k} k1,并令 w T = 1 k w T , b = 1 k b \boldsymbol{w}^{\boldsymbol{T}}=\frac{1}{k} \boldsymbol{w}^{\boldsymbol{T}}, b=\frac{1}{k} b wT=k1wT,b=k1b ,直线改为: w T x + b = ± 1 \boldsymbol{w}^{\boldsymbol{T}} \boldsymbol{x}+b=\pm 1 wTx+b=±1,最优划分超平面依然是 w T x + b = 0 \boldsymbol{w}^{\boldsymbol{T}} \boldsymbol{x}+b=0 wTx+b=0 ,但是数学模型的最优值发生变化。

求解

公式 (3) 为凸二次规划(convex quadratic programming)问题,处理用优化计算包求解,还可利用原问题的对偶问题来求解。


参考:

《机器学习》周志华

《统计学习方法(第二版)》李航

支持向量机(SVM) | notebook (yubincloud.github.io)

支持向量机算法(SVM)详细讲解_qq_38422157的博客-CSDN博客_

浙江大学胡浩基机器学习课程现场录播合集 p=7

【吃瓜教程】《机器学习公式详解》(南瓜书) p=8

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

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

相关文章

自动驾驶感知——激光雷达基本概念|激光雷达点云|激光雷达的标定

文章目录1. 激光雷达基本概念1.1 激光雷达特点1.2 激光雷达测距原理1.2.1 系统组成1.2.2 激光雷达测距原理1.3 常见的激光雷达1.3.1 机械旋转式激光雷达1.3.2 Velodyne HDL-64E1.3.3 固态激光雷达1.3.4 Flash型固态激光雷达1.3.5 相控阵固态激光雷达1.3.6 MEMS型固态激光雷达1.…

NX二开ufun函数UF_MODL_create_surf_from_cloud(使用现有点创建B曲面)

本节主要讲使用现有点创建B曲面的ufun函数UF_MODL_create_surf_from_cloud&#xff0c;这些点可以按任何顺序出现&#xff0c;但是必须有足够的点来定义平面。 先看实例效果图&#xff1a; 1、函数结构 int UF_MODL_create_surf_from_cloud &#xff08; int point_cnt&#…

双栏Latex模板插入多个图片的各种排布

目录 问题描述&#xff1a; 问题解决&#xff1a; 1. 插入一个图片 示意图如下&#xff1a; 2.插入2x1两个图片&#xff1a;2x1 示意图如下&#xff1a; 3. 插入1x2两个图片&#xff1a;1x2 示意图如下&#xff1a; 4.插入2x2两个图片&#xff1a;2x2 示意图如下&…

shell脚本set -eu引起的学习笔记

本文将介绍Bash中 set -euxo pipefail 大佬的文章学习膜拜体验&#xff0c;它们可以帮助你写出更容易维护也更安全的脚本。这也是Bash脚本的终极调试手段&#xff0c;希望你以后在自己的脚本中加上这么一行&#xff0c;头顶也能少秃一点 今天打开一个脚本《JetsonNano使能SPI总…

00后真的是躺平的一代吗?已经被公司新来的00后卷哭了

2023年开年了&#xff0c;公司也来了许多新面孔&#xff0c;其中居然有一个是00年的&#xff0c;虽然也给公司带来了一些新的血液&#xff0c;但也让我意识到&#xff0c;自己年级确实不小了。这小老弟是去年毕业的&#xff0c;在某软件公司干了半年&#xff0c;现在跳槽到我们…

java常用类: String,StringBuffer和StringBuilder的底层区别

java常用类型: Ineteger等包装类 String类&#xff0c;StringBuffer类和StringBuilder类 Math类及常用方法 System类及常用方法 Arrays类及常用方法 BigInteger类和BigDecimal类及常用方法 日期类Date类,Calender类和LocalDateTime类 文章目录String介绍String创建细节String s…

大数据技术架构(组件)13——Hive:字符串函数

1.4.7、字符串函数1.4.7.1、asciiselect ascii(a);1.4.7.2、base64-->Hive0.12.0select base64(cast(abcd as binary));1.4.7.3、character_length-->Hive2.2.01.4.7.4、chr-->Hive1.3.01.4.7.5、concatselect concat(1,1,2,a),concat(1,a,null);1.4.7.6、context_ngr…

【JavaSE】ArrayList的扩容机制源码分析

文章目录1. ArrayList概述2. ArrayList构造方法源码分析3. ArrayList.add()源码分析4. ArrayList.addAll()源码分析5. 总结1. ArrayList概述 ArrayList是Java集合框架中比较常用的一个数据结构了&#xff0c;它底层是基于数组实现的。数组是固定大小的&#xff0c;但是ArrayLi…

禾川HCQ+X3E ModBUS 电机远程启动

前面讲过了 通过EtherCat总线级联X3E控制伺服电机,这次使用ModBus总线远程控制该电机启停。 硬件: HCQ0 1100/1200D X3EB 驱动 SV系列电机,主机电脑或者主PLC,硬件连接:电脑网口连HCQ0 port1 port2 连X3EB,软件需要用到TCP调试工具。 步骤一通讯: 1建立工程,修改本机地…

1月31日 : 读书笔记

为了让操作系统能够使用32位模式&#xff0c;需要对CPU做各种设定 最近的操作系统能同时运行多个程序&#xff0c;如果内存地址的使用范围重叠了怎么办&#xff1f;解决这个问题的方法就是分段。 什么是分段&#xff1f; 打个比方&#xff0c;将4GB的内存分成很多块&#xff0c…

【Mysql第五期 排序与分页】

文章目录案例使用的数据脚本1. 排序数据1.1 排序规则1.2 单列排序1.3 多列排序2.分页2.1 需求2.2 实现规则3.课后习题扩展分析原因问题解决总结案例使用的数据脚本 1.mysql脚本下载链接https://download.csdn.net/download/qq_43674360/87408079 2.或者自己新建一个sql后缀文本…

京东数据分析(竞品监控):飞利浦王牌产品在中国失利

近日&#xff0c;飞利浦集团发布了2022年第四季度及全年的业绩报告。根据报告显示&#xff0c;第四季度集团销售额达54亿欧元&#xff0c;可比销售额增长3%&#xff0c;可比订单量减少8%。 而全年业绩数据显示&#xff0c;集团销售额为178亿欧元&#xff0c;可比销售额下降3%&a…

sql进阶,多表及关联

–odps sql –– –author:宋文理 –create time:2023-02-01 16:24:24 –– – 创建非分区表 CREATE TABLE csxx_ffq( rq STRING COMMENT ‘日期’, xh BIGINT COMMENT ‘序号’, sj STRING COMMENT ‘数据’ ) COMMENT ‘测试数据&#xff08;非分区表)’; – 创建分区表 CRE…

ModuleNotFoundError: No module named ‘jnius‘

在termux中安了 ubuntu22.04 &#xff0c;在其中中使用apt install python3-pip 后运行pip3出错 Traceback (most recent call last):File "/usr/lib/python3/dist-packages/pip/_vendor/platformdirs/android.py", line 85, in _android_folderfrom jnius import au…

call,apply,bind的使用及原理

call,apply,bind的使用方法 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"…

StarRocks市场渗透率跻身Top10!

近日&#xff0c;国内著名的研究咨询机构艾瑞咨询发布了《2022年中国数据库研究报告》&#xff08;以下简称“报告”&#xff09;。报告指出&#xff0c;目前数据库产品的国内渗透率达到前所未有的高度&#xff0c;且头部效应明显。其中&#xff0c;StarRocks以“极速统一”的性…

java常用类:日期类Date,Calender和LocalDateTime

java常用类型: Ineteger等包装类 String类&#xff0c;StringBuffer类和StringBuilder类 Math类及常用方法 System类及常用方法 Arrays类及常用方法 BigInteger类和BigDecimal类及常用方法 日期类Date类,Calender类和LocalDateTime类 文章目录引言日期类Date(第一代)时间戳转字…

缓存更新策略分析

缓存常用于读多写少的场景&#xff0c;用于缓存结果数据&#xff0c;降低响应时间&#xff0c;提高服务性能。通常缓存与数据库一起使用&#xff0c;数据库负责持久化&#xff0c;缓存负责高性能。数据库无法同时满足持久化与高性能&#xff0c;所以引入缓存解决高性能问题。缓…

SwiftUI 文本框TextField添加清除按钮

这里写自定义目录标题前言/背景实现参考前言/背景 使用SwiftUI框架&#xff0c;希望在文本框TextField控件中输入内容后显示一个清除按钮,可以清空内容,像这样&#xff1a; UIKit 框架的 UITextField可以配置clearButtonMode,但是SwiftUI框架里的TextField没有这个&#xff…

javaScript常用语法

一、数据类型1. 原始数据类型(7个)number, string, boolean, undefined, null, symbol, bigint1.1 number包括以下三种浮点和整型数字(如3.1416926和3)NaN(not a number)不是数字infinity超出js数字范围的数值2. 引用数据类型(3个)object, array, function2.1 特殊类型RegExp, …