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

Posted 文火冰糖的硅基工坊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类相关的知识,希望对你有一定的参考价值。

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/123778715


目录

第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中功能最全面的机器学习算法,没有之一。

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

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

1.2 为什么称为支持向量机

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

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

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

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

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

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

1.3 支持向量机功能的强大

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

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

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

1.4 支持向量机性能的强大

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

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

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 分类目标与基本思想

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

2.2 不适宜问题

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

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

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

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

转换后的效果:

  • 直线下方离直线的的距离越远,经过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 支持向量机的基本思想

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

(1)定义了3条直线

 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不仅仅要考虑了现在(训练集),还考虑了未来(测试集)

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

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

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

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

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

3.1 Hard margin的几何图形

(1)Hard margin的几何图形

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

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

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

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

消去常数分母得到:

 

 

 

 (2)定义最小化目标

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

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

   对于支撑向量点:

   直线|WX+B| = 1 

 

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

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

本文不做进一步的探讨。

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

第4章 Soft margin SVC的基本原理

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

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

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

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

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

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

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

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

4.2 Soft margin的解决之道

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

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

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

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

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

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

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

 

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

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

C越小,缓冲区越小

C越大,缓冲区越大。 

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

第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、正态分布、算术平均、方差_文火冰糖的硅基工坊的博客-CSDN博客


后记:

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

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

参考:

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

以上是关于[机器学习与scikit-learn-34]:算法-分类-支持向量机SVM的基本简介与基本原理-线性分类的主要内容,如果未能解决你的问题,请参考以下文章

机器学习资料《分布式机器学习算法理论与实践》+《白话机器学习算法》+《Python机器学习基础教程》

包邮送书啦|《机器学习与深度学习算法基础》

机器学习机器学习入门02 - 数据拆分与测试&算法评价与调整

Python3入门机器学习 经典算法与应用

《分布式机器学习:算法理论与实践》——RE

Python3入门机器学习--经典算法与应用|Python3机器学习