【机器学习】SVM入门-硬间隔模型

news2024/10/7 18:31:05

 本站原创文章,转载请说明来自《老饼讲解-机器学习》ml.bbbdata.com


目录

一. SVM的目标和思想   

1.1 SVM硬间隔模型的原始目的

1.2 SVM的直接目标

1.3 什么是支持向量

 二. SVM的支持平面的表示方式

2.1 支持面表示方式的初步思路

2.2 初步思路的缺陷与改进

2.3 支持面的最终表示方式

三. SVM模型表达式

3.1 SVM模型表达式

3.2 wx+b的意义

四. SVM模型损失函数

4.1 损失函数

4.2 损失函数解说


本文解说SVM的硬间隔损失函数的定义和思想,以及硬间隔损失函数的推导

一. SVM的目标和思想   


本节先大概了解SVM模型的主要思想和目标

1.1 SVM硬间隔模型的原始目的


SVM硬间隔模型用于样本线性可分的二分类,

它的原始目的是找出一个判别面,让样本离判断面的最小距离最大化,
 


这样的判别面称为SVM的最优判别面 

声明
本文所说的SVM都是指硬间隔模型,它基于样本线性可分,
硬间隔是相对软间隔模型而言,软间隔不要求样本线性可分


1.2 SVM的直接目标


 直接找最优判别面较难找,SVM并不是直接找最优判别面,
而是在两类样本之间,引入两个平行的支持面(支持面之间不能有样本)
然后让支持平面尽量撑开,

  当两个支持平面的距离最大化时,
两个支持平面的中心,就是要找的最优判别面
所以,
 SVM的直接目标是找出距离最大化的两个支持面
从而曲线救国达到找出最优判别面的原始目的


1.3 什么是支持向量


落在支持面上的样本,称为支持向量,
它们是模型的关键样本

 也就是说,看起来用很多样本训练模型,但最关键的样本其实并不多


 二. SVM的支持平面的表示方式

  
本节说明SVM支持平面的表示方法,是后面讲述模型和损失函数的基础和前提

2.1 支持面表示方式的初步思路


  一组支持面可以由(w,b,d)指定,

 (w,b)代表两个支持面的中心平面wx+b =0,
中心平面向两边展开d距离,就是两个支持面
 注: wx+b =0 同时也就是判别面


2.2 初步思路的缺陷与改进


 初步思路中的缺陷
初步思路中,用(w,b,d)来表示支持面
这种表述最大的问题是,
由于wx+b=0与k(wx+b)=0表示的是同一个平面,
虽然最优支持面只有一组,假设为(w,b,d)
但对所有k>0, (kw,kb,d)都能表示这组最优支持平面,
即最后的解(的表述)存在无限多个

改进思路
注意到d的取值范围为 (0,+\infty )
对平面wx+b=0,\dfrac{1}{\left \| w \right \| } 的取值范围也是(0,+\infty )

不妨用\dfrac{1}{\left \| w \right \| } 来替代d,这样可以消去d, 
这样的表示能让解的表述较为唯一,
如下

(w,b)表示的是以Wx+b=0为中心面两边展开\dfrac{1}{\left \| w \right \| }距离的一组支持面

而(kw,kb)虽然与(W,b)的中心面一致,但撑开的距离为\dfrac{1}{\left \| kw \right \| },
所以两者表示的不是同一组支持面(k=-1除外)



2.3 支持面的最终表示方式


SVM对支持面的表示最终设计如下,
👉支持面的表示方法:(w,b)
其中,
 wx+b=0是两个支持面的中心     
d=\dfrac{1}{\left \| w \right \| }
 是支持面离中面心的距离 
即由wx+b=0两边展开\dfrac{1}{\left \| w \right \| }
 距离,就得到了两个支持面

注:同时,wx+b=0也就是最后需要得到的判别面



   

三. SVM模型表达式


本节展示SVM模型的表达式,和讲解模型表达式的意义

