搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
秋刀鱼在做梦
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
ai人工智能测面相 准吗_AI会进入法庭吗?
2
中国最大的系统软件外包公司排名靠谱的IT人力外包企业有哪些_深圳极联股份有限公司是外包吗
3
关于单片机上的BOOT0和BOOT1
4
机器学习之Transformer模型和大型语言模型(LLMs)
5
C++虚函数与静态、动态绑定_在构造函数里,不会进行动态绑定
6
OpenCV 3.4 的环境搭建过程_opencv3.4 手动构建
7
2017秋招、春招、实习生招聘区别_春招和是实习有什么区别
8
数据结构与算法 算法分析_数据结构与算法分析
9
python-kaggle商场顾客细分数据分析_kaggle超市数据集
10
sentinel接入网关应用_微服务(SpringCloud )实战之Sentinel 整合 Gateway实现网关限流...
当前位置:
article
> 正文
超详细支持向量机知识点,面试官会问的都在这里了
作者:秋刀鱼在做梦 | 2024-06-20 15:33:06
赞
踩
在硬间隔支持向量机中,落在最大间隔边界上的样本就是支持向量 ( ) a. 正确 b. 错
(图片付费下载自视觉中国)
作者 | 韦伟
来源 | 知乎
导语:持续准备面试中,准备的过程中,慢慢发现,如果死记硬背的话很难,可当推导一遍并且细细研究里面的缘由的话,面试起来应该什么都不怕,问什么问题都可以由公式推导得到结论,不管问什么,公式摆在那里,影响这个公式的变量就在那,你问什么我答什么,共勉!
一. 简单概括一下SVM
SVM 是一种二类分类模型。它的基本思想是在特征空间中寻找间隔最大的分离超平面使数据得到高效的二分类,具体来讲,有三种情况(不加核函数的话就是个线性模型,加了之后才会升级为一个非线性模型):
当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;
当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;
当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
二. SVM 为什么采用间隔最大化(与感知机的区别):
当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。 感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。 线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。 另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。
三. SVM的目标(硬间隔):
有两个目标: 第一个是使间隔最大化,第二个是使样本正确分类,由此推出目标函数:
稍微解释一下,w是超平面参数,目标一是从点到面的距离公式化简来的,具体不展开,目标二就相当于感知机,只是把大于等于0进行缩放变成了大于等于1,为了后面的推导方便。 有了两个目标,写在一起,就变成了svm的终极目标:
四. 求解目标(硬间隔):
从上面的公式看出,这是一个有约束条件的最优化问题,用拉格朗日函数来解决。
上式的拉格朗日函数为:
在满足Slater定理的时候,且过程满足KKT条件的时候,原问题转换成对偶问题:
先求内部最小值,对w和b求偏导并令其等于0可得:
将其代入到上式中去可得到
此时需要求解
,利用SMO(序列最小优化)算法:
SMO算法的基本思路是每次选择两个变量
和
,选取的两个变量所对应的样本之间间隔要尽可能大,因为这样更新会带给目标函数值更大的变化。 SMO算法之所以高效,是因为仅优化两个参数的过程实际上仅有一个约束条件,其中一个可由另一个表示,这样的二次规划问题具有闭式解。
五. 软间隔:
不管直接在原特征空间,还是在映射的高维空间,我们都假设样本是线性可分的。虽然理论上我们总能找到一个高维映射使数据线性可分,但在实际任务中,寻找一个合适的核函数核很困难。此外,由于数据通常有噪声存在,一味追求数据线性可分可能会使模型陷入过拟合,因此,我们放宽对样本的要求,允许少量样本分类错误。这样的想法就意味着对目标函数的改变,之前推导的目标函数里不允许任何错误,并且让间隔最大,现在给之前的目标函数加上一个误差,就相当于允许原先的目标出错,引入松弛变量
,公式变为:
那么这个松弛变量怎么计算呢,最开始试图用0,1损失去计算,但0,1损失函数并不连续,求最值时求导的时候不好求,所以引入合页损失(hinge loss):
函数图张这样:
理解起来就是,原先制约条件是保证所有样本分类正确
,现在出现错误的时候,一定是这个式子不被满足了,即
,衡量一下错了多少呢?因为左边一定小于1,那就跟1比较,因为1是边界,所以用1减去
来衡量错误了多少,所以目标变为(正确分类的话损失为0,错误的话付出代价):
但这个代价需要一个控制的因子,引入C>0,惩罚参数,即:
可以想象,C越大说明把错误放的越大,说明对错误的容忍度就小,反之亦然。当C无穷大时,就变成一点错误都不能容忍,即变成硬间隔。实际应用时我们要合理选取C,C越小越容易欠拟合,C越大越容易过拟合。
所以软间隔的目标函数为:
其中:
六. 软间隔求解:
与硬间隔类似:
上式的拉格朗日函数为:
在满足Slater定理的时候,且过程满足KKT条件的时候,原问题转换成对偶问题:
先求内部最小值,对w,b和
求偏导并令其等于0可得:
将其代入到上式中去可得到,注意
被消掉了:
此时需要求解
,同样 利用SMO(序列最小优化)算法。
七. 核函数:
为什么要引入核函数:
当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。而引入这样的映射后,所要求解的对偶问题的求解中,无需求解真正的映射函数,而只需要知道其核函数。核函数的定义:K(x,y)=<ϕ(x),ϕ(y)>,即在特征空间的内积等于它们在原始样本空间中通过核函数 K 计算的结果。一方面数据变成了高维空间中线性可分的数据,另一方面不需要求解具体的映射函数,只需要给定具体的核函数即可,这样使得求解的难度大大降低。
用自己的话说就是,在SVM不论是硬间隔还是软间隔在计算过程中,都有X转置点积X,若X的维度低一点还好算,但当我们想把X从低维映射到高维的时候(让数据变得线性可分时),这一步计算很困难,等于说在计算时,需要先计算把X映射到高维的的ϕ(x),再计算ϕ(x1)和ϕ(x2)的点积,这一步计算起来开销很大,难度也很大,此时引入核函数,这两步的计算便成了一步计算,即只需把两个x带入核函数,计算核函数,举个列子一目了然(图片来自:从零推导支持向量机):
个人对核函数的理解: 核函数就是一个函数,接收两个变量,这两个变量是在低维空间中的变量,而核函数求的值等于将两个低维空间中的向量映射到高维空间后的内积。
八. 如何确定一个函数是核函数:
验证正定核啥的,咱也不太懂,给出:
所以不懂,就用人家确定好的常见核函数及其优缺点:
九. 如何选择核函数:
当特征维数 d 超过样本数 m 时 (文本分类问题通常是这种情况), 使用线性核;
当特征维数 d 比较小. 样本数 m 中等时, 使用RBF核;
当特征维数 d 比较小. 样本数 m 特别大时, 支持向量机性能通常不如深度神经网络。
十. 关于支持向量的问题:
1.先说硬间隔:
先看KKT条件
支持向量,对偶变量 αi > 0 对应的样本;
线性支持向量机中, 支持向量是距离划分超平面最近的样本, 落在最大间隔边界上。
支持向量机的参数 (w; b) 仅由支持向量决定, 与其他样本无关。
2. 再说软间隔:
先看kkt条件:
经过SMO后,求得
。
对于任意样
,
若满足
,进一步地,
如图:
十一. 谈谈SVM的损失函数:
此处说的是软间隔:
先看软间隔的基本型形式:
稍微做一点变化:
这样写是为了符合标准的损失函数+正则化的样子,其中, 第一项称为经验风险, 度量了模型对训练数据的拟合程度; 第二项称为结构风险, 也称为正则化项, 度量 了模型自身的复杂度. 正则化项削减了假设空间, 从而 降低过拟合风险. λ 是个可调节的超参数, 用于权衡经验风险和结构风险.
其中:
这样的话给上式乘以mc,就会变成上上式了。
十二. 为什么SVM对缺失数据敏感?
这里说的缺失数据是指缺失某些特征数据,向量数据不完整。 SVM 没有处理缺失值的策略。 而 SVM 希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。 缺失特征数据将影响训练结果的好坏。
十三. SVM的优缺点:
优点:
由于SVM是一个凸优化问题,所以求得的解一定是全局最优而不是局部最优。
不仅适用于线性线性问题还适用于非线性问题(用核技巧)。
拥有高维样本空间的数据也能用SVM,这是因为数据集的复杂度只取决于支持向量而不是数据集的维度,这在某种意义上避免了“维数灾难”。
理论基础比较完善(例如神经网络就更像一个黑盒子)。
缺点:
二次规划问题求解将涉及m阶矩阵的计算(m为样本的个数), 因此SVM不适用于超大数据集。(SMO算法可以缓解这个问题)
只适用于二分类问题。(SVM的推广SVR也适用于回归问题;可以通过多个SVM的组合来解决多分类问题)
十四:参考文献:
https://zhuanlan.zhihu.com/p/49331510
https://zhuanlan.zhihu.com/p/43827793
https://zhuanlan.zhihu.com/p/31652569
原文链接:
https://zhuanlan.zhihu.com/p/76946313
(*本文为 AI科技大本营转载文章,转
载请联系原作者)
◆
精彩推荐
◆
2019 中国大数据技术大会(BDTC)历经十一载,再度火热来袭! 豪华主席阵容及百位技术专家齐聚,15 场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读,深入解析热门技术在行业中的实践落地。
【早鸟票】
与
【特惠学生票】
限时抢购,扫码了解详情!
推荐阅读
中文预训练ALBERT模型来了:
小模型登顶GLUE,Base版模型小10倍、速度快1倍
100多次竞赛后,他研发了一个几乎可以解决所有机器学习问题的框架
王霸之路:从0.1到2.0,一文看尽TensorFlow“奋斗史”
伯克利人工智能研究院开源深度学习数据压缩方法Bit-Swap,性能创新高
NLP被英语统治?打破成见,英语不应是「自然语言」同义词
TensorFlow2.0正式版发布,极简安装TF2.0(CPU&GPU)教程
肖仰华:
知识图谱构建的三要素、三原则和九大策略 | AI ProCon 2019
AI落地遭“卡脖子”困境:
为什么说联邦学习是解决良方?
限时早鸟票 | 2019 中国大数据技术大会(BDTC)超豪华盛宴抢先看!
你点的每个“在看”,我都认真当成了喜欢
声明:
本文内容由网友自发贡献,转载请注明出处:
【wpsshop博客】
推荐阅读
article
ChatGPT
(对话
AI
)汇总_
清言
chatgpt
...
ChatGPT
的全称为”Conversational Generative Pre-trained Transforme...
赞
踩
article
FPGA
与
PCB
协同
设计
--
IO
Designer
使用方法(3)...
设计
流程二:Xpedition
Designer
设计
原理图 +
IO
Designer
Optimizer优化布局布线步...
赞
踩
article
SpringBoot --
熔断
机制
Circuit
Breaker_
springboot
circ...
Circuit
Breaker
熔断
机制在微服务中必不可少,比如故障发生时怎么处理
熔断
:半
熔断
、
熔断
打开、
熔断
关闭 ...
赞
踩
article
【
DevOps
】深入理解
Nginx
Location
块:
配置
示例与应用场景详解_
nginx
配置
...
在这篇文章中,我们深入探讨了
Nginx
中的
Location
块,它是
配置
Nginx
处理客户端请求的关键组件。Locatio...
赞
踩
article
一文搞懂
Midjourney
的
所有
指令
_
midjourney
指令
...
今天分享
midjourney
有哪些
指令
,都是怎么用
的
呢?跟着我
的
脚步走起~_
midjourney
指令
midjourne...
赞
踩
article
Sentinel
限流
应用实践_
sentinel
限流
实践...
目录一、
Sentinel
定义1,概述2,
Sentinel
核心分为两个部分二、
Sentinel
安装1,下载网址2,解压,目...
赞
踩
article
git
出现:[up
to
date]
master
->
origin
/
master
refusing...
在
git
lab提交项目时提示错误如下:Git Pull FailedPOST
git
-upload-pack (316 ...
赞
踩
article
中国各市
CO2
排放
量(2000-2021年)_
地级市
碳
排放
数据
...
云南省 530000 红河哈尼族彝族自治州 532500。云南省 530000 西双版纳傣族自治州 532800。云南省...
赞
踩
article
[
代码
大
模型
]用于
代码
的
大
语言
模型
合集
_
代码
大
模型
现在
有
多少
个...
https://arxiv.org/abs/2201.08239https://arxiv.org/abs/2204.0...
赞
踩
article
QT
入门
看
这
一篇就够(详解
含
qt
源码
)...
qt
教程,
qt
项目,
qt
下载,
qt
项目实战,
qt
多线程,包括Qt环境搭建、Qt数据类型、Qt核心、Qt基础空间、Qt对话...
赞
踩
article
Spring
Bean
的
生命周期
_以下关于
spring
bean
的
生命周期
描述正确
的
是哪些...
即,且名字要与
Bean
中声明
的
方法对应,且不加()_以下关于
spring
bean
的
生命周期
描述正确
的
是哪些以下关于sp...
赞
踩
article
C++
第二十四
弹
---
从零开始
模拟STL中
的
list
(上)...
list
基本结构,默认构造函数,尾插函数,普通迭代器类
的
封装,迭代器与
list
进行关联,链表
的
增删函数~~~
C++
第二十...
赞
踩
article
Bug
库...
netsh int tcp set global ecn=disableC:\Windows\Microsoft.NET...
赞
踩
article
支持
向量
机
设计
思想和相关面试题_
设计
支持
向量
机
...
支持
向量
机
从idea到优化方法的全流程
支持
向量
机
的key idea? key idea1: 待分类点在决策边界法
向量
上的...
赞
踩
article
Hadoop
基础知识笔记_
importjava
.
io
.loexcept
io
n; importorg....
学习笔记相关代码:https://github.com/hackeryang/
Hadoop
-Exercises一、基础1...
赞
踩
article
ChatGPT
-
4o
在
临床医学
日常
工作
、论文高效撰写与项目申报、
数据分析
与
可视化
、
机器
学习
建模中的实...
1、2024 AIGC技术最新进展介绍(生成式人工智能的基本概念与原理、文生视频模型OpenAI Sora vs.Goo...
赞
踩
article
gateway
网关
_使用
Sentinel
实现
gateway
网关
及
服务
接口
限流
...
点击关注“阿甘正专”,设为星标奇迹每天都在发生,等你而来1、
Sentinel
简介1.1
Sentinel
是什么:随着微...
赞
踩
article
Xilinx
7系列
FPGA
PCB
设计
指导
(一)_
xilinx
官网
设计
指导
...
引言:从本文开始,我们陆续介绍下有关7系列
FPGA
通用
PCB
设计
指导
,重点介绍在
PCB
和接口级别做出
设计
决策的策略。由于...
赞
踩
article
Shell
逻辑
判断
、
分支
语句(带
案例
,
Shell
脚本学习笔记)_
shell
条件
判断
如何执行
分支
...
Shell
逻辑
判断
(带
案例
,
Shell
脚本学习笔记)_
shell
条件
判断
如何执行
分支
shell
条件
判断
如何执行分...
赞
踩
article
大厂高频
面试
题
Spring
Bean
生命周期
最详解,字节跳动
面试
问题及答案
java
_springbe...
3.编写测试类
Bean
LifeCycleTest,具体代码如下:@Slf4jlog.info(“====== 开始初始化...
赞
踩
相关标签
chatgpt
人工智能
IO Designer
FPGA与PCB协同设计
Mentor Graphics
Xpedition Designer
IO Optimizer
熔断机制
springboot
fallback
devops
linux
运维
nginx
midjourney
java
微服务
spring cloud
git
大数据
语言模型
自然语言处理
深度学习
qt
开发语言