SVM能够做线性或者非线性的分类,回归,甚至异常值检测,适合应用于复杂但中小规模数据集的分类问题。
线性支持向量机
下图是鸢尾花数据集一部分,两个种类能够很容易被一条线分开,左图显示了线性分类器做出的三种可能边界。虚线是一条很差的判定边界,不能正确的划分类别,另外两个线性模型的判定边界虽然能分开,但他们的判定边界离样本点太近,对新数据的表现可能不好。右图中 SVM 分类器的判定边界实线,不仅分开了两种类别,而且还尽可能地远离了最靠近的训练数据点。你可以认为 SVM 分类器在两种类别之间保持了一条尽可能宽敞的街道(图中平行的虚线),其被称为最大间隔分类。

我们注意到添加更多的样本点在“街道”外并不会影响到判定边界,因为判定边界是由位于“街道”边缘的样本点确定的,这些样本点被称为“支持向量”(上图中被圆圈圈起来的点),用中学生的话说就是找两个类别中相距最近的两点,连起来,求它们的法线。

硬间隔分类:严格规定所有数据都不在中间街道上,分布在两边。存在两个问题:1.只对线性可分的数据起作用。2.对异常点敏感。下面左图很难找到硬间隔,右图判定边界很难一般化
软间隔分类:为了避免硬间隔的问题,在保持街道尽可能大和避免间隔违规之间找到一个良好的平衡。可以使用更加软性的模型。
SKlearn的SVM类中是通过C超参数(惩罚系数)来控制平衡,下图显示了在非线性可分隔的数据集上,两个软间隔SVM分类器的判定边界。左边图中,使用了较大的C值,导致更少的间隔违规,但是间隔较小。右边的图,使用了较小的C值,间隔变大了,但是许多数据点出现在了“街道”上。然而,第二个分类器似乎泛化地更好:事实上,在这个训练数据集上减少了预测错误,因为实际上大部分的间隔违规点出现在了判定边界正确的一侧。

如果SVM模型过拟合,可以通过减小超参数C去调整。
SKLearn代码,生成模型为上右图

import numpy as np
from sklearn import datasets
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVCiris = datasets.load_iris()
X = iris["data"][:, (2, 3)] # petal length, petal width
y = (iris["target"] == 2).astype(np.float64) # Iris-Virginicasvm_clf = Pipeline((("scaler", StandardScaler()),("linear_svc", LinearSVC(C=1, loss="hinge")),))svm_clf.fit(X, y)Then, as usual, you can use the model to make predictions:>>> svm_clf.predict([[5.5, 1.7]])
array([ 1.])

转自SKLearn实战

