[关闭]
@hanxiaoyang 2017-12-14T12:46:19.000000Z 字数 5666 阅读 2528

机器学习系列(14)_SVM碎碎念part2:SVM中的向量与空间距离

个人博客


cmd-markdown-logo

在支持向量机之数学理解的第一部分,我们看到了支持向量机的目标是什么。它的目标是利用间隔最大化来寻找最优分离超平面。

但我们如何计算间隔呢

SVM = Support VECTOR Machine

在Support Vector Machine中, 有一个单词-vector(向量)。
这意味着重要的是好好理解向量以及知道如何使用它们。

这里有一个关于今天所学的简短的总结:

  • 向量是什么
    • 它的规范
    • 它的方向
  • 如何加减向量
  • 什么是点积
  • 如何将一个向量映射到另一个向量上

当我们掌握了以上这些,我们会理解:

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

什么是向量

如果我们在二维空间上定义一个点A (3,4),我们可以这样绘制它

cmd-markdown-logo

定义:任意点x=(x1,x2),x≠0指定了平面上的一个向量,即从原点的开始到x点结束的向量。

这个定义意味着,存在原点与A之间的向量。

cmd-markdown-logo

这个点的起始位置是原点,图中的这个向量是向量。我们也可以称之为其他名字例如

注:你会发现我们写向量时,在向量上方有一个箭头,或者是将向量加粗。在这篇文章的剩余部分中,如果像这样由两个字母可以表示的,那么我将使用箭头来表示向量,否则的话将使用加粗字体来表示向量。

现在我们知道有一个向量,但我们仍然不知道什么是一个向量。

定义:向量是一个既有大小又有方向的对象。

我们现在看看这两个概念。

1) 向量大小

一个向量x的大小写作,称作向量的模

对我们的来说,是线段的长度。
cmd-markdown-logo
从图中我们可以很容易地使用勾股定理计算出距离OA:





2) 向量的方向

方向是向量的第二个组成部分。
定义:向量方向是向量

向量的坐标怎么得到的?

定义理解

要得到一个向量的方向,我们需要借助它的夹角。
cmd-markdown-logo
上图展示了向量,其中

我们可以说:

Naive definition 1 : 向量的方向是由与水平线的夹角和垂直线的夹角的决定的。

这不是我们喜欢的,所以我们使用夹角的余弦值来替代。

直角三角形中,角的余弦的定义是

上图中向量与坐标轴形成了两个直角三角形,两个角的临边是两个坐标轴。这意味着,余弦的定义隐含包含与角相关的轴。我们可以改述我们的Naive definition如下:

Naive definition 2 : 向量的方向是由夹角和夹角的余弦值决定的。
现在我们来观察一下角度的余弦值:



因此,这就是向量最初的定义,也就是为什么他的坐标被称作方向余弦。

计算方向向量

我们现在要计算上图向量的方向。



向量的方向是向量
我们在下图中绘制了这个方向向量:
cmd-markdown-logo
我们可以看出看起来一样,只是的值小一点。并且有趣的是方向向量(例如)的模长为1。这也是为什么我们经常称之为单位向量。

两个向量的和

cmd-markdown-logo
有两个向量,那么:


这意味着两个向量相加形成了第三个向量,第三个向量的坐标是初始两个向量坐标的加和。
你可以通过下面的例子说服自己:

cmd-markdown-logo

两个向量的差

类似的:


cmd-markdown-logo

由于减法是不可交换的,我们也应该考虑另一种情况:


cmd-markdown-logo

因为一个向量有大小和方向,所以我们通常认为平行向量(有着相同大小和方向但是不同起点的向量)是相同的向量,只是他们在空间内的不同位置。

所以遇到下图的情况时不要吃惊:
cmd-markdown-logo

cmd-markdown-logo
如果从数学的角度来看,这么画该向量似乎是错的,因为向量-没在正确的点开始和结束。但它确实是思考向量的方便的思维方式。

点积

关于理解SVM的一个非常重要的概念就是点积。

定义:从几何学来说,它是两个向量的模长以及它们之间的夹角余弦值的乘积。

也就是意味着,如果我们有两个向量,他们间的夹角为,他们的点积是:

为什么

为了便于理解,我们看一下这个问题的几何图形

cmd-markdown-logo

在定义中我们写,让我们看一下他到底是什么。

通过定义我们知道在一个直角三角形中:


在我们的例子中,我们没有直角三角形。
然而我们换一种角度看,每一个向量可以和横纵坐标轴围成两个直角三角形:
cmd-markdown-logo

cmd-markdown-logo

所以现在我们可以这么来看初始的几何图像:

cmd-markdown-logo

可以看出:


所以计算就是在计算
两角差的余弦公式为:

(如果愿意的话请点击公式推导)

让我们开始用公式吧!





公式替换后有:

左移有:


就等同于:

我们发现了点积的几何定义!

关于定义的几句话

当我们在谈论的点积是我们在谈论的是:

  • 向量X,Y的内积(线性代数)
  • 标量积,因为我们做两个向量的乘积,它返回一个标量(一个实数)。

向量的正交投影

有两个向量,求出上的正交投影。
cmd-markdown-logo
投射到
cmd-markdown-logo
得到了向量
cmd-markdown-logo
通过定义:



我们从点积那节得到:

在方程中替换有:


如果我们定义了作为的方向那么:

并且

现在我们可以用一种简单的方式定义的模:
有相同的方向向量


所以我们说:
向量 是向量上的正交投影。

为什么我们对正交投影感兴趣?在我们的例子中,它使我们能够计算与贯穿之间的线的距离。
cmd-markdown-logo
我们可以看出距离就是

SVM的超平面

你可能知道一条线的方程是:。然而当读到有关超平面的知识时,你会经常看到超平面被这样定义:


这两种形式是如何联系的?
在超平面的方程可以看出,变量的名称是粗体的。这意味着它们是向量!此外是两个向量的内积,并且如果你还记得,内积其实就是点积。
请注意,

等同于

两个向量

这两个方程只是表达同一事物的不同方式。
有趣的是要注意,那就意味着这个值确定了与纵轴的交点。
为什么我们用这个方程式代表超平面而非呢?
有两个原因:

  • 在多于二维的空间里,这个方程式更适用
  • 向量w垂直于超平面

计算一个点到超平面的距离第二个原因将派上用场。

计算点到超平面距离

下图中我们有一个超平面,他将两组数据划分开。

cmd-markdown-logo

为了简化这个例子,我们将设为0。
图中的超平面方程为:


相当于:

其中。请注意是一个向量而非数据点。

我们要计算点和超平面之间的距离

这是投影到超平面的距离。
cmd-markdown-logo

我们可以将点看作是一个从原点指向的向量。
我们将向量投影到向量

cmd-markdown-logo

得到向量

cmd-markdown-logo

我们的目标是找到点和超平面之间的距离。
可以从上图中看到这个距离就是。让我们一起计算一下它的值:

向量垂直于超平面,向量


设向量的方向向量

上的投影,所以:






计算超平面的间隔

我们得出了与超平面的距离,根据间隔公式有:


我们做到啦!我们算出了超平面的间隔!

结论

SVM之数学理解的第二部分到这里就结束了。
虽然还有很多数学背景没有介绍,但我希望你们可以没有问题的理解这篇文章。

下一步是什么?

现在我们知道如何计算间隔,我们可能想知道如何选择最优分离超平面,这将在第三篇文章:如何找到最优分离超平面中介绍。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注