【笔记】浅谈支持向量机(SVM)
SVM支持向量机
支持向量机的思想原理
使用支持向量机的思想,既可以解决回归问题,又可以解决分类问题
那么支持向量机的思想是什么?
已经知道逻辑回归这种算法的本质就是在一个平面中寻找决策边界,而分类算法则是认为在这个边界的一侧属于一类,另一侧属于另一类,但是是要边界唯一
对于边界不唯一的问题,可称为不适定问题,逻辑回归解决此类问题的方法就设定一个概率函数,根据概率函数建模,然后最小化损失函数,从而得出决策边界,损失函数完全是由训练数据集决定的
PS:有的时候得出来的决策边界的划分可能泛化能力并不好,如果想要得到一个泛化能力好的决策边界,其特点就是离这条直线最近的点,让这个线尽可能的离这些点远,即在分类出来类别的同时,又与样本点尽可能的远
支持向量机的解决方式有所不同,在找到一个泛化能力好的决策边界以后,按照最近的点进行划线,在这两条线之间,不会存在任何的数据点,即寻找一个最优的决策边界,其距离两个类别的最近的样本最远,其中最近的点称为支持向量,最佳的决策向量就是由这两条向量决定的线的中间区域决定的,即中间的线

支持向量机要做的事情就是最大化两条线之间的距离(margin),从这个解决方法和这个思路来看,解决的是线性可分问题,线性可分问题即对于样本点来说,存在一根直线(高维来说就是存在一个超平面),可以将这些点划分出来,这样才有这个margin,这就是Hard margin SVM
很明显通常情况下,很多数据是线性不可分的,可以对其进行改进,得到soft margin SVM,就可以进行求解了
那么如何最大化margin呢,首先需要将margin给表达出来,得出数学公式以及函数,然后找到其中的一组取值,然后最大化margin
SVM的最优化问题
很明显,如果说线和线之间的距离是margin的话,设线与最佳的决策边界距离为d,这样就得到margin为两倍的d,这样只要得到了d的表达式就可以得到其最大值,就可以得到margin的最大值

解析几何中点到直线的距离求解公式可以很清楚的表示出来,设(x,y)为点,直线为AX+BY+C=0,其距离就可以表示为

将其扩展到n维的空间中,(可以参考这里)其中将截距表示为b

根据上述的式子可以得到距离为(其中w的模为每一维度的平方的和的开方)

这样对于SVM来说,假设这个决策边界为n维空间的直线表达式,又最近的样本点的距离为d,这就说明样本点到直线的距离要大于等于d才行,那么就可以得到(设置一类叫1,一类叫-1)

这就可以变形为

由于分子是一个数,那么就可以将分子消除以后得到

这样就可以得到表达这三条直线的公式

可以将式子化成一个式子

那么对于任何支持向量x,最大化d就是最大化距离,即

也就是对w的模的最小值进行求解,为了方便操作求导,可以设置为

这样就变成了在原先式子的条件下,来最小化上式,这就变成了一个有条件的最优化问题,这就是Hard margin SVM的思路以及方法,但是很多时候是不好用的,此时可能就需要修改,使用soft margin SVM
soft margin SVM
对于hard margin SVM来说,当两个类别的样本距离很近的时候,这样求出来的决策边界虽然是正确的分类,但是其泛化能力是很值得怀疑的
基于模型的目的就是泛化能力高,那么就可以思考一个机制,对于SVM来说,决策边界要有一定的容错能力,在一些情况下需要对一些数据进行错误分类来换取泛化能力的提升,对于线性不可分的问题就可以使用这种想法机制来求解,这就是soft margin SVM
对于soft margin SVM来说,需要允许SVM犯一些错误,可以将之前的条件修改成,其中减去的项要大于等于0

也就是说,在三条线之间再添加上虚线,可以允许有一些点在支持向量的直线和虚线之间,这条虚线公式可以写为

那么怎么才能有一定的容错空间但是容错空间又不能太大呢,其实只要将最小化的方程修改一下即可(加上所有的eta加起来的和,为了平衡两部分的比例,添加上一个系数用来衡量,C越大,SVM的容错空间越小)

上面的操作可以说是在soft margin SVM中加入了L1正则这种方式,可以理解为增加的值本身是一个正则化项,其是为了避免训练出来的模型向极端方向发展
增加正则化项的本质就是让模型针对训练数据集有更高的容错能力,拥有了容错能力以后,可以使模型对训练数据集中的极端数据不敏感,使用这种方式使泛化能力得到提升
有L1正则项,自然有L2正则项,增加L2正则的表达式区别就在于增加的eta的和的形式

以上就是SVM的原理和两种思路方式以及求解方法

