当前位置:网站首页>支持向量机SVM
支持向量机SVM
2022-08-05 10:55:00 【Ding Jiaxiong】
13. 支持向量机SVM
文章目录
13.1 简介
SVM全称是supported vector machine(支持向量机),即寻找到一个超平面使样本分成两类,并且间隔最大
SVM能够执行线性或非线性分类、回归,甚至是异常值检测任务。它是机器学习领域最受欢迎的模型之一。SVM特别适用于中小型复杂数据集的分类
13.2 硬间隔和软间隔
13.2.1 硬间隔
- 只有在数据是线性可分离的时候才有效
- 对异常值非常敏感
13.2.2 软间隔
- 尽可能在保持最大间隔宽阔和限制间隔违例之间找到良好的平衡
13.3 API
from sklearn import svm
SVM具有良好的鲁棒性,对未知数据拥有很强的泛化能力,特别是在数据量较少的情况下,相较其他传统机器学习算法具有更优的性能
13.3.1 使用SVM作为训练模型时,通常流程
- 对样本数据进行归一化
- 用核函数对样本进行映射(最常采用和核函数是RBF和Linear,在样本线性可分时,Linear效果要比RBF好)
- 用cross-validation和grid-search对超参数进行优选
- 用最优参数训练得到模型
- 测试
13.3.2 sklearn中支持向量分类三种方法
SVC
class sklearn.svm.SVC(C=1.0, kernel=‘rbf’, degree=3,coef0=0.0,random_state=None)
- C: 惩罚系数,用来控制损失函数的惩罚系数,类似于线性回归中的正则化系数
- kernel: 算法中采用的核函数类型,核函数是用来将非线性问题转化为线性问题的一种方法
- degree:
当指定kernel为’poly’时,表示选择的多项式的最高次数,默认为三次多项式;
若指定kernel不是’poly’,则忽略,即该参数只对’poly’有用。 - coef0: 核函数常数值(y=kx+b中的b值)
NuSVC
class sklearn.svm.NuSVC(nu=0.5)
- nu: 训练误差部分的上限和支持向量部分的下限,取值在(0,1)之间,默认是0.5
LinearSVC
class sklearn.svm.LinearSVC(penalty=‘l2’, loss=‘squared_hinge’, dual=True, C=1.0)
- penalty:正则化参数
- loss:损失函数
- dual:是否转化为对偶问题求解,默认是True
- C:惩罚系数
13.4 算法原理
13.4.1 目标函数
13.4.2 目标函数求解过程
对目标函数添加符号,转换为求最小值
求得超平面
求得分类决策函数
13.5 损失函数
0/1损失函数
Hinge损失函数
Logistic损失函数
13.6 核方法
核函数
将原始输入空间映射到新的特征空间,从而,使得原本线性不可分的样本可能在核空间可分
常见核函数
13.7 SVM回归
- 让尽可能多的实例位于预测线上,同时限制间隔违例
- 线距的宽度由超参数ε控制
13.8 案例:数字识别器
13.9 SVM总结
一种二类分类模型
在特征空间中寻找间隔最大化的分离超平面的线性分类器
13.9.1 优点
- 在高维空间中非常高效
- 即使在数据维度比样本数量大的情况下仍然有效
- 在决策函数(称为支持向量)中使用训练集的子集,因此它也是高效利用内存的
- 通用性:不同的核函数与特定的决策函数一一对应
13.9.2 缺点
- 如果特征数量比样本数量大得多,在选择核函数时要避免过拟合
- 对缺失数据敏感
- 对于核函数的高维映射解释力不强
边栏推荐
猜你喜欢
RT-Thread记录(一、RT-Thread 版本、RT-Thread Studio开发环境 及 配合CubeMX开发快速上手)
深入理解 Istio 流量管理的超时时间设置
012年通过修补_sss_提高扩散模型效率
张朝阳对话俞敏洪:一边是手推物理公式,一边是古诗信手拈来
API 网关简述
#yyds干货盘点#【愚公系列】2022年08月 Go教学课程 001-Go语言前提简介
结合“xPlus”探讨软件架构的创新与变革
Use KUSTO query statement (KQL) to query LOG on Azure Data Explorer Database
JS introduction to reverse the recycling business network of learning, simple encryption mobile phone number
This notebook of concurrent programming knowledge points strongly recommended by Ali will be a breakthrough for you to get an offer from a big factory
随机推荐
负载均衡应用场景
FPGA:开发环境Vivado的使用
上位机开发C#语言:模拟STC串口助手接收单片机发送数据
Chapter 5: Activiti process shunting judgment, judging to go to different task nodes
Go编译原理系列6(类型检查)
How to choose coins and determine the corresponding strategy research
012_SSS_ Improving Diffusion Model Efficiency Through Patching
金融业“限薪令”出台/ 软银出售过半阿里持仓/ DeepMind新实验室成立... 今日更多新鲜事在此...
nyoj754 黑心医生 结构体优先队列
Go compilation principle series 6 (type checking)
Guys, I am a novice. I use flinksql to write a simple count of user visits according to the document, but it ends after executing it once.
微信小程序标题栏封装
Leetcode刷题——623. 在二叉树中增加一行
MySQL 中 auto_increment 自动插入主键值
第六章:activiti流程分流判断之排它网关和并行网关
Create a Dapp, why choose Polkadot?
苹果Meta都在冲的Pancake技术,中国VR团队YVR竟抢先交出产品答卷
化繁为简!阿里新产亿级流量系统设计核心原理高级笔记(终极版)
STM32 entry development: write XPT2046 resistive touch screen driver (analog SPI)
第五章:activiti流程分流判断,判断走不同的任务节点