3.1 SVM模型表达式


SVM模型数学表达式为
\text{y} = \text{sign}(wx+b)
也就是判断样本是在判别面的正侧还是负侧,
从而决定模型是正样本还是负样本

特别说明

光看表达式很容易让人误解,以为SVM是一个平面的模型
 但其实它是一个“三个平面”的模型:
以wx+b=0为判别平面,\dfrac{1}{\left \| w \right \|} 为支持距离生成两个支持平面,

共三个平面,如图: 

这家伙是带翅膀的!

虽然最后的判断核心是依靠判别面,

但支持面提供了样本可信程度的一个参考


3.2 wx+b的意义


由几何关系可知,样本到判别面的距离为
d(x) = \left | \dfrac{wx+b}{\left \| w \right \| } \right |
 
如果保留距离的正负号,则有
d_{\pm }(x) = \dfrac{wx_i+b}{\left \| w \right \| }
 
即有:
\begin{aligned} &d_{\pm }(x) = \dfrac{wx+b}{\left \| w \right \| } \\ \Rightarrow &d_{\pm }(x) = d*(wx+b) \\ \Rightarrow & \dfrac{ d_{\pm }(x)}{d} = wx+b \end{aligned}
 
其中 d=\dfrac{1}{\left \| w \right \| }是支持平面到判别平面的距离,
所以,wx+b的意义,是带符号的样本距离与支持距离的比值,
这样比较绕,不妨如下理解:
  

wx+b就是样本与判别平面的距离,
但这个距离是带正负号的,且它以支持距离为单位


四. SVM模型损失函数

本节讲解SVM模型(硬间隔)的损失函数和解读损失函数的意义

4.1 损失函数


SVM硬间隔损失函数如下

损失函数
L(w,b) = \dfrac{1}{2} \left \| w \right \|^2
约束条件:
\text{y}_i\left ( w x_i +b\right ) -1\geqslant 0


4.2 损失函数解说


损失函数的优化目标
损失函数的优化目标L(w,b) = \dfrac{1}{2} \left \| w \right \|^2的本质是最小化\left \| w \right \|
\left \| w \right \|=\dfrac{1}{d},所以本质是最大化两个支持面平间的距离(2d)
\left \| w \right \| 改成 \dfrac{1}{2} \left \| w \right \|^2 ,
加平方是为了可以去掉2范数里的根号,同时乘以\dfrac{1}{2}
进一步方便损失函数求导后的简洁

损失函数的约束条件
下面我们分析约束条件\text{y}_i\left ( w x_i +b\right ) \geqslant 1
将它拆成\text{y}_i=1\text{y}_i=-1两种场景:
\begin{cases} w x_i +b \geqslant 1, & \text{y}_i=+1 \\ w x_i +b \leqslant -1, & \text{y}_i=-1 \end{cases}
 
上面已经分析过,
wx+b 的意义就是样本与判别平面的距离(带符号,以支持距离为单位),
所以约束条件就是,
y=+1 时,即正样本,不能在正支持面的负侧
y= -1时,即负样本,不能在负支持面的正侧

损失函数意义总结
损失函数总的意思,
就是约束两个支持面必须在正负样本之间,
且两个支持面之间不能有样本,
然后最大化两个支持面之间的距离



 

笔者小故事


辨析清楚判别面、支持面、支持向量这些概念非常重要,
笔者最初学习时,因为不清晰这些概念,常常被误导
例如,
笔者误以为SVM要搞的是判别面,
在理解算法时,所有符号都往判别面上挂,
特别是损失函数中的\dfrac{1}{2} \left \| w \right \|^2,百思不得其解,
其实SVM一切一切一切都是在搞支持面,
符号的含义、函数的目标等等,都应该往支持面上挂。
损失函数\dfrac{1}{2} \left \| w \right \|^2 中的w在这里就不应理解成判别面的权重
而是支持面之间的距离,这才是它在损失函数中所要代表的对象
又例如,
笔者以为支持向量构成了支持面,
在看到支持面上只有一个样本时就疑惑了,
一个样本怎么能构成面呢?
其实不然,支持向量只是一个定义,说明这些样本是关键样本
SVM一直在找的只有支持面,支持向量和判别面是顺带出来的东西
认识到这点对笔者来说非常重要,
对SVM的理解方向正确了,一切也就简单合理了~


