在介绍过贝叶斯之后,今天尝试着给大家介绍支持向量机SVM。

在机器学习中,SVM试图找到一个最佳的超平面,该平面可以最佳地分割来自不同类别的观察结果。一个在N-1维的超平面可以分割Ñ维的特征空间。例如,二维特征空间中的超平面是一条线,而三维特征空间中的超平面是一个面。最佳超平面即不同特征空间中离该超平面最近的点的距离最大,这些最近的点就是所谓的支持向量。如下图:一定理解:支持向量是离最佳超平面最近的点

深度学习的支持向量机:简单理解支持向量机SVM(1)

SVM的原理

根据前面提到的SVM定义,其实我们可以有无限多个可行的超平面。我们如何确定最佳选择?让我一步步来说明

首先,我们需要了解什么才是一个合格的超平面。在以下示例中,超平面C是唯一正确的,因为它成功地按其标记将观察结果分开,超平面AB却失败了。我们可以从数学上来看:

在二维空间中,一条线可以由一个斜率向量w(二维)和一个截距b来定义。类似地,在n维空间中,超平面可以由n维向量w和截距b定义。超平面上的任何数据点x都满足

深度学习的支持向量机:简单理解支持向量机SVM(2)

如果一个超平面满足以下2点,则为合格的超平面:

深度学习的支持向量机:简单理解支持向量机SVM(3)

深度学习的支持向量机:简单理解支持向量机SVM(4)

深度学习的支持向量机:简单理解支持向量机SVM(5)

只有C为合格的超平面

w和b可能有无数种可能。因此,接下来我们探讨如何在可能的超平面中确定最佳的超平面

在以下实例中,ABC都是合格的超平面,但C才是最佳超平面,为什么呢?因为C使正侧最近的数据点与其自身之间的距离与负侧最近的数据点与其自身之间的距离的和最大。此时正侧的最近点可以构成一个平行于决策超平面的超平面,我们称其为正超平面。另一方面,负侧的最近点构成负超平面。正负超平面之间的垂直距离称为余量,其值等于上述两个距离的总和。如果余量最大化,则决策超平面是最佳的。

深度学习的支持向量机:简单理解支持向量机SVM(6)

C才是最佳超平面

下面显示了使用两个类别的样本训练的SVM模型的最大余量(最佳)超平面和余量。边缘上的样本(一个类别中的两个黄星,另一类别中的一个蓝点,如下所示)就是所谓的支持向量。

深度学习的支持向量机:简单理解支持向量机SVM(7)

正负超平面与支持向量


运用SVM的机器学习要做的呢就是去找到这个最佳超平面,具体过程设计到好多数学知识,这儿不展开(1是因为头条写公式太垃圾,2是我也不会,哈哈哈)

其实了解这么多就差不多了,但是还有一种情况

深度学习的支持向量机:简单理解支持向量机SVM(8)

线性超平面不好分咋整?

想一想这个时候,如何处理如图这个情况

接下来继续

离群值的处理

对于含有离群值的数据这个时候其实是找不到最优超平面的,此时用SVM时我们允许分类错误,但是会尽量最小化引入的误差。对于一个样本X它的分类错误可以表示为:

深度学习的支持向量机:简单理解支持向量机SVM(9)

为了计算简便对于一组m个样本的训练集:

深度学习的支持向量机:简单理解支持向量机SVM(10)

分类错误可以表示为

深度学习的支持向量机:简单理解支持向量机SVM(11)

别问我为什么,我不知道

但要理解,其中参数C控制两个指标(模型方差与偏倚)之间的权衡

当选择大值的C时,错误分类的惩罚会变得相对较高,这使得数据分割变得更加严格(尽可能分成标准的2类),模型易于过拟合。具有大C的SVM模型具有较低的偏差,但可能会有较大的方差。

相反,当C的值足够小时,错误分类的影响变得相对较小,这允许更多错误分类的数据点,从而使得分割不太严格。C较小的SVM模型方差低,但可能会偏倚较大。

图示如下:

深度学习的支持向量机:简单理解支持向量机SVM(12)

大C与小C的区别

参数C可以通过交叉验证进行微调,之后讲。


感谢大家耐心看完,发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。内容我都会写的很细,一个目的就是零基础也能懂,因为自己就是什么基础没有从零学Python的。

,