作者:文火冰糖的硅基工坊​


目录

​第1章 支持向量机概述​

​1.1 什么是支持向量机​

​1.2 为什么称为支持向量机​

​1.3 支持向量机功能的强大​

​1.4 支持向量机性能的强大​

​1.5 支持向量机应用广泛​

​1.6 SVM是最接近深度学习的机器学习算法。​

​第2章 支持向量机的基本思想(以平面二分类为例)​

​2.1 分类目标与基本思想​

​2.2 不适宜问题​

​2.3 支持向量机的基本思想​

​2.4 支持向量机基于思想的进一步说明​

​第3章 隔离带Hard Margin的数学表达式与最优化​

​第4章 Soft margin SVC的基本原理​

​4.1 Hard margin面临的困难与soft margin的几何图形​

​4.2 Soft margin的解决之道​

​4.3 Soft margin的数学表达式=》把现实问题转换最优化问题​

​4.4 soft margin的参数求解:最优化求解过程=》梯度下降。​

​第5章 数据的正则化/规范化​

​5.1 为什么要正则化Normalization​

​5.2 什么是正则化Normalization​

​5.3 如何正则化Normalization​

​后记:​

​参考:​


第1章 支持向量机概述

1.1 什么是支持向量机

支持向量机SVM(Support Vector Machine),是机器学习中获得关注最多的算法,是scikit-learn中功能最全面的机器学习算法,没有之一。

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_支持向量机

它是利用1个决策边界(二维直线或三维平面)和2个支撑边界(二维直线或三维平面)共同协作,完成对线性和非线性数据的分类, 以及线性与线性数据的拟合。

在上图中,实线称为决策或分类边界线,2个虚线称为支撑边界。

1.2 为什么称为支持向量机

支持向量机=》“支持”、“向量”、“机”,这3个词。

“机”:机器,机器自动完成某种算法功能。

向量:是指样本,每个样本都是多维数据,因此称为向量。

那什么是“支持/支撑”向量呢?也就是说,并非所有的向量都可以称为支持向量。

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_scikit-learn_02

在支持向量机中,一定存在这样的向量点,它们离决策边界线的距离最近,通过这些点,可以画出2个平行于决策边界线的平行线,这2个平行线就是支撑线(在上图中的虚线部分),用于隔离不同类型的数据。在左侧虚线的上方是一类数据,在右侧虚线的下方的数据就是另一类数据。而虚线的中间是没有数据的。虚线通过的点,称为支持/支撑向量!!!

这就是支持向量机名称的由来!!!。

1.3 支持向量机功能的强大

支持向量机能够完成线性分类、线性拟合、非线性分类、非线性拟合、无监督学习等。

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_机器学习_03

上面的这些功能,基本上通过支持向量机都可以完成。

  • 线性分类:Linear SVC
  • 线性拟合:  Linear SVR
  • 非线性分类: SVC
  • 非线性拟合: SVR
  • 其他: SVM.......

1.4 支持向量机性能的强大

SVM不仅仅功能强大,性能还很优越。

在相同的数据集上,支持向量机RBF SVM的性能在各种功能上,性能都超过决策树、随机深林、AdaBoorst和朴素贝叶斯。

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_机器学习_04

1.5 支持向量机应用广泛

从实际应用来看,SVM在各种实际问题中都表现非常优秀。

它在手写识别数字和人脸识别中应用广泛,在文本和超文本的分类中举足轻重,因为SVM可以大量减少标准归纳(standard inductive)和转换设置(transductivesettings)中对标记训练实例的需求。

同时,SVM也被用来执行图像的分类,并用于图像分割系统。实验结果表明,在仅仅三到四轮相关反馈之后,SVM就能实现比传统的查询细化方案(query refinement schemes)高出一大截的搜索精度。

除此之外,生物学和许多其他科学都是SVM的青睐者,SVM现在已经广泛被用于蛋白质分类,现在化合物分类的业界平均水平可以达到90%以上的准确率。在生物科学的尖端研究中,人们还使用支持向量机来识别用于模型预测的各种特征,以找出各种基因表现结果的影响因素。 

1.6 SVM是最接近深度学习的机器学习算法。

(1)相似点(网络结构相似)

线性SVM可以看成是神经网络的单个神经元

非线性的SVM则与两层的神经网络相当,非线性的SVM中如果添加多个核函数,则可以模仿多层的神经网络。

而从数学的角度来看,SVM的数学原理是公认的对初学者来说难于上青天的水平,对于没有数学基础和数学逻辑熏陶的人来说,探究SVM的数学原理本身宛如在知识的荒原上跋涉。

(2)不同点(网络的使用不同)

  • 损失函数不同
  • 网络的输出含义不同

第2章 支持向量机的基本思想(以平面二分类为例)

2.1 分类目标与基本思想

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_算法_05

数据符合上述分布,如何进行分类了?很多方法可以实现上述目标的分类: 决策树、随机森林,贝叶斯分类,它们通过一个决策边界把两个的数据分开。

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_scikit-learn_06

