支持向量机(SVM)——线性支持向量机
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)——线性支持向量机相关推荐
- 支持向量机(SVM):超平面及最大间隔化、支持向量机的数学模型、软间隔与硬间隔、线性可分支持向量机、线性支持向量机、非线性支持向量机、核函数、核函数选择、SMO算法、SVM vs LR、优缺点
支持向量机(SVM):超平面及最大间隔化.支持向量机的数学模型.软间隔与硬间隔.线性可分支持向量机.线性支持向量机.非线性支持向量机.核函数.核函数选择.SMO算法.SVM vs LR.优缺点 目录
- 【机器学习基础】数学推导+纯Python实现机器学习算法8-9:线性可分支持向量机和线性支持向量机...
Python机器学习算法实现 Author:louwill 前面两讲我们对感知机和神经网络进行了介绍.感知机作为一种线性分类模型,很难处理非线性问题.为了处理非线性的情况,在感知机模型的基础上有了两个 ...
- 线性可分支持向量机、线性支持向量机、非线性支持向量机的区别
线性可分支持向量机: 线性可分支持向量机处理的是严格线性可分的数据集. 其分类超平面为: 相应的决策函数为:或者 其学习的优化问题为: 线性支持向量机: 线性支持向量机处理的是线性不可分的数据集.对于 ...
- OpenCV之ml 模块. 机器学习:支持向量机(SVM)介绍 支持向量机对线性不可分数据的处理
支持向量机(SVM)介绍 目标 本文档尝试解答如下问题: 如何使用OpenCV函数 CvSVM::train 训练一个SVM分类器, 以及用 CvSVM::predict 测试训练结果. 什么是支持向 ...
- 线性支持向量机、线性可分支持向量机、非线性支持向量机是怎么区分的?
SVM(Support Vector Machine)是一种二类分类模型. 它的基本模型是定义在特征空间上的间隔最大的线性分类器. 支持向量就是最大间隔或者分割超平面上的那几个临界点,具体入下图所示: ...
- 支持向量机原理(一)线性支持向量机
SVM压制了神经网络好多年,如果不考虑集成学习算法,不考虑特定的训练集,在分类算法中SVM表现排第一. SVM是一个二元分类算法. SVM学习策略:间隔最大化,可形式化为一个求解凸二次规划问题. 间隔 ...
- OpenCV支持向量机SVM简介
OpenCV支持向量机SVM简介 支持向量机SVM简介 目标 什么是SVM? 最佳超平面如何计算? 源代码 解释 设置训练数据 设置SVM的参数 由SVM分类的区域 支持向量 结果 支持向量机SVM简 ...
- 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 ...
- 支持向量机之线性可分支持向量机(一)
简介 支持向量机(support vector machines,SVM)是一种二分类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使得它有别于感知机:支持向量机还包括核技巧 ...
- 支持向量机专题——线性可分支持向量机
原文 支持向量机(support vector machine, SVM)是一种经典的分类器,其主要思想是学习一个在特征空间上使间隔最大的分类器.支持向量机的学习可以看成是一个求解凸二次规划问题的过程 ...
最新文章
- mac OS Sierra支持破解程序
- mysql 动态显示月份列_mysql 中动态显示列
- zabbix 3.2 mysql模板_Zabbix-3.0.3使用自带模板监控MySQL
- 分享15款为开发人员准备的开发移动应用程序必备的新资源和工具
- 远程桌面连接CentOS7
- Siamese Network (应用篇2) :孪生网络用于图像块匹配 CVPR2015
- Oracle 11.2.0.2新特性——用户重命名(Rename User)
- 5G NR Rel16 Measurement report triggering--测量上报事件
- Laravel- 数据库迁移
- 基于VHDL的可变速彩灯控制器的设计
- ajax渲染后的点击事件,在ajax调用后渲染“喜欢”按钮
- dreamhost 优惠码_DreamHost如何通过OpenStack重塑自己
- mv强制覆盖 shell_生产力工具:shell 与 Bash 脚本
- 在Makefile中进行宏定义-D
- 测试管理中的一个问题—功能点覆盖还是功能测试点覆盖
- java gc 随记
- String,StringBuff,Stringbuilder三者的理解以及练习题
- 传统蓝牙协议栈 串口协议SPP(Serial Port Profile)概念介绍
- 什么是网站服务器 域名 备案号,什么是网站服务器 域名 备案
- flutter小控件备忘