SVM支持向量机

定义:支持向量机是主要用于解决分类问题的学习模型。它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。

分类

1-当训练样本线性可分,通过硬间隔最大化,学习一个线性分类器,叫线性可分支持向量机

2-当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,叫线性支持向量机

3-当训练数据线性不可分的时候,通过使用核技巧以及软间隔最大化,学习非线性支持向量机

SVM算法的主要优点有:

1) 解决高维特征的分类问题和回归问题很有效,在特征维度大于样本数时依然有很好的效果。

2) 仅仅使用一部分支持向量来做超平面的决策,无需依赖全部数据。

3) 有大量的核函数可以使用,从而可以很灵活的来解决各种非线性的分类回归问题。

4) 样本量不是海量数据的时候,分类准确率高,泛化能力强。

SVM算法的主要缺点有:

1) 如果特征维度远远大于样本数,则SVM表现一般。

2) SVM在样本量非常大,核函数映射维度非常高时,计算量过大,不太适合使用。

3) 非线性问题的核函数的选择没有通用标准,难以选择一个合适的核函数。

4) SVM对缺失数据敏感。

SVM核函数的意义

SVM通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身无法线性可分的数据分开。核函数的真正意义在于没有真正映射到高维空间却达到了映射的作用,减少了大量的映射计算。

如何选择以及核函数的种类

1-如果特征的数量大到和样本数量差不多,则使用线性核函数SVM或者LR(逻辑回归)

2-如果特征的数量小,样本的数量正常,则使用高斯核函数SVM

3-如果特征的数量小,样本数量很多,由于求解最优化问题的时候,目标函数涉及两两样本计算内积,使用高斯核明显计算会大于线性核,所以手动添加一些特征,使得线性可分,然后可以用LR或者线性核的SVM

4-利用交叉验证,试用不同的核函数,误差最小的就是效果最好的核函数

5-混合核函数方法,将不同的核函数结合起来

为什么要将求解SVM的原始问题转换为对偶问题

对偶问题可以给出原始问题的一个下界,当满足一定条件时,原始问题和对偶问题的解是等价的,并且它还可以自然地引入核函数

SVM为什么采用间隔最大化

当训练数据线性可分的时候,存在无穷个分离超平面可以将两类数据正确分开。感知机或者神经网络等利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。线性可分支持向量机利用间隔最大化求得最优分离超平面,此时的解释唯一的。另一方面,此时的分隔超平面所产生的的分类结果是最鲁棒的,对未知实例的泛化能力最强。

为什么SVM对噪声以及缺失值敏感

当噪声出现的过多的话,或者当噪声出现并成为支持向量的时候,噪声对模型影响是巨大的

这里的缺失值是指缺失某些特征数据,向量数据不完整。因为SVM不像决策树一样有处理缺失值的策略,所以如果存在缺失值,这些数据在该特征维度很难正确的分类,将影响到训练结果的好坏。

SVM中样本偏斜的处理方法

样本偏斜是指数据集中真负类样本数量不均,例如正类样本有10000个,负类样本只有100个,这样的话就会使超平面被推向负类,因为负类数量少,分布的不够广,这样会影响结果的准确性。

解决方法:我们可以对正类的样本使用惩罚因子C+,负类样本用另一个C-,这个比例的确定一个好的方法时衡量他们分布的情况,具体的做法是给负类找一个高维空间中的超球体,它包含了所有负类的样本,再给正类找一个,比较一下两个球的半径,半径大的分布广,惩罚因子小。

实际中根据需要选择简单的就行,例如libSVM就可以直接使用样本的数量比。比如上面举例中就可以定义  c+ :c-=1 : 100