2.2 不适宜问题

 通过直线边界进行分类问题:在现有样本一定的情况下,中间可分的直线很多种,虽然这些直线在测试样本上,都可以保证测试数据分布在直线的两端,但如何确保决策边界的泛化能力比较好呢?

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_scikit-learn_07

 对边界线的不同的界定方案或方法,即不同的不适应问题的解决办法,就衍生出不同的算法。

(1)普通的逻辑回归与神经网络的基本思想

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_支持向量机_08

逻辑回归数据分为0和1,并通过sigmod函数(这是核心)把样本点到直线的距离转换成【0,1】之间的数值。

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_算法_09

转换后的效果:

  • 直线下方离直线的的距离越远,经过sigmod转换后的Ypred数值越接近于0,越接近该类样本的标签值0.
  • 直线上方离直线的的距离越远,经过sigmod转换后的Ypred数值越接近于1,越接近该类样本的标签值1.
  • 越靠近直线,经过simod转换后,数值越模糊,接近于0.5.
  • 下方数据的标签定义为0, 上方数据标签定义为1.

Loss函数与最优化

  • 每个样本点到拟合函数的距离Ypred 与标签Yi的差,即是样本的loss = |Ypred - Yi| 或 (Ypred - Yi)^2.
  • Loss函数:目标就是所有样本的loss之和最小,
  • 最优化:找到合适的直线,使得上述的loss最小,loss最优化问题,找到合适的a,b。使得尽可能多的点离直线的距离远,即 |Ypred - Yi|尽可能接近0.

(2)支持向量机

支持向量机,并没有经过sigmod函数转换,它采用了根据直观的、更加直接、更加简单的方法来分离标签数据。

2.3 支持向量机的基本思想

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_支持向量机_10

支持向量机并没有采用什么sigmod函数,对样本点到直线的距离进行映射,而直接采用了原始的距离,在上图中,支持向量机定义了新的名称:

(1)定义了3条直线

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_SVM_11

 0号直线:

它能够将样本数据完全分开,这个直线称为决策边界线(隔离线),用 y = wx + b表示,也可以用 wx - y + b = 0表示。

1号直线:

红色样本点中,存在这样的样本点,它离直线的距离最近,这样的点称为支持向量点。

1号直线就会穿过支持向量点,且1号直线平行于决策边界线,距离为d。

-1号直线:

蓝色样本点中,存在这样的样本点,它离直线的距离最近,这样的点称为支持向量点。

-1号直线就会穿过支持向量点,且-1号直线也平行于决策边界线,距离为d。

平行:三条直线平行,构成隔离带

(2)定义支撑向量/支持向量点到直线的距离d

(3)margin:样本点之间的矩形(线性)隔离带

  • margin = 2*d
  • 支持向量机的目标:就是找到一个直线,使得margin尽可能的大。

上述就是支持向量机的基本思想,

margin越大,样本点之间的矩形(线性)隔离带空间越多,决策边界的隔离效果越好。

当满足上述条件的margin最大时的决策线wx - y + b = 0,就是要找的直线,对应的w,b的参数就是根据模型训练的参数。

提示:

我们可以发现,参数w、b的参数值,与总的样本点数量无关,只与靠近直线最近的样本点相关!!!

支持向量机,只需要少量的典型的样本点,就可以进行学习。

2.4 支持向量机基于思想的进一步说明

(1)隔离带Margin不仅仅要考虑了现在(训练集),还考虑了未来(测试集)

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_scikit-learn_12

隔离带Margin边界越近,越容易混淆,类别越模糊,越容易出错。

隔离带Margin边界越远,类别越明确,确定性越好。

隔离带Margin的所围成的面积越大越好(而不是越小越好)

在上述的探讨中个,隔离带Margin中间是没有样本数据点的,所有的样本数据分布隔离带的两边,这样的隔离带称为:Hard Margin SVM.

第3章隔离带Hard Margin的数学表达式与最优化

3.1 Hard margin的几何图形

(1)Hard margin的几何图形

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_算法_13

(2)点到直线的距离公式

点到直线的距离,即过这一点做目标直线的垂线,由这一点至垂足的距离。

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_scikit-learn_14

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_机器学习_15

3.2 Hard margin的数学表达式=》把现实问题转换最优化问题

(1)决策边界线的数学表达式

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_算法_16