支持向量机(SVM)——线性支持向量机相关推荐

  1. 支持向量机(SVM):超平面及最大间隔化、支持向量机的数学模型、软间隔与硬间隔、线性可分支持向量机、线性支持向量机、非线性支持向量机、核函数、核函数选择、SMO算法、SVM vs LR、优缺点

    支持向量机(SVM):超平面及最大间隔化.支持向量机的数学模型.软间隔与硬间隔.线性可分支持向量机.线性支持向量机.非线性支持向量机.核函数.核函数选择.SMO算法.SVM vs LR.优缺点 目录

  2. 【机器学习基础】数学推导+纯Python实现机器学习算法8-9:线性可分支持向量机和线性支持向量机...

    Python机器学习算法实现 Author:louwill 前面两讲我们对感知机和神经网络进行了介绍.感知机作为一种线性分类模型,很难处理非线性问题.为了处理非线性的情况,在感知机模型的基础上有了两个 ...

  3. 线性可分支持向量机、线性支持向量机、非线性支持向量机的区别

    线性可分支持向量机: 线性可分支持向量机处理的是严格线性可分的数据集. 其分类超平面为: 相应的决策函数为:或者 其学习的优化问题为: 线性支持向量机: 线性支持向量机处理的是线性不可分的数据集.对于 ...

  4. OpenCV之ml 模块. 机器学习:支持向量机(SVM)介绍 支持向量机对线性不可分数据的处理

    支持向量机(SVM)介绍 目标 本文档尝试解答如下问题: 如何使用OpenCV函数 CvSVM::train 训练一个SVM分类器, 以及用 CvSVM::predict 测试训练结果. 什么是支持向 ...

  5. 线性支持向量机、线性可分支持向量机、非线性支持向量机是怎么区分的?

    SVM(Support Vector Machine)是一种二类分类模型. 它的基本模型是定义在特征空间上的间隔最大的线性分类器. 支持向量就是最大间隔或者分割超平面上的那几个临界点,具体入下图所示: ...

  6. 支持向量机原理(一)线性支持向量机

    SVM压制了神经网络好多年,如果不考虑集成学习算法,不考虑特定的训练集,在分类算法中SVM表现排第一. SVM是一个二元分类算法. SVM学习策略:间隔最大化,可形式化为一个求解凸二次规划问题. 间隔 ...

  7. OpenCV支持向量机SVM简介

    OpenCV支持向量机SVM简介 支持向量机SVM简介 目标 什么是SVM? 最佳超平面如何计算? 源代码 解释 设置训练数据 设置SVM的参数 由SVM分类的区域 支持向量 结果 支持向量机SVM简 ...

  8. 6.支持向量机(SVM)、什么是SVM、支持向量机基本原理与思想、基本原理、课程中关于SVM介绍

    6.支持向量机(SVM) 6.1.什么是SVM 6.2.支持向量机基本原理与思想 6.2.1.支持向量机 6.2.2.基本原理 6.3.课程中关于SVM介绍 6.支持向量机(SVM) 6.1.什么是S ...

  9. 支持向量机之线性可分支持向量机(一)

    简介 支持向量机(support vector machines,SVM)是一种二分类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使得它有别于感知机:支持向量机还包括核技巧 ...

  10. 支持向量机专题——线性可分支持向量机

    原文 支持向量机(support vector machine, SVM)是一种经典的分类器,其主要思想是学习一个在特征空间上使间隔最大的分类器.支持向量机的学习可以看成是一个求解凸二次规划问题的过程 ...

最新文章

  1. mac OS Sierra支持破解程序
  2. mysql 动态显示月份列_mysql 中动态显示列
  3. zabbix 3.2 mysql模板_Zabbix-3.0.3使用自带模板监控MySQL
  4. 分享15款为开发人员准备的开发移动应用程序必备的新资源和工具
  5. 远程桌面连接CentOS7
  6. Siamese Network (应用篇2) :孪生网络用于图像块匹配 CVPR2015
  7. Oracle 11.2.0.2新特性——用户重命名(Rename User)
  8. 5G NR Rel16 Measurement report triggering--测量上报事件
  9. Laravel- 数据库迁移
  10. 基于VHDL的可变速彩灯控制器的设计
  11. ajax渲染后的点击事件,在ajax调用后渲染“喜欢”按钮
  12. dreamhost 优惠码_DreamHost如何通过OpenStack重塑自己
  13. mv强制覆盖 shell_生产力工具:shell 与 Bash 脚本
  14. 在Makefile中进行宏定义-D
  15. 测试管理中的一个问题—功能点覆盖还是功能测试点覆盖
  16. java gc 随记
  17. String,StringBuff,Stringbuilder三者的理解以及练习题
  18. 传统蓝牙协议栈 串口协议SPP(Serial Port Profile)概念介绍
  19. 什么是网站服务器 域名 备案号,什么是网站服务器 域名 备案
  20. flutter小控件备忘

热门文章

  1. ubuntu下没有中文输入法的解决办法!
  2. css实现渐变色边框动态旋转
  3. jit和jitx区别_JIT是什么东西 分分钟打下来!
  4. 植物大战僵尸anroid版
  5. 爬虫----爬虫基本原理
  6. 音质好的TWS耳机有哪些?音质最好的TWS耳机推荐
  7. 停车还能360全方位影像_路虎(揽胜运动星脉极光发现)车主如何选购360全景安全辅助系统...
  8. 中英文翻译功能 php,PHP微信开发之翻译功能
  9. Numpy 数组索引
  10. 网络同步时钟系统_NTP时间服务器