关于SVM的一些知识点的更多相关文章

  1. SVM知识点

    SVM(Support Vector Machine),支持向量机,有监督学习模型,一种分类模型.在特征空间(输入空间为欧式空间或离散集合,特征空间为欧式空间或希尔伯特空间)中寻找间隔最大化的分离超平 ...

  2. SVM面试知识点总结

    1. SVM 原理 SVM 是一种二类分类模型.它的基本思想是在特征空间中寻找间隔最大的分离超平面使数据得到高效的二分类,具体来讲,有三种情况(不加核函数的话就是个线性模型,加了之后才会升级为一个非线 ...

  3. EasyPR--开发详解(6)SVM开发详解

    在前面的几篇文章中,我们介绍了EasyPR中车牌定位模块的相关内容.本文开始分析车牌定位模块后续步骤的车牌判断模块.车牌判断模块是EasyPR中的基于机器学习模型的一个模块,这个模型就是作者前文中从机 ...

  4. Atitit 图像处理知识点体系知识图谱 路线图attilax总结 v4 qcb.xlsx

    Atitit 图像处理知识点体系知识图谱 路线图attilax总结 v4 qcb.xlsx 分类 图像处理知识点体系 v2 qb24.xlsx 分类 分类 理论知识 图像金字塔 常用底层操作 卷积扫描 ...

  5. 支持向量机(SVM)基础

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  6. SVM入门

    前言: 又有很长的一段时间没有更新博客了,距离上次更新已经有两个月的时间了.其中一个很大的原因是,不知道写什么好-_-,最近一段时间看了看关于SVM(Support Vector Machine)的文 ...

  7. 常用的机器学习&数据挖掘知识点【转】

    转自: [基础]常用的机器学习&数据挖掘知识点 Basis(基础): MSE(Mean Square Error 均方误差),LMS(LeastMean Square 最小均方),LSM(Le ...

  8. 支持向量机(SVM)利用网格搜索和交叉验证进行参数选择

    上一回有个读者问我:回归模型与分类模型的区别在哪?有什么不同,我在这里给他回答一下 : : : : 回归问题通常是用来预测一个值,如预测房价.未来的天气情况等等,例如一个产品的实际价格为500元,通过 ...

  9. 机器学习中的算法(2)-支持向量机(SVM)基础

    版权声明:本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gma ...

随机推荐

  1. python_datetime模块和time模块

    1.datetime模块 获取当前时间: import datetime # 获取当前时间 ctime = datetime.datetime.now() print(ctime) 只显示:年-月-日 ...

  2. swoole,http\server 跨域---记一次php网站跨域访问上机实验

    缘由:为了更好的体验swoole组件优良的协程Mysql客户端,实现更好的并发设计:写了一个小程序. 环境准备: 没有采用任何框架,只是使用了smarty模版,来渲染后端php响应的数据,在一个htm ...

  3. Codeforces Round #543 (Div. 1, based on Technocup 2019 Final Round) 题解

    题面戳这里 A. Diana and Liana 首先如果s>ks>ks>k一定无解,特判一下.那么我们考虑找恰好满足满足题目中的要求的区间[l,r][l,r][l,r],那么需要要 ...

  4. 【题解】求细胞数量-C++

    题目描述一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.(1<=m,n<=100)? 输入输出格式输入格 ...

  5. python 序列通用操作

    通用序列操作:索引:greeting=hellogreeting[0] 分片:number[1,2,3,4,5,6]number[3:6]number[3:6:1] 序列相加:[1,2,3] + [4 ...

  6. Java进阶知识20 Spring的代理模式

    本文知识点(目录): 1.概念  2.代理模式      2.1.静态代理      2.2.动态代理      2.3.Cglib子类代理 1.概念 1.工厂模式  2. 单例模式 代理(Proxy ...

  7. Windows Storport Miniport 驱动开发 葵花宝典 - 翻译

    Roadmap for Developing Storport Miniport Drivers Last Updated: 4/20/2017   To create a storport mini ...

  8. 【学习笔记】OI模板整理

    CSP2019前夕整理一下模板,顺便供之后使用 0. 非算法内容 0.1. 读入优化 描述: 使用getchar()实现的读入优化. 代码: inline int read() { int x=0; ...

  9. deepin安装下载,部署在虚拟机上

    第一次接触linux就用了很久的Ubuntu,后来尝试了Manjaro.Debian,还是用了Ubuntu,但是用VM虚拟机使用的ubuntu经常卡顿.我始终觉得ubuntu的默认桌面环境gnome可 ...

  10. Jenkins系统初始化配置

    1.点击系统管理-->全局安全配置 2.设置允许用户注册,点击保存 3.配置全局工具 4.配置maven文件路径,使用文件系统中的settings文件 5.配置jdk 6.配置maven 7.我 ...