第一部分中,我们了解了SVM的目标。其目标是找到使余量最大化的超平面。
但是,我们如何计算该间隔呢?

SVM=Support Vector Machine

在支持向量机中,有单词向量。这意味着重要的是要很好地理解向量以及如何使用它们。
这里是我们今天所见的简短总结:

  • 什么是向量?
    • 它的范数
    • 它的方向
  • 如何增加和减少向量?
  • 点积是什么?
  • 如何将向量投影到另一个向量上?

在工具箱中拥有所有这些工具后,我们将看到:

  • 超平面的方程是什么?
  • 如何计算间隔?

    什么是向量

    如果我们定义一个点 A(3 ,4 ),在 R 我们可以这样绘制它。
    SVM教程 - 图3
    定义:任何一点SVM教程 - 图4即从原点开始并以x结束的矢量。
    此定义意味着在原点和A之间存在一个向量。
    SVM教程 - 图5
    1.向量的长度:
    向量长度的形式为||x||,称为范数。对于向量SVM教程 - 图6,SVM教程 - 图7就是它的长度

SVM教程 - 图8
从图中,我们可以使用毕达哥拉斯定理轻松计算距离OA :
SVM教程 - 图9
2.向量的方向:
方向是向量的第二个组成部分
定义:向量SVM教程 - 图10的方向为SVM教程 - 图11
w的坐标从哪得到?

了解定义

为了找到向量的方向,我们需要使用其角度。

SVM教程 - 图12
图中我们显示了一个向量SVM教程 - 图13,其中SVM教程 - 图14

定义一

向量u的方向可以从x轴的SVM教程 - 图15或者y轴的SVM教程 - 图16来定义。
这很乏味。取而代之的是,我们将使用角度的余弦。
角度SVM教程 - 图17的余弦定义为:SVM教程 - 图18
在图4中,我们可以看到我们可以形成两个直角三角形,并且在两种情况下,相邻的边都将在一个轴上。这意味着余弦的定义隐含了与角度有关的轴。我们可以将定义改写为:

定义二

向量SVM教程 - 图19由被给定的SVM教程 - 图20的余弦值和SVM教程 - 图21的余弦值定义。现在我们看一下他们的定义:
SVM教程 - 图22
这就是向量SVM教程 - 图23的原始定义。这就是为什么它的坐标也叫做方向余弦。

计算向量方向

从上图中计算SVM教程 - 图24的方向:
SVM教程 - 图25
所以我们会说SVM教程 - 图26的方向为向量SVM教程 - 图27,在下图中画出这个向量。

SVM教程 - 图28
我们可以看到 SVM教程 - 图29 确实和 SVM教程 - 图30除了较小。关于方向向量的一些有趣的东西 ww是它们的范数等于1。这就是为什么我们经常称它们为单位向量

两个向量的和

SVM教程 - 图31
给定两个向量SVM教程 - 图32,他们两个的和为SVM教程 - 图33,这就证明了对应坐标的和就是向量相加的结果。

SVM教程 - 图34

两个向量之差

类比于两个向量之和,两个向量之差为:
SVM教程 - 图35

点积

代数形式的推导(SVM教程 - 图36)

SVM教程 - 图37
SVM教程 - 图38
我们将X和y单独拿出来观察其结果:
SVM教程 - 图39SVM教程 - 图40
现在我们观察一下原始的结果:
SVM教程 - 图41
我们观察到SVM教程 - 图42,所以可以计算SVM教程 - 图43,并且通过长度计算余弦值
SVM教程 - 图44
注意:上面定义中SVM教程 - 图45分别指的是SVM教程 - 图46在第一维(行)上的分量和SVM教程 - 图47在第二维(列)上的分量。
将余弦值带入其中替换:
SVM教程 - 图48
两边都乘以||x||||y||就得到了SVM教程 - 图49
所以我们得到了点积的结果SVM教程 - 图50
往高维情况下类推得到点积结果形式为:SVM教程 - 图51

点积的总结

  • 是一个内积
  • 结算结果形式是一个标量

    几何形式推导(证明SVM教程 - 图52表明是x在y或者y在x上的投影)

    SVM教程 - 图53
    给定了一个向量x和一个向量y,我们现在来看x投射在y上的长度
    SVM教程 - 图54
    投影完成以后得到向量z,由上面的定义得到:SVM教程 - 图55,由上述的点积结果我们知道了SVM教程 - 图56,将SVM教程 - 图57代替,得到SVM教程 - 图58,如果我们用SVM教程 - 图59代表SVM教程 - 图60的方向上的单位向量,即SVM教程 - 图61,所以我们可以看到,SVM教程 - 图62(因为我们最后要得到的是数值,所以需要转置相乘).
    其中的u是向量y的单位向量,所以也是z的单位向量,SVM教程 - 图63,可以得到SVM教程 - 图64,这个就是x投影在y上的z的长度大小。

SVM教程 - 图65
从上图中,可以看到另一个长度SVM教程 - 图66

SVM超平面

我们在两个变量的情况下,一条直线是这样定义的:SVM教程 - 图67,但是我们平常看到的超平面的定义形式为:SVM教程 - 图68。第一种形式可以视为超平面的特殊形式,即SVM教程 - 图69 计算点积结果:SVM教程 - 图70,这两个结果是一样的,我们为什么要用SVM教程 - 图71
有两个原因:

  • 使用这样一个定义我们能很简单地计算二维以上的数据
  • 向量 W 将始终与超平面垂直(注意:关于最后一句话,我收到了很多疑问。 W总是正常的,因为我们使用此向量定义超平面,因此根据定义,它将是正常的。正如你可以看到 这个页面,当我们定义一个超平面,我们假定我们有一个向量垂直于超平面)

最后一个属性将很方便地计算从点到超平面的距离。

计算点到超平面的距离

image.png
为了简化此实例,我们令SVM教程 - 图73=0,上述这个式子为SVM教程 - 图74,即SVM教程 - 图75
我们注意到向量w已经在图中表示了出来,如果我们想要知道点A(3,4)到达超平面的距离,这个便是A投射到超平面时的距离。
我们可以把A作为从原点到达A点的一个向量,我们将他映射到向量w上。
image.png
这个时候我们令A点投射到w上的点为P点,那么P点的长度SVM教程 - 图77就是A到超平面的距离。如下图所示
image.png
接下来就要求出p的长度,由上面我们的推导可知SVM教程 - 图79,其中up方向上的单位向量。SVM教程 - 图80
以上题目为例,可以得知SVM教程 - 图81代入其中解得
SVM教程 - 图82

计算超平面的间隔

现在我们知道了A和超平面的距离为SVM教程 - 图83,间隔(margin)定义为:SVM教程 - 图84.至此,我们就计算出了超平面的间距