我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么理解SVM

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么理解SVM

这篇文章主要介绍“怎么理解SVM”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么理解SVM”文章能帮助大家解决问题。

SVM分类两个点。已知两个样本点,如果用SVM模型,决策边界就是线g,它的斜率为已知两个样本点斜率的垂直方向,并经过两个点的中点。

怎么理解SVM

这条线g就是SVM认为的分类两个样本点的最好边界线。

SVM分类多个点

怎么理解SVM

添加更多的样本点,但是有意识地让它们符合上面的分布,此时的最佳决策边界发生变化了吗?没有。样本点虽然多了,但是SVM认为起到支持作用的还是那两个点,support vector就是它们,名字得来了,当然因此决策边界也未变。以上这些都是直接观察出来的,计算机是如何做这个事的?

还启发我们,SVM建立决策边界时,只关心距离决策边界最近的那两个样本点,然后取距离它们都最远的决策边g ,认为g就是最佳决策边界。

有了以上基础,SVM目标函数的结构差不多就知道了:max ( min() ),SVM添加了一个约束,得到的好处是目标函数更精简了:

arg max 1/||w|| 

s.t., y*f(x)>=1

注意,这个更精简的目标函数,必须满足上面的约束,它们是共生关系,缺一不可。

最大值转化为求最小值。机器学习中,遇到目标函数求最大值的,都会转化为求最小值,常规套路,SVM也不例外。

它也很简单,分母最小,原式便能最大,即:

arg min  0.5*||w||^2 

s.t., y * f(x)>=1

目标函数为什么带有系数0.5,没有特殊原因,只不过求导时,0.5*2化简方便。

这是常见的二次规划问题,求解方法有很多种,拉格朗日方法、Lemke方法、内点法、有效集法、椭球算法等。

SVM的以上目标函数求解选用了拉格朗日方法,可以查阅资料,了解此求解方法,里面还用到KKT,转化为先求w,b的最小值,然后再求alfa_i的最大值问题,进而求得参数w和b,至此完毕。

SVM还考虑了软间隔,核函数问题。噪音点出现了。如下图所示,有一个带圈的噪音点出现在了右下角,决策边界在哪里?

怎么理解SVM

如果决策边界这样,可以看出它不是好的决策边界,因为噪音点是错误点,不应该拿它作为支持向量。

怎么理解SVM

克服噪音:松弛因子。SVM适当地放宽了约束条件,将 yi * f(xi) >=1,放宽为 yi *  f(xi) >=1-ei,这个间隔ei就是软间隔。为什么要减去ei,而不是加上ei,因为前者可能使得更多的样本点成立,比如第一幅图中,作为正的支持向量点可能不满足 yi * f(xi) >=1,但是可能满足 yi *  f(xi) >=1-ei,这样即便噪音点出现了,我们仍然可能得到第一幅的分类决策边界。

ei在SVM中称为松弛因子,SVM中用控制因子C来控制ei,当C很大时,ei发挥的作用很小,也就是松弛的很小;C很小时,ei发挥的作用很大,可能松弛的作用更强些。

以上介绍了SVM参数求解和软间隔部分,它们还不是SVM最巧妙的部分SVM真正精彩之处在于将低维空间线性不可分问题转化为高纬空间线性可分问题,比如一个数据集有3个特征,此时线性不可分,但是转化成9个特征后,在此空间下可能就线性可分了,如下图所示,在二维空间下线性不可分,转化到三维下,就可以得到一个线性可分面。

怎么理解SVM

这是如何做到的?核函数将低维下的原始特征映射到了高维下。

数据映射到高维空间后,是否求解的复杂度陡增呢? 不会的。在低维空间下样本点求内积的结果,只需花费O(1)时间复杂度直接转化为高维下的内积结果。

说说SVM
目标函数和约束怎么得来的?

更容易理解SVM的目标函数和约束怎么得来的思路,因此,记录下来,与大家一起分享。设 g(x) = wx+b,则样本点到g(x)的距离为:

|g(x)| / ||w||

