什么是支持向量机(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之硬间隔和软间隔的直觉和原理 - 知乎

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

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

相关文章

总结 HashTable, HashMap, ConcurrentHashMap 之间的区别

1.多线程环境使用哈希表 HashMap 不行,线程不安全 更靠谱的,Hashtable,在关键方法上加了synchronized 后来标准库又引入了一个更好的解决方案;ConcurrentHashMap 2.HashMap 首先HashMap本身线程不安全其次HashMap的key值可以为空(当key为空时,哈希会…

【Java数据结构】——五道算法题让你灵活运用Map和Set

目录 一.只出现一次的数字 二.宝石与石头 三.旧键盘 四.给定一个数组,统计每个元素出现的次数 五.前K个高频单词 一.只出现一次的数字 136. 只出现一次的数字 - 力扣(LeetCode) 算法原理:我们将nums中每个元素都存入到set中…

ASUS华硕天选5笔记本电脑FX607JV原装出厂Win11系统下载

ASUS TUF Gaming F16 FX607JV天选五原厂Windows11系统 适用型号: FX607JU、FX607JI、FX607JV、 FX607JIR、FX607JVR、FX607JUR 下载链接:https://pan.baidu.com/s/1l963wqxT0q1Idr98ACzynQ?pwd0d46 提取码:0d46 原厂系统自带所有驱动、…

python自动化学习--3.8python操作EXCEL文件python日志收集处理

1、Excel文件处理 安装 openpxl 第三方库 openpxl 模块三大组件: 1、工作簿 (包含多个sheet工作表) 2、工作表 (某个数据包含在某个工作表) 3、单元格 1、创建excel工作簿 import openpyxl"""Excel表格的创建…

GotoXy控制台光标的位置更新

光标控制解释 控制台的光标更新方法, 用于控制数据输出位置 void gotoXY(int x, int y)//新函数:更新光标 {COORD c;c.X x;c.Y y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c); }代码解释 这段代码定义了一个名为 gotoXY 的函数,…

【Spring Boot】实现全局异常处理

1.定义基础异常接口类 /*** description: 服务接口类* author: MrVK* date: 2021/4/19 21:39*/ public interface BaseErrorInfoInterface {/*** 错误码* return*/String getResultCode();/*** 错误描述* return*/String getResultMsg(); } 2.定义错误处理枚举类 /*** desc…

小伙伴询问AI该怎么学习?本人的一点总结,以思维导图呈现

如有需要思维导图的在后台请留邮箱,相关知识结构目录 部分导图

nn.Linear() 使用提醒

原本以为它是和nn.Conv2d()一样,就看第二个维度的数值,今天才知道,它是只看最后一个维度的数值!!! 例子1 Descripttion: Result: Author: Philo Date: 2024-02-27 14:33:50 LastEditors: Philo LastEditT…

如何使用“Ubuntu 20.04桌面版,安装MariaDB数据库“?win10系统?

1、更新软件包 sudo apt update 2、 安装MariaDB服务器和客户端 sudo apt install mariadb-server mariadb-client 3、 查看MeriaDB是否运行 service mysql status :q"退回命令行状态 4、 设置MariaDB root用户的密码 sudo mysql_secure_installation 5、 MariaD…

斐波那契数列模型----三步问题

面试题 08.01. 三步问题 - 力扣(LeetCode) 1、状态表示: 题目要求:上到n阶台阶,有多少种方法。那么n逐渐简化,上1阶台阶有多少种方法;上2阶台阶有多少种方法……直到上n阶台阶有多少种方法。 …

代码随想录第45天|● 70. 爬楼梯 (进阶) ● 322. 零钱兑换 ● 279.完全平方数

文章目录 ● 70. 爬楼梯 (进阶)思路:- 排列 先value后weight代码: ● 322. 零钱兑换思路:代码 ● 279.完全平方数思路:代码 ● 70. 爬楼梯 (进阶) 思路:- 排列 先value后…

如何提升计算机性能

04 穿越功耗墙,我们该从哪些方面提升“性能”? 上一讲,在讲 CPU 的性能时,我们提到了这样一个公式: 程序的 CPU 执行时间 指令数CPIClock Cycle Time 这么来看,如果要提升计算机的性能,我们可以…

基于ZYNQ的PCIE高速数据采集卡的设计(一)

作为信息处理的第一步,数据采集的作用越来越重要。目前,数据采集已经在航 空、民用、军事、医疗等领域得到广泛应用。随着相关技术的不断发展,信号频率越 来高,带宽越来越大,使得数据采集技术逐渐向高速大数据的方向…

幻兽帕鲁专用服务器搭建之Linux部署配置教程

大家好我是飞飞,上一期我分享了Windows系统的幻兽帕鲁服务器搭建教程。因为幻兽帕鲁这游戏对服务器的配置有一定的要求,很多小伙伴就寻思用Linux系统搭建占用会不会小一点?有计算机基础的小伙伴都知道Linux系统和Windows系统相比,…

【Linux】实时查看服务器信息

查看服务器CPU使用率 使用命令mpstat 1。这里的1表示每隔1秒更新一次CPU使用率。如果系统未安装mpstat,可以通过安装sysstat包来获取它。 在基于Debian的系统(如Ubuntu)上,使用命令: sudo apt-get update sudo apt-…

考研复试类比社团招新,无所谓“公平”,导师选谁都是他的权力

这篇文章是抖音和b站上上传的同名视频的原文稿件,感兴趣的csdn用户可以关注我的抖音和b站账号(GeekPower极客力量)。同时这篇文章也为视频观众提供方便,可以更加冷静地分析和思考。文章同时在知乎发表。 我考研一战的时候计算机考…

【详识JAVA语言】面向对象程序三大特性之一:封装

封装的概念 面向对象程序三大特性:封装、继承、多态。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说 就是套壳屏蔽细节。 比如:对于电脑这样一个复杂的设备,提供给用户的就只是:开关机、通…

管理系统提升:列表页构成要素,拒绝千篇一律

大家伙,我是大千UI工场,专注UI知识案例分享和接单,本期带来B端系统列表页的分享,欢迎大家关注、互动交流。 一、什么是列表页 管理系统列表页是指管理系统中用于展示和管理数据的页面,通常以表格或列表的形式呈现。列…

23端口登录的Telnet命令+传输协议FTP命令

一、23端口登录的Telnet命令 Telnet是传输控制协议/互联网协议(TCP/IP)网络(如Internet)的登录和仿真程序,主要用于Internet会话。基本功能是允许用户登录进入远程主机程序。 常用的Telnet命令 Telnet命令的格式为&…

有人吐槽:可视化大屏面向领导的设计,真相是这样吗?

某些老铁的态度很极端,看到可视化大屏页面就一口断定,除了讨好领导之外,屁用没有。真相是这样吗?贝格前端工场尝试给老铁们分析下。 一、可视化大屏确实要面向领导,但不是讨好领导 可视化大屏的设计需要考虑领导和管理…