消去常数分母得到:

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_SVM_17

 [机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_支持向量机_18

 [机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_SVM_19

 [机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_支持向量机_20

 (2)定义最小化目标

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_SVM_21

由于margin的上下边界线会穿过支撑向量,因此|WX+B|的值=1.

因此,我们的直线的参数满足如下条件:

   对于支撑向量点:

   直线|WX+B| = 1 

 [机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_机器学习_22

3.3 Hard margin的参数求解:最优化求解过程

这是有有条件下的最优化数值求解,即有条件下求loss函数最小化问题,需要用到拉普拉斯变换。

本文不做进一步的探讨。

一定能够找到这样的一个W权重向量,使得WX+B =0构建的margin最大,且要确保所有的样本点都落在margin外部(这个限制条件非常重要,这是SVC的重点与难点,也是SVC相对于梯度下降法最重的特点)

第4章 Softmargin SVC的基本原理

4.1 Hard margin面临的困难与soft margin的几何图形

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_scikit-learn_23

如果按照Hard margin的判断规则,找到一个中间严格不包含任何任何数据点的隔离带的话,会导致两类数据之间边界处的误差较大的点,对最终的结果产生较大的影响。

Hard margin算法求W,B参数时,最主要的依赖是离决策边界最近的点,其中最重要的就是支持向量点,而不是所有的样本的点,通过W,B参数的调整,找到一个直线,使得支持向量点到决策边界线的距离最短。

这种算法效率高,但缺点和尴尬也是很明显的:

越是中间的点,出错的可能性就越大,越是中间的点,误差的可能性就越大,我们完全依赖个别的误差较大的点或甚至可能以及出错的样本的点,而计算出来的决策边界线和隔离带,那准确吗?万一其中的最近的样本点的标签出错了怎么办?这就会导致计算出来的决策边界线和隔离带是基于错误信息得到的,那决策边界和隔离带难准确吗?很显然,答案是否定的。

Hard margin算法最大的优点是依赖少量的样本点,效率高,当样本点非常精确,且边界处没有误差时,这种算法的优势就非常明显。

然后,当边界处的样本点误差较大,甚至有错误时,优点也就变成了缺点,依据局部错误的信息,而不是依据全局的宏观信息得到的决策边界的准确性就大打折扣了。

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_机器学习_24

一句话,Hard margin容错的能力太小了,soft margin就是在Hard margin算法的基础之上,为之增加容错能力进一步的优化算法,而不是完全推翻Hard margin的算法。

4.2Soft margin的解决之道

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_scikit-learn_25

(1)依然保留原先的隔离区

(2)在决策边界和隔离区边界中间增加一个缓冲地带,通过虚线表示,这里称为缓冲线,在缓冲区,允许出现部分的样本的点。

(3)在非缓冲地带隔离区,亦然不允许出现任何样本点。 

(4)当缓冲线越接近边界线的时候,容错能力越强,但决策边界需要的信息越多。

如何用数学表达上述的缓冲线呢?

4.3 Soft margin的数学表达式=》把现实问题转换最优化问题

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_scikit-learn_26

4.4 soft margin的参数求解:最优化求解过程=》梯度下降。

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_机器学习_27

 [机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_机器学习_28

通过上述方法计算得到的W, B参数,具备了一定的容错能力。

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_机器学习_29

 可以通过超参数C来控制缓冲带的权重和影响能力。

C越小,缓冲区越小

C越大,缓冲区越大。 

[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类_机器学习_30

上图允许隔离带中包含一定的样本。 

第5章 数据的正则化/规范化

5.1 为什么要正则化Normalization

在机器学习不同,不同维度的特征值,其量纲是不同的,导致不同维度的特征值,其数值范围相差非常大,有些数值空间在【0,1】之间,有些维度的数值范围在几万,甚至几十万之间。

这些不同量纲不同数值范围的数据放到一起Y=F(X1,X2,X3...), 导致大范围的数据,很容易把小数值数据吞并掉,这种吞并是负面的,因为他们的量纲不同,大数值不代表真的影响大。

如1公里与100毫米,并不能说明100毫米,就比1公里大。

不同量纲的不同数值范围,还带来一个严重的问题,就是大数值的一个微小的误差,都会导致小数值数据失效。

这就是大数字吃掉小数字问题。

为了解决上述问题,需要把不同维度的特征数据,全部正则化到【0,1】区间。

Normalization虽然解决了自身的输入数据不同维度的规范化,但他没有解决如何规范的问题。

5.2 什么是正则化Normalization

Normalization的中文翻译一般叫做“规范化”,是一种对数值的特殊函数变换方法,也就是说假设原始的某个数值是x,套上一个起到规范化作用的函数,对规范化之前的数值x进行转换,形成一个规范化后的数值。

规范化,完成了不同维度数据的规范和统一,但并没有对如何规范作出规定。就拿考试来讲,是规范到100制度,还是规范到150制上,并不要求,只要所有的输入都规范到相同的空间就行了。

5.3 如何正则化Normalization

[人工智能-深度学习-43]:输入预处理 - 规范化Normalization、标准化Standardization、正态分布、算术平均、方差_文火冰糖的硅基工坊的博客


后记:

上述的探讨的是线性可分的数据集,对于线性不可分的数据集,SVM是如何处理的呢?

升维,转换成高纬度的线性可分,还是有其他方法?

参考:

​独家首播!Python机器学习+算法+人工智能+项目实战【建议收藏】_哔哩哔哩_bilibili​