相关文章


老饼讲解|【逻辑回归】逻辑回归损失函数交叉熵形式的理解

老饼讲解|【原理】CART决策树算法实现流程

老饼讲解|【原理】逻辑回归原理

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

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

相关文章

基于Vue+ElementUI+MySQL+Express的学生管理系统(2)

2.搭建Express Web服务器 1.在E:\vue\shiyan9路径下创建score-server的文件夹放置Express Web服务器的相关文件。 图3 初始化package.json的信息 2.用Vscode打开score-server。并创建如图4所示的项目结构图。 以下目录中的文件依次为: 考试信息增删改查的接口。…

【BP回归预测】改进的鲸鱼算法优化BP神经网络回归预测(多输入单输出)【含Matlab源码 2184期】

⛄一、鲸鱼算法优化BP神经网络简介 1 鲸鱼优化算法(Whale Optimization Algorithm,WOA)简介 鲸鱼优化算法(WOA),该算法模拟了座头鲸的社会行为,并引入了气泡网狩猎策略。 1.1 灵感 鲸鱼被认为是世界上最大的哺乳动物…

DBCO-mPEG,5 kDa,二苯并环辛炔-MPEG, 5 KDA白色结晶状

●外观以及性质: DBCO-mPEG,5 kDa白色结晶状,其的分子量有多种,10kDa,20kDa,30kDa等一系列的。DBCO活化的聚乙二醇化试剂通过无铜“点击化学”反应与叠氮化物反应,形成稳定的三唑,不需要铜催化剂…

evpp mingw64编译过程

evpp是奇虎360的基于libevent的网络通讯库,源代码不错: https://github.com/Qihoo360/evpp/blob/master/readme_cn.md 它提供vs的编译结构,我用的是mingw64cmake,使用gnu12,把修改过程分享给大家。 步骤1. 修改CMake…

软考中级系统集成项目管理工程师自学好不好过?

可以试试,中级系统集成算是比较好考的一科目,每天的通过率都有30%的!是软考中通过率比较高的。 至于是否自学,有时间有精力就可以自学,在校生一般学习时间多,可以各个渠道搜集信息资料,可以自学…

高分子PEG点击试剂DBCO-PEG20K-OMe,二苯并环辛炔-PEG20K-甲基

