【西瓜书】支持向量机(SVM)
- 支持向量机(Support Vector Machine,简称SVM)。
超平面
-
分类学习最基本的想法就是基于训练集合D在样本空间中找到一个划分超平面,将不同类别的样本分开。
-
但能将训练样本分开的划分超平面可能有很多,应该努力去找到哪一个呢?直观上看应该去找位于两类训练样本正中间的划分超平面,因为该划分超平面对训练样本局部扰动的“容忍”性最好。这个划分超平面所产生的分类结果是最鲁棒的,对未见示例的泛化能力最强。
-
在样本空间中划分超平面可通过如下线性方程来描述:
w T x + b = 0 w^Tx+b=0 wTx+b=0其中: w = ( w 1 ; w 2 ; . . . ; w d ) w=(w_1;w_2;...;w_d) w=(w1;w2;...;wd)为法向量,决定了超平面的方向;
b b b 为位移项,决定了超平米与原点之间的距离。 -
划分超平面可以被法向量 w w w 和位移 b b b 确定,记为 ( w , b ) (w, b) (w,b) 。样本空间中人一点 x x x 到超平面 ( w , b ) (w, b) (w,b) 的距离可写为:
r = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ r=\frac{|w^Tx+b|}{||w||} r=∣∣w∣∣∣wTx+b∣ -
超平面具有以下性质:
- 法向量 w w w 和位移项 b b b 确定一个唯一超平面;
- 超平面方程不唯一,因为当等倍缩放 w w w 和 b b b 时(假设缩放倍数为 α),所得的新超平面方程 α w T x + α b = 0 αw^Tx + αb = 0 αwTx+αb=0 和 w T x + b = 0 w^Tx + b = 0 wTx+b=0 的解完全相同,因此超平面不变,仅超平面方程有变;
- 法向量 w w w 垂直于超平面;
- 超平面将 n 维空间切割为两半,其中法向量 w w w 指向的那一半空间称为正空间,另一半称为负空间,正空间中的点 x + x^+ x+ 代入进方程 w T x + + b wTx+ + b wTx++b 其计算结果大于 0,反之负空间中的点代入进方程其计算结果小于 0;
- n 维空间中的任意点 x 到超平面的距离公式为 r = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ r=\frac{|w^Tx+b|}{||w||} r=∣∣w∣∣∣wTx+b∣,其中 ∥ w ∥ ∥w∥ ∥w∥ 表示向量 w 的模。
支持向量机(SVM)
- 支持向量机所要求的超平面需要满足三个条件:
- 能正确划分正负样本,
- 要位于正负样本正中间,
- 离正负样本都尽可能远。
- 距离超平面最近的这几个训练样本点使得上式的等号成立,它们被称为“支持向量 ” (support vector),两个异类支持向量到超平面的距离之和为:
γ = 2 ∣ ∣ w ∣ ∣ \gamma=\frac{2}{||w||} γ=∣∣w∣∣2它被称为“间隔”(margin)。 - 要找到具有“最大间隔”(maximum margin)的划分超平面,也就是要找到满足中约束的参数w和b,使得γ最大,即:
max w , b 2 ∥ w ∥ s . t . y i ( w T x + b ) ⩾ 1 , i = 1 , 2 , . . . , m . \begin{align*} &\max_{w,b} \frac{2}{\|w\|} \\&s.t. \,\, y_i(w^Tx+b)\geqslant 1, \,\, i=1,2,...,m. \end{align*} w,bmax∥w∥2s.t.yi(wTx+b)⩾1,i=1,2,...,m. - 为了最大化间隔,仅需最大化||w||(-1),则等价于最小化||w||2,于是上式可重写为:
min w , b 1 2 ∥ w ∥ 2 s . t . y i ( w T x + b ) ⩾ 1 , i = 1 , 2 , . . . , m . \begin{align*} &\min_{w,b} \frac{1}{2}{\|w\|}^2 \\&s.t. \,\, y_i(w^Tx+b)\geqslant 1, \,\, i=1,2,...,m. \end{align*} w,bmin21∥w∥2s.t.yi(wTx+b)⩾1,i=1,2,...,m.
这就是支持向量机的基本型。
支持向量机求解
- 求解下式来得到大间隔划分超平面对应的模型:
f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b其中w和b是模型参数,注意这个式子本身是一个凸二次规划(convex quadratic programming)问题,能直接用现成的优化计算包来求解。 - 针对这个问题,SVM提出了很多更高效的办法。
- 对偶问题:针对上式,使用拉格朗日乘子法可以得到“对偶问题”(dual problem)。
- SVM的一个重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。支持向量机这个名字强调了此类学习器的关键是如何从支持向量构建出解;同时也暗示着其复杂度主要与支持向量的数目有关。
- 为了避免在二次规划中,问题的规模正比于训练样本数造成的巨大开销,利用问题本身的特性提出了很多优化算法,SMO(Sequential Minimal Optimization)是著名的代表。
核函数
-
前面都是假设训练样本是线性可分的,即存在一个划分超平面能将训练样本正确分类,然而在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面。对于这样的问题可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。
-
如果原始空间是有限维,即属性数有限,那么一定存在一个高位特征空间使样本可分。
-
x i x_i xi与 x j x_j xj在特征空间的内积等于它们在原始样本空间中通过函数 κ ( . , . ) κ(., .) κ(.,.) 计算的结果。
κ ( x i , y i ) = 〈 ϕ ( x i ) , ϕ ( x j ) 〉 = ϕ ( x i ) T ϕ ( x j ) \kappa (x_i, y_i)=〈\phi (x_i),\phi (x_j)〉=\phi (x_i)^T\phi (x_j) κ(xi,yi)=〈ϕ(xi),ϕ(xj)〉=ϕ(xi)Tϕ(xj) -
将样本映射到特征空间之后的内积,这里的映射函数κ就是“核函数”(Kernel function)。
-
模型最优解可通过训练样本的核函数展开,这一展式也叫“支持向量展示”(support vector expansion)。
硬间隔、软间隔
- 之前假设训练样本在样本空间或特征空间中是线性可分的,然而在现实当中往往很难确定合适的核函数使训练样本在特征空间中可分。
- 缓解该问题的一个办法是允许支持向量机在一些样本上出错,因此引入了“软间隔”(soft margin)的概念。
- 所有样本都必须划分正确,这称为“硬间隔”(hard margin)。“软间隔”则是允许某些样本不满足约束。
支持向量回归
- 在回归问题中,对于给定样本,传统回归模型通常直接基于模型的输出与真实输出之间的差别来计算损失,仅当真实输出与模型输出完全相同时,损失才为0。
- “支持向量回归”(support vector regression,简称SVR)假设我们容忍真实输出与模型输入之间最多有 ε 的偏差,即仅当两者之间的差别绝对值大于 ε 时才计算损失。
核方法
- 人们发展出一系列基于核函数的学习方法,统称为“核方法”(kernel methods)。最常见的是通过“核化”(即引入核函数)来将线性学习器扩展为非线性学习器。
相关阅读
【西瓜书】决策树
【西瓜书】神经网络-MP神经元、感知机和多层网络
【西瓜书】神经网络-BP算法(反向传播算法)
资料参考
- (西瓜书)机器学习·周志华
- (南瓜书)机器学习公式详解 第 2 版·谢文睿 秦州 贾彬彬
相关文章:
【西瓜书】支持向量机(SVM)
支持向量机(Support Vector Machine,简称SVM)。 超平面 分类学习最基本的想法就是基于训练集合D在样本空间中找到一个划分超平面,将不同类别的样本分开。 但能将训练样本分开的划分超平面可能有很多,应该努力去找到哪…...
三维渲染中顺序无关的半透明混合(OIT)(二——Stencil Route)
1、A-Buffer算法。 在谈到Stencil Route之前,需要先讨论A-Buffer算法。A-Buffer是一种图形学(渲染方向)上的用于可见面分析(Visble Surface Detection)的技术,是Z-Buffer的衍生方法。 Z-Buffer是用于剔除 不透明 物体的算法。假…...
(SAST检测规则-3)固定的 SessionID 缺陷详解
漏洞类型: 会话固定攻击(Session Fixation Attack) 漏洞描述: 会话固定攻击是利用服务器的会话管理机制存在漏洞,攻击者通过提前控制或预测用户的会话标识符(Session ID),当用户登录…...
【安卓开发】【Android Studio】项目构建(Build)时报错:Integer Overflow
一、问题描述 在安卓项目中,构建(Build)失败并报错:xxxxx Integer Overflow(整型溢出)。 二、相关代码 刚开始以为是某个整数(例如控件、java类)不匹配造成的,检查如下…...
STM32主要功能
STM32 是由意法半导体(STMicroelectronics)推出的一系列基于 ARM Cortex-M 内核的微控制器(MCU)。STM32 微控制器广泛应用于嵌入式系统中,因其高性能、低功耗、丰富的外设接口和多种封装形式而被广泛采用。其主要功能和…...
MacOS 如何连接 Linux NFS 服务器
以 Ubuntu 为例。 Ubuntu 服务器端设置 1. 进入 root 权限,安装 NFS 服务: apt-get update apt-get install nfs-kernel-server2. 创建共享目录: mkdir /data chown nobody:nogroup /data chmod 777 /data3. 配置 /etc/exports 文件: vi …...
【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-39
文件下载与邀请翻译者 学习英特尔开发手册,最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册,会是一件耗时费力的工作。如果有愿意和我一起来做这件事的,那么ÿ…...
摄影相关常用名词
本文介绍与摄影相关的常用名词。 曝光 Exposure 感光元件接收光线的过程,决定图像的明暗程度和细节表现。 光圈 Aperture 控制镜头进光量的孔径大小,用 F 值(f-stop) 表示。 光圈越大(F 值越小),…...
02.06、回文链表
02.06、[简单] 回文链表 1、题目描述 编写一个函数,检查输入的链表是否是回文的。 2、解题思路: 快慢指针找中点: 利用快慢指针的技巧来找到链表的中间节点。慢指针 slow 每次移动一步,而快指针 fast 每次移动两步。这样&…...
Shell脚本小练习
学习了这么长时间Shell脚本,总得来一次小小的练习吧,那么请看下文! 1.用Shell写一个小计算器。 通过read命令获取用户输入的表达式,表达式的格式设定为操作数1 运算符 操作数2,例如53,然后利用设计的脚本…...
四轮转向轮式里程计设计(python)
目录 写在前面的话参考教程官方教程参考代码(c) 关键代码解析订阅车轮速度订阅车轮转向订阅四轮转向控制模式积累速度和转向角发布里程计 完整代码完整视频演示 写在前面的话 上一篇博客:键盘控制车子四轮转向 这篇文章通过订阅车轮的速度和…...
多方法做配对样本t检验(三)
Wilcoxon符号秩检验 Wilcoxon符号秩检验(Wilcoxon Signed-Rank Test) 是一种非参数统计方法,用于检验两组相关样本(配对样本)之间的差异是否显著。它通常用来代替配对样本t检验,特别是在数据不符合正态分布…...
Vue 将推出「无虚拟DOM」版本,又是新的前端框架趋势?
文章目录 背景无虚拟DOM版的Vue3Vue Vapor 在线演练题外话:渲染流程 背景 随着 React 和 Vue 这些前端框架的爆火,他们的渲染方式,虚拟DOM,也跟着火了起来,大家都认为这是一种高性能批量更新DOM的方式但是近一两年有不…...
阿里云ECS服务器磁盘空间不足的几个文件
查看磁盘空间命令: df -h /mnt 清零 echo >nohup.out 磁盘空间不足的文件列表: 一、nohup.out:来自"nohup java -jar service.jar &"命令产生的文件,位置在服务jar所在目录 二、access.log:位于…...
从0开始linux(38)——线程(1)线程概念
欢迎来到博主专栏:从0开始linux 博主ID:代码小豪 文章目录 进程与线程线程概念线程的优点线程的独立数据 进程与线程 如果要理解线程,那么进程将会时绕不开的点。首先我们回顾一下我们之前在进程章节当中是如何描述进程的? 进程&…...
Ubuntu源码安装gitlab13.7集群多前端《二》
Ubuntu源码安装gitlab13.7《一》 gitaly需要调整的服务 redis socket->ipbind ....* # 0.0.0.0pg vim /etc/postgresql/14/main/pg_hba.confhost all all ..../32 md5gitaly vim /home/git/gitaly/config.tomlbin_dir "/home/gi…...
身份证OCR 识别 API 接口的发展前景
随着信息时代的到来,大量的身份证数据需要进行整理、存储和管理,OCR 识别技术可以将身份证信息转化为结构化的电子文本,方便后续的数据管理和分析,提高工作效率。 未来,随着人工智能和深度学习等技术的不断发展&#…...
Spring boot之BeanDefinition介绍
在spring框架中IOC容器进行bean的创建和管理。Bean的创建是一个比较复杂的过程,它并不像我们创建对象一样只是直接new一下就行,虽然有些bean确实就是New一下。但在Spring中可以通过一些途径对bean进行增强扩展。在这个过程中,BeanDefinition作…...
30分钟学会正则表达式
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 作用 匹配 查看一个字符串是否符合正则表达式的语法 搜索 正…...
Python 自动化办公的 10 大脚本
大家好,我是你们的 Python 讲师!今天我们将讨论 10 个实用的 Python 自动化办公脚本。这些脚本可以帮助你简化日常工作,提高效率。无论是处理 Excel 文件、发送邮件,还是自动化网页操作,Python 都能派上用场。 1. 批量…...
Python蒙特卡罗MCMC:优化Metropolis-Hastings采样策略Fisher矩阵计算参数推断应用—模拟与真实数据...
全文链接:https://tecdat.cn/?p38397 本文介绍了其在过去几年中的最新开发成果,特别阐述了两种有助于提升 Metropolis - Hastings 采样性能的新要素:跳跃因子的自适应算法以及逆 Fisher 矩阵的计算,该逆 Fisher 矩阵可用作提议密…...
成绩排序
成绩排序 C语言代码C 代码Java代码Python代码 💐The Begin💐点点关注,收藏不迷路💐 给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。 输入 第一行为…...
MySQL底层概述—7.优化原则及慢查询
大纲 1.Explain概述 2.Explain详解 3.索引优化数据准备 4.索引优化原则详解 5.慢查询设置与测试 6.慢查询SQL优化思路 1.Explain概述 使用Explain关键字可以模拟查询优化器来执行SQL查询语句,从而知道MySQL是如何处理SQL语句的,从而分析出查询语句…...
R““有什么作用在C++中,举例说明
在C中,R""(双引号前加R)表示一个原始字符串字面量(Raw String Literal),其主要作用是让字符串中的反斜杠\和其他特殊字符不被当作转义字符处理,而是保留其原始字面意义。这在处理包含…...
linux中top 命令返回数据解释
当您在 Linux 终端中运行 top 命令时,它会显示一个动态更新的系统状态视图,其中包括许多有关系统性能的数据。下面是对 top 命令返回数据的详细解释: 标题栏 top - 22:46:12 up 2 days, 3:14, 1 user, load average: 0.05, 0.07, 0.09 22:46:12:当前时间。up 2 days, 3:14…...
深入理解二叉树及其变体:平衡二叉树、红黑树、B-树和B+树
一、二叉树简介 二叉树是一种非常常见的数据结构,它具有以下特点: 每个节点最多有两个子节点,分别称为左子节点和右子节点。每个节点的左子树和右子树都是二叉树。 二叉树的常见操作包括:创建、插入、删除、查找、遍历等。下面…...
C++ 编程技巧之StrongType(1)
最近看到一个NamedType的开源库,被里面的Strong Type这个概念和里面的模版实现给秀了一脸,特此总结学习一下 GitHub - joboccara/NamedType: Implementation of strong types in C C本身是一种强类型语言,类型包括int、double等这些build i…...
芯片测试-smith圆图
smith圆图 💢smith圆图的故事💢💢smith圆图中的各部分来历💢💢公式推导💢💢等电阻圆特点💢💢等电抗圆💢💢等电抗圆特点💢 Ὂ…...
HTML技术深度解析:构建现代网页的基石
引言 HTML(HyperText Markup Language,超文本标记语言)是构建网页和网上应用的标准标记语言。随着互联网技术的飞速发展,HTML已经成为前端开发中不可或缺的核心技术之一。本文将深入探讨HTML的基本概念、核心元素、最新发展以及在…...
Leecode刷题C语言之判断是否可以赢得数字游戏
执行结果:通过 执行用时和内存消耗如下: bool canAliceWin(int* nums, int numsSize) {int single_digit_sum 0;int double_digit_sum 0;for (int i 0; i < numsSize; i) {if (nums[i] < 10) {single_digit_sum nums[i];} else {double_digit_sum nums[…...
建设社团网站的可行性分析/必应站长平台
配置嘉里项目本地rabbitmq服务的流程: 1. 登录本地rabbit服务 输入 http://localhost:15672/ ,输入用户名、密码,登录本地rabbit服务 2.创建 crm-user 和 kip-user 两个用户 创建crm-user 用户: 同上创建kip-user 用户&…...
wordpress 会员插件/广州百度竞价外包
Mac OS X - 重置 MySQL Root 密码您是否忘记了Mac OS 的MySQL的root密码? 通过以下4步就可重新设置新密码:1. 停止 mysql server. 通常是在 ‘系统偏好设置‘ > MySQL > ‘Stop MySQL Server‘2. 打开终端,输入:sudo /usr/local/my…...
ubuntu wordpress安装目录/百度快照优化
前段时间学习《深入浅出Nodejs》时,在第四章 - 异步编程中作者朴灵曾提到,异步编程的难点之一是异常处理,书中描述"尝试对异步方法进行try/catch操作只能捕获当次事件循环内的异常,对call back执行时抛出的异常将无能为力&qu…...
勉费申请做网站/关键词搜索神器
关于Spring中基于xml文件配置bean的详细总结(spring 4.1.0) 一、Spring中的依赖注入方式介绍 依赖注入有三种方式 属性注入构造方法注入工厂方法注入(很少使用,不推荐,本文不再介绍)属性注入 通过 setter…...
个人网站建设 免费/域名大全免费网站
scrapy爬虫成长日记之将抓取内容写入mysql数据库前面小试了一下scrapy抓取博客园的博客(您可在此查看scrapy爬虫成长日记之创建工程-抽取数据-保存为json格式的数据),但是前面抓取的数据时保存为json格式的文本文件中的。这很显然不满足我们日常的实际应用ÿ…...
上海单位建设报建网站/网站文章优化技巧
在家装设计当中,卫生间的设计非常重要,因为它和我们联系十分紧密,而且使用也极其频繁,如果设计不过关的话,会极大降低我们的日常体验,在设计卫生间的时候,卫浴产品选择非常关键,因为…...