网站首页 > 技术文章 正文
今天要讲的算法相对于前几篇算法会有更好的准确率,同时也是相对于前几篇算法较难的存在。通过了我几个小时的硬啃终于理解了,下面就给大家用简单的方法讲解。
支持向量机的运算流程
支持向量机是中文名称,英文为:Support Vector Machine简称SVM。SVM分类器实际上是构成一个‘超平面’隔离数据的过程,比如在一维空间中只需要一个点就可以分割样本,二维空间中需要一条直线;三维需要一个平面;推广到更高维数据则需要一个‘超平面’,下面我以二维平面为例讲解。
假设你有一组需要分类的二维数据。如下图:
上图中有两个类别的数据,分别是三角形和小红点。当然在二维中可以找到多条直线分割出这两大类,比如图里的红色实线与蓝色实线,那么这两类大家觉得是红色的实线分割类别好还是蓝色的实线呢!乍一看好像都可以,但是为什么蓝色的实线更好呢!那么今天告诉你,并且也让你知道如何通过支持向量机找到这条直线。
首先大家仔细观察可以发现蓝色实线距离各类的样本点的距离相对较远,而红色实线距离样本点相对较近。这说明什么,说明当新的类似样本出现时距离较远的分割线就有很大的几率分割正确,即模型的泛化能力较高,那么显而易见蓝色的具有很高的泛化能力。
在图中给出两类样本点距离样本最近的距离分别为D1和D2,那么根据距离的大小选择构造‘超平面’平面的大小,为了让模型距离强的泛化能力的分割能力,以较小距离的构造(图D1),以此为距离构造在图中构造无数条分割线形成‘分割带’,那么我们可以认为当分割单的距离越大时模型泛化能力越强。SVM模型就是寻找这个最宽‘带’是的算法。
通过以上就可以表示出SVM模型的目标函数:
那么就很容易理解以上公式,其中min(Di)就表示所有样本中距离某个分割线最短的距离,则maxmin(Di)就是表示在样本点距离分割线最近的情况下,在所有分割中找出最大的距离Di。w,b就是这个分割线的参数,假设分割线表示为wx+b=0,那么点到直线的距离为:(这里使用的是解析几何中点到直线的公式)
||W||=(其中W为二范式)。但是很显然w,b的值可以是很多种,仅仅通过以上的公式无法求解。那么就需要换个角度思考目标函数了。主要有:线性可分的SVM、近似线性可分的SVM以及非线性可分的SVM目标函数。
线性可分割的SVM
线性也就是说构成的‘超平面’必须是有一条或者无数条直线构成的不能是曲线。一般来说在求解多选择最优选项时都必须要有约束条件才行,在原有的SVM模型的目标函数并没有明显的约束条件,因此必须给它添加约束条件。那么就要想到1或0,0显然不行。那么只有1了,那么引人变量Ci为样本类别用+1,-1表示,把分割红点的虚线设置为,把分割三角形的虚线设置为。当代人入计算的值小于等于-1时,Ci为-1;当代人计算的值大于等于1时,Ci为+1。就好像把分割执行平移到了X轴,两条虚线分别位于y=-1,y=1。(当时实际距离并一定是1)
那么就可以确定所有样本点与分割线之间的距离Di >=1 了。记新的距离为Ri=。
那么模板函数转换为:
那么等价于:
利用等价代换将图片1转换为:
那么根据约束条件图片2和目标条件图片3可以通过拉格朗日乘子法引入新变量求解未知数问题了。拉格朗日的推导过程和计算过程这里就不给大家计算了,如果感兴趣的同学可以上网查找相关资料也可以私信博主。
线性可分割的SVM是具有明显缺陷的,通过样本实例图就可以发现,红点样本中为什么不取最近的那一点呢!实际上给的图是近似线性的SVM分割结果,明天给大家讲解为什么近似线性的SVM更加优秀。
代码部分,下次一定更新!([吃瓜群众][吃瓜群众][吃瓜群众])
每日日语语法:
表示程度的副词:「とても」「たいへん」>「すこし」「ちょっと」>「あまり~ません」>「全然~ません」
从左到右程度递减:很、非常>稍微,一点>不太>完全不
猜你喜欢
- 2024-11-19 零基础学习!数据分析分类模型「支持向量机」
- 2024-11-19 机器学习 | 算法笔记(三)- 支持向量机算法以及代码实现
- 2024-11-19 我以前一直没有真正理解支持向量机,直到我画了一张图
- 2024-11-19 研一小姑娘分享机器学习之SVM支持向量机
- 2024-11-19 [机器学习] sklearn支持向量机
- 2024-11-19 初探支持向量机:用大白话解释、原理详解、Python实现
- 2024-11-19 支持向量机的核函数
- 2024-11-19 初探支持向量机模型
- 2024-11-19 如何使用支持向量机学习非线性数据集
- 2024-11-19 一文帮助你快速搞懂支持向量机算法模型
你 发表评论:
欢迎- 11-19零基础学习!数据分析分类模型「支持向量机」
- 11-19机器学习 | 算法笔记(三)- 支持向量机算法以及代码实现
- 11-19我以前一直没有真正理解支持向量机,直到我画了一张图
- 11-19研一小姑娘分享机器学习之SVM支持向量机
- 11-19[机器学习] sklearn支持向量机
- 11-19支持向量机
- 11-19初探支持向量机:用大白话解释、原理详解、Python实现
- 11-19支持向量机的核函数
- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)