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. IP分组

    IP 分组为了更准确地讨论 I n t e r n e t协议处理,我们必须定义一些名词.图 显示了在不同的I n t e r n e t层之间传递数据时用来描述数据的名词.我们把传输协议交给 I P ...

  2. Java集合--ArrayList,LinkedList性能分析

    转载请注明出处:http://www.cnblogs.com/skywang12345/p/3308900.html 第1部分 List概括 先回顾一下List的框架图 (01) List 是一个接口 ...

  3. centos ntfs-3g not find

    1,CentOS默认源里没有ntfs3g,想要添加ntfs支持,需要自己下载编译安装或者加源yum安装.我这里使用的是添加aliyun的epel源来yum安装的方式. 2,添加epel yum源wge ...

  4. idea 查看类继承关系的快捷键

    类似eclipse ctrl+t的快捷键,idea中是ctrl+H

  5. django获取数据

    获取单个值 request.POST.get('user') # user对应前端name属性对应的值 获取多个值(如checkbox,multiple) request.POST.getlist(' ...

  6. SIGAI机器学习第九集 数据降维2

    讲授LDA基本思想,寻找最佳投影矩阵,PCA与LDA的比较,LDA的实际应用 大纲: 非线性降维算法流形的概念流形学习的概念局部线性嵌入拉普拉斯特征映射局部保持投影等距映射实验环节 非线性降维算法: ...

  7. 009_Linux驱动之_request_irq()函数

    1. request_irq()函数原型 int request_irq(unsigned int irq, irq_handler_t handler, unsigned long irqflags ...

  8. 032_备份 MySQL 的 shell 脚本(mysqldump 版本)

    #!/bin/bash#定义变量 user(数据库用户名),passwd(数据库密码),date(备份的时间标签)#dbname(需要备份的数据库名称,根据实际需求需要修改该变量的值,默认备份 mys ...

  9. 五十四.自定义镜像及仓库、持久化存储 、 Docker网络架构

    1. 制作自定义镜像(base基础镜像,搭建共性环境) 基于centos镜像使用commit创建新的镜像文件 基于centos镜像使用Dockerfile文件创建一个新的镜像文件   1.1 使用镜像 ...

  10. luogu 1903 [国家集训队]数颜色 / 维护队列 带修改莫队

    十分玄学的数据结构~ code: #include <bits/stdc++.h> #define N 1000006 #define setIO(s) freopen(s".i ...