什么是支持向量机(Support vector machine)和其原理

作为机器学习的基础算法,SVM被反复提及,西瓜书、wiki都能查到详细介绍,但是总是觉得还差那么点,于是决定自己总结一下。

一、什么是SVM?

1、解决什么问题?

SVM,最原始的版本是用于最简单的线性二分类问题。当我们被给了一个新的数据点,其形式是一个p-维的向量,我们想知道它应该属于被一个(p-1)-维超平面分开的两半中哪一半。那么我们就想要通过已有数据找到“最有代表性的”超平面。这个超平面就是我们的分类标准。因为我们用到的是超平面而不是曲面,所以这是一个线性的问题。(加入核方法等可以改进为非线性分类)

2、怎么找超平面? 

以下是一个取p=2的示例图,从图里可以看出,有许多超平面可以对数据进行分类。(在二维,超平面就是一条直线,需要确定直线的斜率和截距。)最佳超平面的一个合理选择是代表两个类别之间最大分离度或边际的超平面。因此,我们在选择超平面时,要使它到两侧最近数据点的距离最大。如果存在这样一个超平面,它就被称为最大边际超平面(maximum-margin hyperplane),而它所定义的线性分类器就被称为最大边际分类器(maximum-margin classifier);或者等同于最佳稳定性感知器(the perceptron of optimal stability)。【from wiki】

3、如何定义“最大距离”?

这一步博客 

支持向量机(SVM)——原理篇

里讲的很清晰了,基本也和西瓜书一致,我就不加赘述,简而言之,就是设出超平面的参数方程,代入求距离最近的点(min),再调整参数方程让最近的点距离尽量远(max)。

这种二次规划问题,一眼要用到拉格朗日乘子法求对偶问题,都是很基础的优化方法。

最终得到:

4、为什么叫“支持向量机”?

接下来这段话很简单但是清晰说明了SVM的本质:

 也就是说,最终我们只会考虑支持向量。

定义:距离超平面最近的几个训练样本点使得\alpha_i \neq 0,这几个样本(由向量表示)被称为支持向量。两个异类支持向量到超平面的距离之和为\frac{2}{||\omega||},被称为间隔(margin)。

5、总结

SM,就是把分类问题或者回归问题,转化为基于已知的分类点求一个分类效果最好的分割超平面,进而可以用优化方法求解。

二、一些特殊的优化技巧? 

1、核方法

a. 解决什么问题?

 基础的SVM需要假设所有样本是线性可分的,但是实际任务可能不是,而是需要一个曲面。

对这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分:例如在图6.3中,若将原始的二维空间映射到一个合适的三维空间,就能找到一个合适的划分超平面,幸运的是,如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分。【引自西瓜书】

b.如何实现?

简单来说,就是找一个映射,把原本的数据\vec{x}映射到\phi(\vec{x}),通过推演我们发现

具体实现细节可以参考西瓜书或者以下博客: 
j​​​​​​​​​​​​​​浅入浅出核方法 (Kernel Method) - 知乎

2、软间隔

a. 解决什么问题?

即使我们用了核方法让原本不是线性可分的数据变得貌似线性可分,我们也不知道是不是过拟合了,缓解方法之一就是允许算法在一些样本上出错、也就是把硬间隔变成软间隔。

那么问题就变成如何让不满足约束的样本尽量少。 

线性SVM之硬间隔和软间隔的直觉和原理 - 知乎

这个讲得还挺清晰的。。。 ​​​​​​​

 

三、支持向量回归

回归问题和分类问题不同,分类是希望样本尽量远离预测的超平面,而回归是希望样本尽量靠近预测的超平面。一般来说就是落入间隔带。 

细节不表。可参考西瓜书。

参考文献:

[1] https://en.wikipedia.org/wiki/Support_vector_machine

[2]《机器学习》周志华

[3]支持向量机(SVM)——原理篇

[4]浅入浅出核方法 (Kernel Method) - 知乎 

[5] 线性SVM之硬间隔和软间隔的直觉和原理 - 知乎

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

部署bpmn项目实现activiti流程图的在线绘制

本教程基于centos7.6环境中完成 github开源项目: https://github.com/Yiuman/bpmn-vue-activiti软件:git、docker 1. 下载源代码 git clone https://github.com/Yiuman/bpmn-vue-activiti.git2. 修改Dockerfile文件 声明基础镜像,将项目打包&#xff…

vue2+若依框架plus交互 路由介绍

本周及寒假 参加了校企合作的工程过程管理,和学长学姐一起写项目,之前学了vue也没有应用,然后对框架很多组件的用法不太了解,前期耽误了一些时间。 框架模块 首先是框架模块的介绍 api存了一些系统管理及发送请求的方法 例如p…

智能驾驶规划控制理论学习04-基于车辆运动学的规划方法

