1. 支持向量机(SVM)

支持向量机是一个功能强大并且全面的机器学习模型,它能够执行线性或非线性分类、回归,甚至是异常值检测任务。SVM特别适用于中小型复杂数据集的分类。
什么是机?什么是向量?什么是支持?机就是算法的意思,为什么不叫算法叫机是因为一些历史原因。向量就是向量,做分类的时候每个样本都用一个向量表示。支持有撑起来,决定的意思。做分类的时候一般都是找到一个分类超平面(二纬的话是线),超平面一侧是正类一侧是负类。何为支持向量,就是决定了这个分类超平面的向量。所以可以这样理解支持向量机:它是一个分类算法,这个算法是通过超平面进行分类的,这个超平面是由支持向量决定的。

SVM模型有两个非常重要的参数C与gamma。其中 C是惩罚系数,即对误差的宽容度。c越高,说明越不能容忍出现误差,容易过拟合。C越小越能宽容出现的误差,容易欠拟合。
gamma是选择RBF函数作为kernel后,该函数自带的一个参数。隐含地决定了数据映射到新的特征空间后的分布,gamma越大,支持向量越少,gamma值越小,支持向量越多。支持向量的个数影响训练与预测的速度。

1.1 线性SVM分类

SVM对特征的缩放非常敏感。与Logistic回归分类器不同的是,SVM分类器不会输出每个类别的概率。如图5-2所示,在左图中,垂 直刻度比水平刻度大得多,因此可能的最宽的街道接近于水平。在特 征缩放(例如使用Scikit-Learn的StandardScaler)后,决策边界看起来 好很多(见右图)。

软间隔分类:

如果我们严格地让所有实例都不在街道上,并且位于正确的一边,这就是硬间隔分类。硬间隔分类有两个主要问题,首先,它只在数据是线性可分离的时候才有效;其次,它对异常值非常敏感。
要避免这些问题,最好使用更灵活的模型。目标是尽可能在保持街道宽阔和限制间隔违(即位于街道之上,甚至在错误的一边的实例)之间找到良好的平衡,这就是软间隔分类。
超参数C可以控制这个平衡:C值越小,则街道越宽,但是间隔违例也会越多。若是过拟合可降低c值来正则化。

1.2 非线性SVM分类

处理非线性数 据集的方法之一是添加更多特征,比如多项式特征,某些情况下,这可能导致数据集变得线性可分离。

多项式核

添加多项式特征实现起来非常简单,并且对所有的机器学习算法都非常效。但如果多项式太低阶,处理不了非常复杂的数据集,而高阶则会创造出大量的特征,导致模型变得太慢。
核技巧产生的结果就跟添加了许多多项式征,甚至是非常高阶的多项式特征一样,但实际上并不需要真的添加。因为实际没有添加任何特征,所以也就不存在数量爆炸的组合特征了。这个技巧由SVC类来实现。

添加相似特征

解决非线性问题的另一种技术是添加相似特征。这些特征经过相似函数计算得出,相似函数可以测量每个实例与一个特定(landmark)之间的相似度。
高斯RBF核函数
核函数作用:将完全不可分问题,转换为可分或达到近似可分的状态。
(高斯)径向基函数核(英语:Radial basis function kernel),或称为RBF核,是一种常用的核函数。它是支持向量机分类中最为常用的核函数。

开始有-2,0两个地标,x1=−1x_1=-1x1​=−1,与两个坐标的距离为1和2,所以其新特征为:


最简单的选地标方法是在每个实例的位置上创建一个地标,但如果训练集非常大,那就会得到很大数量的特征。

计算复杂度

有这么多的核函数,该如何决定使用哪一个呢?有一个经验
法则是,永远先从线性核函数开始尝试(要记住,LinearSVC比
SVC(kernel=“linear”)快得多),特别是训练集非常大或特征非常多
的时候。如果训练集不太大,你可以试试高斯RBF核,大多数情况下
它都非常好用。如果你还有多余的时间和计算能力,你可以使用交叉
验证和网格搜索来尝试一些其他的核函数,特别是那些专门针对你的
数据集数据结构的核函数

SVM回归

SVM不仅支持线性和非线性分类,而且还支持线性和非线性回归。
回归不再是尝试拟合两个类别之间可能的最宽的街道的同时限制间隔违例,SVM回归要做的是让尽可能多的实例位于街道上,同时限制间隔违例(也就是不在街道上的实例)。
在间隔内添加更多的实例不会影响模型的预测,所以这个模型被称为ε不敏感。

