SVM的几何研究

在本文中,我将重点介绍支持向量机或SVM。它是最受欢迎的机器学习算法之一,在近10年的时间里(90年代初至21世纪初),它一直享有“数一数二”的地位。
本文中讨论的主题是 -
- SVM简介
- 几何直觉
- 为什么我们使用+1和-1作为支持向量平面
- 损失函数
- 支持向量机的对偶形式
- 核及其类型
- NU-SVM
支持向量机
支持向量机(SVM)是一种有监督的机器学习算法,可以用于分类和回归的挑战。然而,它主要用于分类问题。在这个算法中,我们将每个数据项绘制为n维空间中的一个点(其中n是您拥有的特征数),每个特征的值是特定坐标的值。然后,我们通过找到区分这两个类的最佳超平面来进行分类。
几何直觉
SVM背后的主要思想是找到一个最佳分离正负点的平面,正平面和负平面之间的距离最大。

选择具有较大边距的决策边界背后的基本原理是它减少了泛化误差,而具有较小边距的决策边界通常会导致过度拟合。
另一件重要的事你们可能已经注意到从上面的图像中支持向量基本上是在正超平面和负超平面上的点
现在让我们仔细看看我们如何实际最大化边距。
让我们考虑以下方程式 -

这就是正超平面和负超平面的方程。我只在这个方程中加上了b也就是y轴截距。
在相减后,我们得到 -

我们可以通过向量w的长度对该等式进行归一化,其定义如下

所以我们的最终等式是

该等式的左侧基本上是正负超平面之间的距离,实际上是我们想要最大化的余量。
因此,在SVM的情况下,我们的优化函数是 -
易建联(W ^ T * 11 + b)> = 1意味着点是完全线性可分的。所以所有的正数都在平面的正方向上所有的负数都在负方向上。你可以观察到这样的东西

这种方法的问题在于,您几乎永远不会在现实生活中找到完全线性可分的数据集。我们遵循的上述方法称为Hard-Margin SVM,在现实生活中很少使用。因此,为了在现实世界的应用程序中使用SVM,我们对其进行了修改,并创建了一种称为Soft- Margin SVM的新型SVM。
Soft- Margin SVM
让我们首先看一下Soft- Margin SVM的等式

如果你无法理解这个等式,不要太担心它我将解释每一个术语。早些时候我们期待最大化2 / || W || ,但是现在是倒数,因此我们将argmax更改为argmin。
您可能已经猜到n表示数据点的数量。所以方程中新增的两项是-
C =这是一个超参数
ζ(Zeta)=表示分类错误点的距离
了解Zeta
为了更好地理解zeta这个词,我们来看下面的例子。

这里★代表正,⬤代表负
正如我在Hard-margin SVM的情况下所说的那样,我们很难找到一个完全线性可分的机器学习数据集,这里我们有一个点x1,它是一个正点,但它不在正平面上。
因此,在这种特定情况下,点x1和平面Π之间的距离是0.5。
For point x1 -
Y(W^T * X + b) = -0.5
由于类标签(Y)是+1并且朝向负平面的距离是0.5
我们可以重新编写上面的等式如下 -
Y(W^T * X + b) = 1 - 1.5
一般来说我们可以把它写成
Y(W^T * X + b) = 1 - ζ
ζ表示的是错误分类点与其实际平面的距离。您可以观察到x1与正平面Π+的距离为1.5,在这种情况下恰好是ζ的值。
了解C
正如我上面提到的,C是一个超参数,它可以有效地调整,以避免过度拟合和欠拟合。
随着C增加,模型过度拟合的趋势增加
随着C减少,模型的欠拟合趋势会增加
为什么我们使用+1和-1作为支持向量平面

我们没有必要总是选择+1和-1。让我们选择任意的k值。唯一的限制是它应该大于0。
我们不能为我们的平面选择不同的值,即我们不能取+ k1和-k2,因为我们希望我们的正负平面与我们的平面Π相等
现在我们更新的边距 -
2*k / ||W||for k = 5 we get10/||W||
所以现在我们将使用10 / || W || 而不是2 / || W || 这是唯一的区别,因为k是一个常数,因此我们选择的值并不重要,因为它不会影响我们的优化问题。
因此我们使用+1和-1来简化数学计算。
损失函数