DBCO-PEG20K-OMe​产品描述: DBCO-PEG20K-OMe属于高分子PEG点击试剂,DBCO 试剂是一类点击化学标记试剂,含有非常活泼的 DBCO((二苯并环辛炔)基团,​DBCO 试剂可以通过无铜点击化学与叠氮化物标…

vscode连接远程服务器进行cmake调试

一、cmake安装 cmake cmake-3.17.4.tar.gz : https://cmake.org/files/v3.17/cmake-3.17.4.tar.gz sudo apt-get install libssl-dev tar xvf cmake-3.17.4.tar.gz cd cmake-3.17.4 ./configure --prefix/usr make -j18 && sudo make install测试 二、配置 准备两…

如何找回删除的文件?数据恢复,看这几个方法

如果您的电脑出现了问题,或者是因为使用不当而删除了一些文件,那么您需要了解一下如何找回删除的文件。想要清理电脑文件数据,很多人会将其直接删除。其实这种做法是不可取的,因为这种做法可能会造成损失。如何找到已经删除的文件…

怎么把开源项目放到自己的github,gitee,gitea上

一、创建仓库(大部分可以不填) 二、删除.git文件夹 三、执行初始化命令(初始出.git文件夹) 在本地项目下执行命令 git init 四、与远程仓库建立关系 git remote add origin ssh://gitxx.xx.xx.xx:61022/shengbaitong/inst_ops…

IOC和DI入门案例

IOC案例 创建BookDao接口、BookDaoImpl类和BookService接口、BookServiceImpl类 1.BookDao package dao;public interface BookDao {public void save(); }2.BookDaoImpl类 package dao;public class BookDaoImpl implements BookDao{public void save(){System.out.printl…

Invisible Backdoor Attack with Sample-Specific Triggers 论文笔记

1. 论文信息 论文名称Invisible Backdoor Attack with Sample-Specific Triggers作者Yuezun Li(香港大学)出版社ICCV 2021pdf在线pdf 本地pdf代码TensorFlow简介提出了 sample-specific 以及 invisible 的 trigger。使用数字水印技术生成看不见的后门 …

MCE | 肿瘤微环境在癌症中的作用

在过去数十年中,通过使用免疫疗法、靶向疗法和联合方案,癌症治疗领域取得了很大的进步。但这些治疗方案中的绝大多数最终都无法治愈患者,甚至对治疗有显著初始反应的肿瘤也经常复发为耐药恶性肿瘤。另一方面,越来越多的证据表明&a…

A-Level经济例题解析及练习Budget Constraint

知识点:Budget Constraint例题 Question: Budget Constraint Hurley’s income: $1200, Prices: PF $4 per fish, PM $1 per mango A. If Hurley spends all his income on fish, how many fish does he buy? B. If Hurley spends all his income on mangos…

Java开发基础_04

六. 集合框架 #mermaid-svg-g9w5yNcJQzio5Xvm {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-g9w5yNcJQzio5Xvm .error-icon{fill:#552222;}#mermaid-svg-g9w5yNcJQzio5Xvm .error-text{fill:#552222;stroke:#55222…

【总结】Idea 编译maven项目报错NoSuchMethodError DefaultModelValidator

从网上git clone了一个项目,本地编译compile、打包package都没问题。 但是启动服务,启动不了,且查看Dependency Analyzer 没有任何依赖信息。执行Reimport时,报错如下。 错误信息 org.codehaus.plexus.component.repository.exc…

Git的简单使用

Git的简单使用一、关于版本控制1、文件的版本2、版本控制软件1.本地版本控制系统2.集中化的版本控制系统3.分布式的版本控制系统二、Git的简介1、什么是Git2、SVN的差异比较3、Git的记录快照4、Git中的三个区域5、使用Git的基本流程三、Git的基本操作1、配置Git1. 配置用户信息…

集合~List

List List集合概述和特点 List集合概述 有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素与Set集合不同,列表通常允许重复的元素 List集合特点 …

【JavaSE】String类总结,StringBuilder、StringBuffer、String的区别讲解

文章目录String对象的构造String类的一些常用方法求字符串的长度字符串判空字符串对象的比较字符串对象的查找字符串对象的转化字符串对象的截取字符串对象的替换字符串对象的拆分字符串对象的大小写转换常用方法总结StringBuilder与StringBuffer字符串为什么不可变String Stin…

Alibaba架构师内部最新发布SpringCloud开发手册,Github限时开源

微服务是SOA之后越来越流行的体系结构模式之一! 如果您关注行业趋势,就会发现,如今商业机构不再像几年前那样,开发大型应用程序,来管理端到端之间的业务功能,而是选择快速灵活的微服务。 通过微服务,架构师…

寒气难抵,跨境电商年底仍有一批卖家要出局!

2020年初的新冠疫情仍历历在目,跨境电商在这两年间也是经历了许多不同的波折和困难。从2020年到2022年,由于各国之间出于疫情防控等多方面的考虑,逐渐的增加贸易壁垒,致使跨境电商的物流成本大概增长了50%,物流成本占订…