min12∣∣w∣∣22+C∑i=1mξimin\;\; \frac{1}{2}||w||_2^2 +C\sum\limits_{i=1}^{m}\xi_i min21​∣∣w∣∣22​+Ci=1∑m​ξi​ s.t.yi(w∙ϕ(xi)+b)≥1−ξi(i=1,2,...m)s.t. \;\; y_i(w \bullet \phi(x_i) + b) \geq 1 - \xi_i \;\;(i =1,2,...m)s.t.yi​(w∙ϕ(xi​)+b)≥1−ξi​(i=1,2,...m) ξi≥0(i=1,2,...m)\xi_i \geq 0 \;\;(i =1,2,...m)ξi​≥0(i=1,2,...m)

问题

1.支持向量机的基本思想是什么?

答:支持向量机的基本思想是拟合类别之间可能的、最宽的“街 道”。换言之,它的目的是使决策边界之间的间隔最大化,从而分隔出两个类别的训练实例(回归相反)。SVM执行软间隔分类时,实际上是在完美分类和拟合最宽的街道之间进行妥协(也就是允许少数实例最终还是 落在街道上)。还有一个关键点是在训练非线性数据集时,记得使用 核函数

2.什么是支持向量?

答:支持向量机的训练完成后,位于“街道”(参考上一个答案)之上的实例被称为支持向量(也就是两线之外的,回归时是两线之内),这也包括处于边界上的实例。决策边界完全由支持向量决定。非支持向量的实例(也就是街道之外的实例)完全没有任何影响,你可以选择删除它们然后添加更多的实例,或者是将它们移开,只要一直在街道之外,它们就不会对决策边界产生任何影响。计算预测结果只会涉及支持向量,而不涉及整个训练集。

3.使用SVM时,对输入值进行缩放为什么重要?

答:支持向量机拟合类别之间可能的、最宽的“街道”,所以如果训练集不经缩放,SVM将趋于忽略值较小的特征 (见图5-2)。

4.如果训练集有上千万个实例和几百个特征,你应该使用SVM原始问题还是对偶问题来训练模型?

答:这个问题仅适用于线性支持向量机,因为核SVM只能使用对偶问题。对于SVM问题来说,原始形式的计算复杂度与训练实例的数量成正比,而其对偶形式的计算复杂度与某个介于m2和m3之间的数量成正比。所以如果实例的数量以百万计,一定要使用原始问题,因为对偶问题会非常慢。

5.假设你用RBF核训练了一个SVM分类器,看起来似乎对训练集拟合不足,你应该提升还是降低γ(gamma)?C呢?

答:如果一个使用RBF核训练的支持向量机对训练集拟合不足,可 能是由于过度正则化导致的。您需要提升gamma或C(或同时提升二 者)来降低正则化。(见最上面有详解)

由于本人是初学者,对很多算法参数还不太了解,所以借鉴摘抄的很多,并将其融合,在此就不一一点名出处了,希望理解。我没有写多少代码,主要是感觉写上会使篇幅太大,也没有写多推理在公式,(关键自己才大一,绝大部分都看不懂)就言简意赅写一些基本知识。要想搞内部算法,感觉这篇文章可以原文链接:https://blog.csdn.net/v_JULY_v/article/details/7624837
另,本文主要参考于《机器学习实战:基于Scikit-Learn和TensorFlow》这本书,如有需求(还有很多关于Python和机器学习资料),可关注并私信我,必一一送达。
毕竟新手,有错误之处还望赐教,还望支持,不喜勿喷,并希望找到写志同道合的朋友一起学习。