【笔记】浅谈支持向量机(SVM)的更多相关文章
- 以图像分割为例浅谈支持向量机(SVM)
1. 什么是支持向量机? 在机器学习中,分类问题是一种非常常见也非常重要的问题.常见的分类方法有决策树.聚类方法.贝叶斯分类等等.举一个常见的分类的例子.如下图1所示,在平面直角坐标系中,有一些点 ...
- C#基础笔记---浅谈XML读取以及简单的ORM实现
背景: 在开发ASP.NETMVC4 项目中,虽然web.config配置满足了大部分需求,不过对于某些特定业务,我们有时候需要添加新的配置文件来记录配置信息,那么XML文件配置无疑是我们选择的一个方 ...
- Java学习笔记——浅谈数据结构与Java集合框架(第一篇、List)
横看成岭侧成峰,远近高低各不同.不识庐山真面目,只缘身在此山中. --苏轼 这一块儿学的是云里雾里,咱们先从简单的入手.逐渐的拨开迷雾见太阳.本次先做List集合的三个实现类的学习笔记 List特点: ...
- java设计模式学习笔记--浅谈设计模式
设计模式的目的 编写软件的过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战.设计模式为了让程序具有更好的 1.代码重用性(即:相同功能的代码,不用多次编写) ...
- struts 2学习笔记—浅谈struts的线程安全
Sruts 2工作流程: Struts 1中所有的Action都只有一个实例,该Action实例会被反复使用.通过上面Struts 2 的工作流程的红色字体部分我们可以清楚看到Struts 2中每个A ...
- Android 开发笔记“浅谈DDMS视图”
DDMS 的全称是Dalvik Debug Monitor Service,即Dalvik调试监控服务,是一个可视化的调试监控工具.它主要是对系统运行后台日志的监控,还有系统线程,模拟器状态的监控.此 ...
- Java学习笔记——浅谈数据结构与Java集合框架(第二篇、Queue、Set)
江南好,何处异京华. 香散翠帘多在水,绿残红叶胜于花.无事避风沙. --<纳兰词> 诗词再好,大图不能忘 上大图: 先说说栈和队列: 栈就好比手枪的弹匣,你往里面压入子弹,最先压入的子弹就 ...
- Java学习笔记——浅谈数据结构与Java集合框架(第三篇、Map)
桃李春风一杯酒,江湖夜雨十年灯 --寄黄几复 之前图上写错了,是Hashtable类.t是小写的,它是个很古老的类,以至于命名都没有那么规范.. HashMap HashMap就是存储key-valu ...
- 【软件构造】-<笔记>-浅谈java中类的初始化过程
编写java程序时,每创建一个新的对象,都会对对象的内容进行初始化. 每一个类的方法中的局部变量都有严格的初始化要求,因此假如写出下面的程序: void f(){ int i; i++; } 编译时就 ...
随机推荐
- 消息队列——kafka
原文:再过半小时,你就能明白kafka的工作原理了 会出现什么情况呢? 1.为了这个女朋友,我请假回去拿(老板不批). 2.小哥一直在你楼下等(小哥还有其他的快递要送). 3.周末再送(显然等不及). ...
- 并不是static final 修饰的变量都是编译期常量
见代码 public class Test { public static void main(String[] args){ // 情况一 基本数据类型 //System.out.println(O ...
- ARTS第十一周
受辞职考研和新冠肺炎疫情影响,一直没更.遗憾,数学和专业课再高点就有戏了.继续. 1.Algorithm:每周至少做一个 leetcode 的算法题2.Review:阅读并点评至少一篇英文技术文章3. ...
- 关于Hadoop调优
Hadoop生产调优 一.HDFS-核心参数 1.NameNode 内存生产配置 1) NameNode 内存计算 每个文件块大概占用 150byte,一台服务器 128G 内存为例,能存储多少文件块 ...
- python 17篇 unittest单元测试框架
单元测试:开发程序的人自己测试自己的代码 unittest自动化测试框架 1.单元测试 import unittest def add(a,b): return a+b # 在运行时不要用run un ...
- 何为“Secure Contexts”安全内容? 终于说明白了!
何为"Secure Contexts"安全内容? 终于说明白了! 看图说话 [途径1]:地址栏输入: edge://flags/ 按需设置选项后,重启浏览器即可. Allow ...
- java集合(2)-Collection与Iterator接口
1 package com.j1803.collectionOfIterator; 2 import java.util.ArrayList; 3 import java.util.Collectio ...
- 【动画消消乐】HTML+CSS 自定义加载动画:清新折叠方块效果 063(附源码及原理详解)
前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 自我介绍ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专 ...
- HTML5-CSS(一)
一.创建 CSS 样式表有三种方式 1. 元素内嵌样式<p style="color:red;font-size:50px;">这是一段文本</p>解释:即 ...
- VSCode 如何远程连接其他主机的 WSL2
VSCode 如何远程连接其他主机的 WSL2 VSCode 的 Remote Deployment 插件对 WSL2 直接提供了支持,能够很方便的连接本机的 WSL2 ,但是并没有提供一个连接远程 ...