手推支持向量机01-硬间隔SVM-模型定义(最大间隔分类器)

2024-02-28 05:48

本文主要是介绍手推支持向量机01-硬间隔SVM-模型定义(最大间隔分类器),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1.写在前面

2.硬间隔SVM(hard-margin SVM)


1.写在前面

        支持向量机SVM是机器学习中非常流行的分类算法,最近朋友推荐了机器学习-白板推导系列(六)-支持向量机SVM(Support Vector Machine)视频,感觉这个大佬讲的非常棒,之前写的关于svm的东西太浅显了,于是重新整理,方便以后复习。我们主要是从理论推导SVM是怎么一步一步演化到一个优化问题。从核心概念上讲,有一个口头禅:SVM有三宝,间隔、对偶、核技巧

        首先核技巧和svm没有一个具体的绑定关系,在svm之前核函数已经有一套单独的理论体系了,只不过是核技巧能够让svm从普通特征空间映射到高维空间,可以实现一定的非线性分类。

        从类别上我们可以分为硬间隔SVM(hard-margin SVM)、软间隔SVM(soft-margin SVM)、kernel SVM。根据不同的情况我们使用不同的SVM算法。我们首先讲一下最基础的硬间隔SVM(hard-margin SVM)。

2.硬间隔SVM(hard-margin SVM)

        我们先从几何角度上看待SVM算法,首先SVM首次提出是为了解决二分类问题的,比如我们可以画一个平面,横纵坐标为x1,x2。我们在图中表示两个类别,一般情况下,我们需要找到一个线,让这两个类别正确的分割开。我们定义这个线是一个超平面w^{T}x+b,那么我们模型可以表示为f(w)=sign(w^{T}x+b),sign是一个符号函数,当后面大于0时,属于+1;当后面小于等于0时,属于-1。所以SVM本质上是一个纯粹的判别模型,跟概率没有关系

        我们可以知道能够正确把+1和-1分开的线是有好多条,可以说是有无数条的。我们在感知机学习算法PLA(Percetron Learning Algorithm)中根据初始值不同可以找到对应的超平面,从而将分类问题解决掉。这个SVM到底有什么特别之处呢?我们知道有那么多条可以分类的直线,哪一条才是最好的呢?SVM从几何意义上讲就是从这么多可以正确分类的超平面之中找到最好的一个。因为我们机器学习算法不仅仅要关注训练误差,我们更要关注期望损失,或者说测试误差

        假设我们找到上面这样一条线,它的鲁棒性是非常差的,也就是说这条直线对于噪声是非常的敏感。加入有一个样本在直线附近,很大概率出现误判,所以其泛化误差是非常差的。这个就是我们的出发点,找到最中间的一条超平面,让它离样本点都足够的大。

        硬间隔SVM,别称是最大间隔分类器。我们从这几个字出发,用数学语言将刚才几何意义表达出来。最大我们用max表示,间隔我们用margin表示,w,t都是相关的,样本点用这样表示:\{(x_{i},y_{i})\}_{i=1}^{N},x_{i}\euro R^{\Phi },y_{i}\euro \{-1,1\}  ,约束条件st满足:

        对于上面这个公式,我们可以进一步写做下面形式,同时我们最大间隔分类器通过数学语言表达出来了:

        下面我们看一下我们自己定义的间隔margin函数,我们把margin定义为样本点到超平面的最小距离distance。从N个样本distance里面,找到最小的那个distance。点到直线距离,我们重新复习一下:

        这样的话,margin和max margin就可以表示为:

        因为y_{i}(w^{T}x_{i}+b)>0,所以上面\left | w^{T}x_{i}+b \right |绝对值可以去掉。变成了下面形式:

        我们继续观察上面的式子,我们知道min是和Xi相关,和w是没有关系的。所以我们可以把w往前提,得到下面的式子:

        我们继续观察我们的约束st:y_{i}(w^{T}x_{i}+b)>0,可以讲一定存在一个 r>0,使得最小的y_{i}(w^{T}x_{i}+b)=r。并且把上面公式中替换成r。

        而且,这个 r 我们可以定义为1,其实是为了简化运算。为什么是可行的呢?这个是函数间隔和几何间隔的问题,(w^{T}x_{i}+b)是那个超平面,如果同时将w和b放大2倍,(2w^{T}x_{i}+2b),它们指的是同一个超平面。比如我们规定x的范数 \left \| w \right \|=1,2或者100,就是将它固定下来,这样我们指定一个超平面(w^{T}x_{i}+b)的时候,值是能够确定下来的。不然这个值是有无穷多的,因为可以随意缩放。r是一个大于0的数子,我们可以以任意比例缩放为1,对整个等式是没有影响的,仅仅为了简化运算。而且最大化可以转化为最小化。

        我们整个式子可以简化为:

        所以硬间隔SVM最后转化为了上面一个优化问题,并且是一个凸优化的问题。一共有N个约束,目标函数是二次的。整个几何意义转化为了凸优化问题,关于求解整个公式,我们会单独分析。如果样本数目不多,维数不多,就是一个简单的QP问题(二次规划问题),直接利用套件求解,如果复杂的话,需要引入对偶和kernel方法,用来求解该优化问题

这篇关于手推支持向量机01-硬间隔SVM-模型定义(最大间隔分类器)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/754536

相关文章

Mybatis对MySQL if 函数的不支持问题解读

《Mybatis对MySQLif函数的不支持问题解读》接手项目后,为了实现多租户功能,引入了Mybatis-plus,发现之前运行正常的SQL语句报错,原因是Mybatis不支持MySQL的if函... 目录MyBATis对mysql if 函数的不支持问题描述经过查询网上搜索资料找到原因解决方案总结Myb

Java领域模型示例详解

《Java领域模型示例详解》本文介绍了Java领域模型(POJO/Entity/VO/DTO/BO)的定义、用途和区别,强调了它们在不同场景下的角色和使用场景,文章还通过一个流程示例展示了各模型如何协... 目录Java领域模型(POJO / Entity / VO/ DTO / BO)一、为什么需要领域模

golang实现nacos获取配置和服务注册-支持集群详解

《golang实现nacos获取配置和服务注册-支持集群详解》文章介绍了如何在Go语言中使用Nacos获取配置和服务注册,支持集群初始化,客户端结构体中的IpAddresses可以配置多个地址,新客户... 目录golang nacos获取配置和服务注册-支持集群初始化客户端可选参数配置new一个客户端 支

深入理解Redis线程模型的原理及使用

《深入理解Redis线程模型的原理及使用》Redis的线程模型整体还是多线程的,只是后台执行指令的核心线程是单线程的,整个线程模型可以理解为还是以单线程为主,基于这种单线程为主的线程模型,不同客户端的... 目录1 Redis是单线程www.chinasem.cn还是多线程2 Redis如何保证指令原子性2.

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4

Django中的函数视图和类视图以及路由的定义方式

《Django中的函数视图和类视图以及路由的定义方式》Django视图分函数视图和类视图,前者用函数处理请求,后者继承View类定义方法,路由使用path()、re_path()或url(),通过in... 目录函数视图类视图路由总路由函数视图的路由类视图定义路由总结Django允许接收的请求方法http

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可