支持向量机——深度AI科普团队相关推荐

  1. 动手学pytorch之通俗易懂何为卷积-深度AI科普团队

    文章目录 简介 为什么要用卷积 卷积神经网络的由来 什么是卷积 定义 解释 卷积运算 信号分析 离散卷积例子:丢骰子 图像处理卷积操作 简介 为什么要用卷积 卷积操作是机器视觉,乃至整个深度学习的核心 ...

  2. 图像分割总体介绍——深度AI科普团队

    概览 初识图像分割 顾名思义,图像分割就是指将图像分割成多个部分.在这个过程中,图像的每个像素点都和目标的种类相关联.图像分割方法主要可分为两种类型:语义分割和实例分割.语义分割会使用相同的类标签标注 ...

  3. 从V1到V4,让你读懂YOLO原理——深度AI科普团队

    文章目录 YOLO概述 模型时间轴 YOLOv1 原理 网络结构 损失函数 激活函数 YOLOv1的缺陷 YOLOv2 Better Batch Normalization(批归一化) High Re ...

  4. 机器学习降维-深度AI科普团队

    降维 许多机器学习问题涉及训练实例的几千甚至上百万个特征.这不仅导致训练非常缓慢,也让我们更加难以找到好的解决方案.我们一般可以大量减少特征的数量,将棘手的问题转化成容易解决的问题.比如处理图像时,其 ...

  5. 决策树随笔-深度AI科普团队

    决策树原理 决策树是一种多功能的机器学习算法,它可以实现分类和回归任务,甚至是多输出任务.它们功能强大,能够拟合 复杂的数据集. -优点:简单直观,基本不需要预处理,不用会议华,处理缺失值,精度高.对 ...

  6. pytorch实战案例-手写数字分类-卷积模型——深度AI科普团队

    文章目录 数据准备 导入需要的模块 使用GPU训练 将数据转换为tensor 导入训练集和测试集 数据加载器 数据展示 创建模型 将模型复制到GPU 损失函数 定义训练和测试函数 开始训练 源码已经上 ...

  7. pytorch实战案例-手写数字分类-全链接模型——深度AI科普团队

    文章目录 @[TOC] 数据准备 导入需要的模块 将数据转换为tensor 导入训练集和测试集 数据加载器 数据展示 创建模型 定义损失函数 定义优化函数 定义训练和测试函数 开始训练 源码已经上传: ...

  8. 呕心沥血干完K-Means聚类——深度AI科普团队

    K-Means简介 K-Means 是一种非监督学习. K 代表的是 K 类,Means 代表的是中心,它有点像全自动分类.聚类方法几乎可以应用于所有对象,簇内的对象越相似,聚类的效果越好. 主要思想 ...

  9. 小白学深度之LSTM长短期记忆神经网络——深度AI科普团队

    前言 不知道RNN的一定要先看看RNN的原理 在RNN中我们说了RNN的不足,也就是对较长的时间,或者较长的string,很多时候前面的数据对后面的数据影响就很小甚至没影响了,这是我们就要加强前面的数 ...

最新文章

  1. 依图科技CEO朱珑:“智能密度”对AI发展意味着什么?
  2. c 和php 加密,加载由blenc加密的页面时出错(C和PHP代码)
  3. wxWidgets随笔(11)-wxFrame类
  4. 阈值Java_OpenCV简单阈值
  5. vba 字典_VBA中字典的基础概念及调用方法
  6. Linux 小知识翻译 - 「端口和端口号」
  7. 2017ACM/ICPC广西邀请赛
  8. .net byte转java byte_Java Web安全 || Java基础 Java Agent
  9. linux内核 sin头文件,Linux内核中中断request_irq详解--中断共享问题解决
  10. opencv特征提取1-Harris角点检测
  11. Bridge模式——对象结构型模式
  12. 阿里云:已有10000家企业在云上构建数据湖
  13. Matlab画平滑曲线的两种方法( 拟合或插值后再用plot即可)
  14. PS修改图片尺寸和大小
  15. 100%可用的总裁主题授权版 WordPress付费资源素材下载主题
  16. (原创)如何将Nios II硬件和软件合成一个文件(NIOS II)(硬件)(软件)(合并)...
  17. 【vim环境配置】详细实录
  18. ”小糊涂“:数学考试之友
  19. 2023年的 苹果iPhone15/Pro 将有哪些变化
  20. C语言学习笔记(四)

热门文章

  1. 闪退mac_幕布闪退怎么办?别着急看这里
  2. 千里眼摄像头支持对象存储吗_3.5ms超高速写入、支持125℃工作的EEPROM“BR24H-5AC系列”...
  3. 计算机算法设计与分析读后感,算法设计与分析基础经典读后感有感
  4. linux修改非root用户密码永不过期
  5. RDS数据库通过内网导出到其他RDS实例和ESC上的MYSQL数据库(新手运维)
  6. python中global的使用_PYTHON中使用GLOBAL引发的一系列问题
  7. 爬虫用java还是python_网络爬虫是用python比较好,还是Java比较好呢?
  8. python的基本数据结构_python学习笔记-基本数据结构
  9. [技术博客] 微信小程序的formid获取
  10. Python离线环境