SVM(支持向量机)基本形式推导

news/2024/11/29 1:51:00/

据说在dl之前是SVM撑起了ml的半片天,学习后发现SVM是由纯粹的数学推导、转化、求解、优化“堆砌”而来,不如说是数学撑起了ml,ml是数学的学科。以下根据老师ppt上讲解的思路讲讲个人对SVM基本形式推导的理解。


在这里插入图片描述
margin(间隔)的定义:
在这里插入图片描述
超平面的法线(normal)为ω\omegaω,margin为点x(i)x^{(i)}x(i)到超平面ωT+b=0\omega^T+b=0ωT+b=0的距离,因此点x(i)−γ(i)×ω∣∣ω∣∣x^{(i)}-\gamma^{(i)}\times\frac{\omega}{||\omega||}x(i)γ(i)×ωω(红色圈)在超平面上。
ωT(x(i)−γ(i)×ω∣∣ω∣∣)+b=0\omega^T(x^{(i)}-\gamma^{(i)}\times\frac{\omega}{||\omega||})+b=0ωT(x(i)γ(i)×ωω)+b=0
⟹ωTx(i)−γ(i)×ωTω∣∣ω∣∣+b=0\Longrightarrow \omega^Tx^{(i)}-\gamma^{(i)}\times\frac{\omega^T\omega}{||\omega||}+b=0ωTx(i)γ(i)×ωωTω+b=0
⟹ωTx(i)∣∣ω∣∣−γ(i)×ωTω∣∣ω∣∣2+b∣∣ω∣∣=0\Longrightarrow \frac{\omega^Tx^{(i)}}{||\omega||}-\gamma^{(i)}\times\frac{\omega^T\omega}{||\omega||^2}+\frac{b}{||\omega||}=0ωωTx(i)γ(i)×ω2ωTω+ωb=0
ωTω=∣∣ω∣∣2\omega^T\omega=||\omega||^2ωTω=ω2,因此
⟹ωTx(i)∣∣ω∣∣+b∣∣ω∣∣=γ(i)\Longrightarrow \frac{\omega^Tx^{(i)}}{||\omega||}+\frac{b}{||\omega||}=\gamma^{(i)}ωωTx(i)+ωb=γ(i)

乘上y(i)∈{−1,1}y^{(i)}\in\{-1,1\}y(i){1,1}得到Geometric margin(几何间隔):
在这里插入图片描述
容易发现 c(ωTx+b)=0c(\omega^Tx+b)=0c(ωTx+b)=0 同样可以描述该超平面,这并不改变γ\gammaγ的值,或者说存在多组满足 ωTx+b=0\omega^Tx+b=0ωTx+b=0(ω,b)(\omega,b)(ω,b),我们只需要用其中一个作描述,因此后面约定miniy(i)(ωTx(i)+b)=1min_i\ {y^{(i)}}(\omega^Tx^{(i)}+b)=1mini y(i)(ωTx(i)+b)=1.

在这里插入图片描述
定义整个training set的间隔:
在这里插入图片描述

优化目标:最大化间隔
在这里插入图片描述
变换将γ\gammaγ视为参数,增加约束γ(i)≥γ\gamma^{(i)}\geq\gammaγ(i)γ.
在这里插入图片描述
在这里插入图片描述
对于SVM来说去掉一些不在ωTx(i)+b=±γ∣∣ω∣∣\omega^Tx^{(i)}+b=\pm\gamma||\omega||ωTx(i)+b=±γω平面上的数据点并不影响模型,该平面称为支持平面,平面上的数据点称为支持向量(support vector).更准确地说,sv确定了支持平面,sv的margin γ(i)\gamma^{(i)}γ(i)是约束s.t.γ(i)≥γs.t.\ \gamma^{(i)}\geq \gammas.t. γ(i)γ取等时的γ(i)\gamma^{(i)}γ(i),SVM(support vector machine)因此得名。为了简化表达,约定一组(ωT,b)(\omega^T,b)(ωT,b),使得支持平面变为ωTx(i)+b=±1\omega^Tx^{(i)}+b=\pm1ωTx(i)+b=±1.

在这里插入图片描述
因此SVM问题表述为
在这里插入图片描述
进一步地,我们得到SVM的基本形式(Primal Form):

在这里插入图片描述


http://www.ppmy.cn/news/1619.html

相关文章

Linux——匿名管道、命名管道及进程池概念和实现原理

目录 一.什么是匿名管道 二.如何使用匿名管道 (一).pipe原理 (二).pipe使用 三.命名管道概念及区别 (一).什么是命名管道 (二).与匿名管道的联系和区别 四.命名管道的使用 &…

【Python百日进阶-数据分析】Day124 - Plotly Figure参数:饼图(二)

文章目录metacustomdata 自定义数据domain 域automarginmarker 标记textfont 文字字体textinfo 文本信息direction 方向holehoverlabel 悬停标签insidetextfont 内部文字字体insidetextorientation 内部文本方向outsidetextfont 外部文本字体rotation 旋转scalegroupsort 排序u…

华为机试真题 C++ 实现【连接器问题】【2022.11 Q4新题】

目录 题目 思路 考点 Code 题目 有一组区间[a0,b0],[a1,b1],…(a,b表示起点,终点),区间有可能重叠、相邻,重叠或相邻则可以合并为更大的区间; 给定一组连接器[x1,x2,x3,…](x表示连接器的最大可连接长度,即x>=gap),可用于将分离的区间连接起来,但两个…

GIT分布式版本控制系统 | 命令讲解入门

Git概述 Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件;分布式相比于集中式的最大区别在于开发者可以提交到本地&#xff0c…

【免费赠送源码】Springboot喵喵宠物医院管理系统ti5f6计算机毕业设计-课程设计-期末作业-毕设程序代做

【免费赠送源码】Springboot喵喵宠物医院管理系统ti5f6计算机毕业设计-课程设计-期末作业-毕设程序代做 【免费赠送源码】Springboot喵喵宠物医院管理系统ti5f6计算机毕业设计-课程设计-期末作业-毕设程序代做本源码技术栈: 项目架构:B/S架构 开发语言…

[go学习笔记.第十八章.数据结构] 1.基本介绍,稀疏数组,队列(数组实现),链表

一.基本介绍 1.数据结构(算法)的介绍 (1).数据结构是一门研究算法的学科,自从有了编程语言也就有了数据结构,学好数据结构可以编写出更加漂亮,更加有效率的代码 (2).要学习好数据结构就要多多考虑如何将生活中遇到的问题用程序去实现解决 (3).程序&…

Linux UART编程 驱动蓝牙芯片

在熟悉了UART概念后&#xff0c;我们要学以致用&#xff0c;在Linux用起来来驱动起来蓝牙芯片&#xff01; 我们直接借用man来看下&#xff0c;命令如下&#xff1a; man termios 1.头文件引用 #include <termios.h> #include <unistd.h> 2.串口打开关闭 open…

数据库基础 - 数据类型、关键字、cmd中操作数据库的命令

cmd中操作数据库的命令 mysql -hlocalhost -用户名 -密码 show database&#xff1b;查询数据库中的小数据库 show 数据库名&#xff1b;查询某一个小数据库 show 表名&#xff1b;查询表的结构 exit 退出数据类型 数值类型 int &#xff1a;整形 double&#xff1a;双精度&…