SVM 建立决策边界时,只关心距离决策边界最近的那两个样本点,然后取距离它们都最远的决策边,转化为数学公式为:   

 max(min(|g(x)| / ||w||))    

将它化简为:      

 max( 1/||w||)      

 s.t. yi*g(xi) >=1     

怎么想出来的?  

如果设 |g(x)| >= 1 ,则  min( |g(x)| / ||w|| ) = 1 / ||w||    ,  进一步地,max(min(|g(x)| / ||w||)) ,可以化简为:

 max ( 1 / ||w|| )

那么, |g(x)| >= 1 ,如何化简为 yi * g(xi)  >= 1 呢?  注意到 yi 是 第 i 个样本的标签值,要么为 1, 要么为 -1.   当 g(x) >= 0,代表为正例,即 yi = 1,当 g(x) < 0,代表负例,即 yi = -1,因此,|g(x)| =  yi * g(x) >= 1. 

OK.  接下来便是求解如下最优化目标和约束的优化问题:

 max( 1/||w||)      

 s.t. yi*g(xi) >=1  

关于“怎么理解SVM”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么理解SVM

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么理解SVM

这篇文章主要介绍“怎么理解SVM”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么理解SVM”文章能帮助大家解决问题。SVM分类两个点。已知两个样本点,如果用SVM模型,决策边界就是线g,它的斜率为
2023-06-19

SVM在python中的原理是什么

这篇文章主要介绍了SVM在python中的原理是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python有哪些常用库python常用的库:1.requesuts;2.s
2023-06-14

Python实现支持向量机(SVM)分类:算法原理详解

在机器学习中,支持向量机(SVM)常被用于数据分类和回归分析,是由分离超平面的判别算法模型。换句话说,给定标记的训练数据,该算法输出一个对新示例进行分类的最佳超平面。支持向量机(SVM)算法模型是将示例表示为空间中的点,经过映射后,不同类
Python实现支持向量机(SVM)分类:算法原理详解
2024-01-24

SVM算法的理解及其Python实现多分类和二分类问题

这篇文章主要介绍了SVM算法的理解及其Python实现多分类和二分类问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-01

Python基于HOG+SVM/RF/DT等模型怎么实现目标人行检测功能

本篇内容主要讲解“Python基于HOG+SVM/RF/DT等模型怎么实现目标人行检测功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python基于HOG+SVM/RF/DT等模型怎么实现目
2023-06-30

CAP定理怎么理解

本篇内容主要讲解“CAP定理怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CAP定理怎么理解”吧!计算机界有很多高大上又难于理解的术语,CAP就是其中之一, 什么一致性(Consiste
2023-06-05
2024-04-02

javascript怎么理解

这篇文章将为大家详细讲解有关javascript怎么理解,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JavaScript可以做什么1.可以使网页具有交互性,例如响应用户点击,给用户提供更好的体验。2.可
2023-06-14

怎么理解ReentrantLock

这篇文章主要介绍“怎么理解ReentrantLock”,在日常操作中,相信很多人在怎么理解ReentrantLock问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解ReentrantLock”的疑惑有所
2023-06-16

怎么理解InitialContext

InitialContext是Java中的一个类,它提供了与命名和目录服务进行交互的接口。通过InitialContext,可以获取到命名和目录服务中的对象和资源。理解InitialContext可以从以下几个方面进行考虑:1. 定义:In
2023-09-08

怎么理解dubbo

这篇文章将为大家详细讲解有关怎么理解dubbo,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1. Dubbo是什么?Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调
2023-06-05

怎么理解shell

怎么理解shell,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行
2023-06-04

Orleans怎么理解

Orleans怎么理解,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、介绍Orleans是一个框架,提供了一个直接的方法来构建分布式高规模计算应用程序默认可扩展 -》 O
2023-06-19

怎么理解JavaScript

这篇文章主要讲解了“怎么理解JavaScript”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解JavaScript”吧!1、JavaScript是运行在浏览器上的 脚本语言,简称JS
2023-06-25

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录