目录 一、线性二自由度汽车模型(自行车模型) 1、二自由度模型概述 2、不同参考点下的状态空间方程 3、前向仿真 二、运动基元生成方法 1、杜宾斯曲线(Dubins Curve) 2、Reeds Shepp Curve 三、多项式曲线(Poly…

redis7.2.2|Dict

文章目录 StructredisDBdictdictTypedictEntry 宏定义散列函数散列冲突dictEntry pointer bit tricks[指针位技巧]API implementation_dictReset_dictInitdictCreatedictGetHashdictSetKeydictSetValdictSetNextdictGetNextdictGetValdictGetKey_dictCleardictEmptydictRelease…

五、西瓜书——集成学习

1.个体与集成 集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能,这对“弱学习器”(weak learner)尤为明显因此集成学习的很多理论研究都是针对弱学习器进行的而基学习器有时也被直接称为弱学习器。 要获得好的集成个体学习器应“好而不同”…

详解JavaScript的函数

详解 JavaScript 的函数 函数的语法格式 创建函数/函数声明/函数定义 function 函数名(形参列表) { 函数体 return 返回值; // return 语句可省略 } 函数调用 函数名(实参列表) // 不考虑返回值 返回值 函数名(实参列表) // 考虑返回值 示例代码 //定义的没有参数列表&am…

5个好玩神奇还免费的工具网站收藏不后悔-搜嗖工具箱

生命倒计时 http://www.thismuchlonger.com 这是一个相哇塞的网站,可以让我们静下心来好好想想我们来这个世界究竟为了什么,因为当我们作为命运的主宰者。敲打键盘设定好自己一生长度的时候,我们的剩余寿命已经成绝对值,一旦生命…

mysql5.7配置主从

原理: MySQL主从复制的工作原理如下:1. 主服务器产生Binlog日志当主服务器的数据库发生数据修改操作时,如INSERT、UPDATE、DELETE语句执行,主服务器会记录这些操作的日志信息到二进制日志文件中。2. 从服务器读取Binlog日志 从服务器会向主服务器发送请求,主服务器把…

Linux网络编程——socket 通信基础

Linux网络编程——socket 通信基础 1. socket 介绍2. 字节序2.1 简介2.2 字节序举例2.3 字节序转换函数 3. socket 地址3.1 通用 socket 地址3.2 专用 socket 地址 4. IP地址转换(字符串ip -> 整数,主机、网络字节序的转换 )5. TCP 通信流…

智能驾驶规划控制理论学习05-车辆运动学规划案例分析

目录 案例一——Hybrid A*(基于正向运动学) 1、基本思想 2、 实现流程 3、启发函数设计 4、分析扩张(Analytic Expansions) 5、分级规划(Hierarchical planning) 案例二——State Lattice Planning&…

Vue3快速上手(十六)Vue3路由传参大全

Vue3路由传参 一、传参的多种方式 1.1 拼接方式 这种方式适合传递单个参数的情况&#xff0c;比如点击查看详情&#xff0c;传个id这样的场景 传参&#xff1a; <RouterLink to"/person?id1" active-class"active">person</RouterLink> …

RabbitMQ相关问题

RabbitMQ相关问题 一、RabbitMQ的核心组件和工作原理&#xff1f;二、如何保证消息可靠投递不丢失的&#xff1f;三、RabbitMQ如何保证消息的幂等性&#xff1f;四、什么是死信队列&#xff1f;死信队列是如何导致的&#xff1f;五、RabbitMQ死信队列是如何导致的&#xff1f;六…

PDF 解析问题调研

说点真实的感受 &#xff1a;网上看啥组件都好&#xff0c;实际测&#xff0c;啥组件都不行。效果好的不开源收费&#xff0c;开源的效果不好。测试下来&#xff0c;发现把组件融合起来&#xff0c;还是能不花钱解决问题的&#xff0c;都是麻烦折腾一些。 这里分享了目前网上能…

数据结构 第3章 栈、队列和数组(一轮习题总结)

第3章 栈、队列和数组 3.1 栈3.2 队列3.3 栈与队列的应用3.4 数组和特殊矩阵 3.1 栈&#xff08;1 10 11 20&#xff09; 3.2 队列&#xff08;6 12 14 17&#xff09; 3.3 栈与队列的应用&#xff08;6 11&#xff09; 3.4 数组和特殊矩阵 3.1 栈 T1 栈和队列具有相同的逻辑…

一周学会Django5 Python Web开发-Django5详细视图DetailView

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计28条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

Linux-信号2

文章目录 前言一、信号是如何保存的&#xff1f;int sigemptyset(sigset_t *set);int sigfillset(sigset_t *set);int sigaddset (sigset_t *set, int signo);int sigdelset(sigset_t *set, int signo);int sigismember&#xff08;const sigset_t *set, int signo);int sigpen…

leetcode 长度最小的子数组

在本题中&#xff0c;我们可以知道&#xff0c;是要求数组中组成和为target的最小子数组的长度。所以&#xff0c;我们肯定可以想到用两层for循环进行遍历&#xff0c;然后枚举所有的结果进行挑选&#xff0c;但这样时间复杂度过高。 我们可以采用滑动窗口&#xff0c;其实就是…

NoSQL--1.虚拟机网络配置

目录 1.初识NoSQL 1.1 NoSQL之虚拟机网络配置 1.1.1 首先&#xff0c;导入预先配置好的NoSQL版本到VMware Workstation中 1.1.2 开启虚拟机操作&#xff1a; 1.1.2.1 点击开启虚拟机&#xff1a; 1.1.2.2 默认选择回车CentOS Linux&#xff08;3.10.0-1127.e17.x86_64) 7 …

同样是证书,NPDP和PMP有什么区别?

PMP和NPDP的区别是啥&#xff1f; PMP、NPDP证书考哪个更有用&#xff1f;还是两个都考&#xff1f; PMP和NPDP哪个更适合现在及以后发展&#xff1f; PMP和NPDP这两哪个含金量更高&#xff1f; 一&#xff0c;关于PMP和NPDP PMP和NPDP都是美国PMI/PDMA的专业考试&#xf…