Hinge Loss
SVM中使用的损失函数是Hinge 损失。简单来说,我们可以将Hinge 损失理解为一个函数,它的值在某一点之前都是不为零的,我们设是z点,在z点之后,它等于零。
我们研究下Soft-Margin SVM的等式。

这里包含ζ和C的第二项是损失项。现在我们来看看这一项是怎么推导出来的。
假设您有2个点x1和x2,其中x1为正,x2为负。现在对于位于负平面的点x2,(W ^ T * X + b)的值将为负,其Y值将为-1。
因此, Y*(W^T * X + b) = -1 * (-ve value) = +ve value
类似地,对于正点x1,(W ^ T * X + b)将是正的,并且其Y值也将是正的。因此, Y*(W^T * X + b) = +1 * (+ve value) = +ve value。
现在,如果你有另一个点x3,它是正的但位于负平面,则(W ^ T * X + b)将为负,但类标签Y仍为正。
因此,Y*(W^T * X + b) = +1 * (-ve value) = -ve value
因此,这里的关键是,如果该点被正确分类,Y *(W ^ T * X + b)将仅为正.
让我们来看看我们的损失函数。

所以我们的损失函数相当简单。
如前所述 -
If Z >= 1 这一点被正确分类If Z < 1 这一点被错误分类
所以我们在这里考虑2个案例。
案例1 - (Z≥1)
如果Z≥1则1-Z将小于0,因此Max(0,1-Z)= 0
直观地说,如果Z≥1则意味着我们已经正确地对该点进行了分类,因此我们的损失为0。
案例2 - (Z <1)
如果Z <1,则1-Z将大于0,因此Max(0,1-Z)= 1-Z
我们已经知道 -
Y(W ^ T * X + b)= 1 - ζ
所以我们可以把它重写为 -
1 - Y(W ^ T * X + b)=ζ 并且 Y(W ^ T * X + b)= Z
所以1-Z =ζ
从上述情况我们可以看出,我们想要最小化的项是1-Z。

公式1
这正是我们在这里写的。我们只用ζ代替1-Z
SVM的对偶形式
我们推导出的上述等式1是SVM的原始形式。然而,为了利用核的大功能,我们使用SVM的对偶形式。让我们看看SVM的对偶形式。

公式2
使用SVM的对偶形式的原因是它允许我们利用核的功能,这是SVM的一个关键特性。
在数学上证明了公式2等价于公式1。
我们可以按如下方式更新公式2 -

公式3
早些时候我们使用的是Xi ^ T. Xj即我们取Xi和Xj的点积,相当于余弦相似函数。所以我们可以用Xi和Xj的任何其他函数替换这个余弦相似函数。这被称为核技巧。现在让我们了解核到底是什么。
核及其类型
在上面的公式3中,我们可以用任何核函数替换K。 现在你一定想知道这是怎么改变的。
假设您有一个不可线性分离的机器学习数据集。

非线性可分的数据
现在,您将如何使用SVM分离此数据。我们没有办法可以拟合一个可以分离这两类的平面。
核函数的主要用途是它允许我们将数据集投影到更高的维度,我们可以在这个维度上拟合平面以分离我们的数据集。
因此,我们可以将上面的数据集投影到更高的维度,然后我们可以找到一个可以分离2个类的平面。这正是为什么SVM在90年代早期非常受欢迎的原因。
核类型
2种最流行的核类型是 -
- 多项式核
- 径向基函数(RBF)核
多项式核 -

所以对于二次核,我们会有这样的东西 -

RBF核 -

这里d是x1和x2之间的距离,即d = || x1-x2 || ,σ是一个超参数。
nu-SVM
nu是一个超参数,我们可以用它来定义可接受的错误百分比。
因此,在nu超参数的帮助下,我们可以做两件事 -
- 我们可以控制模型的误差百分比。
- 我们无法控制,但我们可以确定支持向量的数量。