@hanxiaoyang
2017-12-14T12:47:47.000000Z
字数 6492
阅读 4747
个人博客
这是我写的SVM之数学理解的第三部分。如果你没有读过之前的文章,在读这一篇之前建议您看一看前两篇。
这篇文章的主要目的是向你展示选择最优超平面的推理过程。
以下是一个简短的总结:
- 我们如何找到最优超平面
- 我们如何计算两超平面间的距离
- SVM的最优化问题是什么
在第二篇文章的结尾我们计算了点到超平面间的距离,然后计算间隔为。
然而,即使他不是最优超平面,他依然在数据分类这一方面有很好的效果。
最优超平面是一个与数据点有最大间隔的平面。在上图中我么可以看到间隔,在两条蓝线之间,它不是完美分类数据点的最大间隔。最大间隔为,如下图所示:
可以在上图中看到最优超平面,在我们找的最初的超平面的稍左位置。我是如何找到它的呢?
我简单地在M_2的中点处画了条垂线。
现在你应该感觉到超平面和间隔是密切相关的。你是对的!
如果我有一个超平面,我就能通过某一数据点计算其间隔。如果我有一间隔,就能通过他的中点找到超平面。
- 寻找最大间隔,就是寻找最优超平面
非常简单:
- 有一个数据集。
- 选择两个超平面,他们可以划分数据并且两平面之间没有数据点。
- 最大化间隔
选出的两平面之间的间隔就有可能是最大间隔。
如果它是如此的简单,为什么每个人在理解SVM时都有这么多的痛苦?这是因为它总是需要一些抽象和数学术语来理解它。
让我们一步一步的解决它:
大多数时候,你的数据将由n个向量组成。
每一个与一个值相关联,代表元素属于类(-1)或类(+1)。请注意,只能有两个可能的值 -1或1。
而且,大多数时候,比如当你做文本分类,向量有很多维度,我们可以说,X是一个p维向量(如果他有p维)。所以你的数据集是n对元素的集合。
在集合论中的初始数据集的更正式的定义是:
当你有笔和纸时,找到两个平面来划分数据很容易。但当数据为高维时,划分数据就变得困难,因为你没办法把它画出来。
此外,即使你的数据是二维的,也有可能找不到分离超平面!
只有在数据线性可分时,才能找到。
因此,假设我们的数据集是线性可分的。我们想要找到中间没有数据点的两个超平面,但是我们没有办法想象他们。
了解超平面可以帮助我们做什么呢?
再看看超平面方程:
我们在之前看到过超平面的方程可以写做
任何超平面都可以写成 满足的点 的集合
首先,我们知道了关于点积的另一种表示法,本文采用代替。
你可能想知道是怎么来的,是我们之前定义错了吗?
不完全,又一次是表示的问题。在我们的定义中,向量w与x有三个维度,但在维基百科中是二维的:
给出两个三维向量与
对于这篇文章的剩余部分,我们将使用二维向量(如方程(2))。
给出一个超平面划分数据集并且满足:
然而,这里的变量是没有必要的,所以我们让来简化问题。
因此,让我们看看下面的图,并考虑点,它是红的所以是类并且我们需要验证它不违反约束
当我们看到超平面上的点满足,同样的B点也是。
当我们看到超平面上的点满足,同样的D、E、F、G点也是。
类似的,对于类的点也满足约束。
在下图,我们看到一对超平面满足约束:
我们测试一下不符合约束的情况:
当不满足约束时,它意味着什么。这就意味着我们不能选择这两个超平面。因为此时超平面之间出现了数据点。
通过这些定义,我们找到了一种方法可以达到我们的初始目标--选择两个中间没有数据点的超平面。它不仅仅适用于这个例子,也适应更高维的例子。
结合两种约束
在数学中,人们喜欢简洁地表达事物。
方程和可以合并成一个单一的约束,我们从方程开始
这可能是最难的部分。但不要担心,我会慢慢的解释一切。
a)我们的两个超平面之间的距离是什么
在试图最大化两个超平面之间的距离之前,我们首先要问自己:我们如何计算呢?
让我们:
- 是满足约束的超平面
- 是满足约束的超平面
- 是 上的一点
我们称m为从到超平面的垂直距离。通过定义,m就是我们所说的间隔。
因为在超平面上,m是超平面与间的距离。
我们现在试着找出m的值。
你现在可能会想,如果我们在上加m,我们会得到另一点,这个点说不定就在另一个超平面上!
但这并不起作用,因为m是一个标量,是一个向量,在一个向量上加一个标量是不可能的。然而,我们知道,将两个向量相加是可能的,所以如果我们将m变换成一个向量,我们将能够做一个加法。
我们可以找到距离为m的所有的点,它可以表示成一个圆:
看着这张图,向量的必要性是清楚的。我们只有长度m而缺少一个关键的信息:方向。
我们不能将一个标量添加到一个向量上,但我们知道,如果我们用一个向量乘一个标量,我们将得到另一个向量。
我们想要一个向量:
- 长度为m
- 方向垂直于平面
幸运的是,我们已经知道一个垂直的向量,是(因为)
我们定义是的单位向量。因为他是一个单位向量,并且他和有相同的方向,所以它也是垂直于平面。
如果我们用乘以,得到向量,并且:
- 1.
- 2.垂直于,因为它与具有相同方向
从这些属性中,我们可以看到,是我们正在寻找的向量。
我们做到啦!我们将标量m转换成一个向量,并且我们可以将它与向量相加。
如果我们在向量上加,我们在超平面上得到向,如下图所示
在上意味着
我们可以用代替
因为在上,所以,带入:
b) 如何最大化两个超平面之间的距离
我们现在有一个公式来计算间隔:
我们很容易发现,的模越大,间隔越小。
最大化间隔也就是最小化的模。
我们的目标是最大化间隔。在所有满足约束条件超平面中,我们选择有最小的超平面,因为它同时有着最大间隔。
有了以下的优化问题:
解决这个问题就像求解方程。一旦解出来答案,我们会发现值对满足是最小的可能值,也满足约束条件。
这意味着我们找到了最优超平面的方程!
我们发现,为了找到最优超平面,我们需要解决一个优化问题。优化问题有点棘手,而且你需要更多的信息来解决他们。这就是为什么解决这个优化问题将在本教程系列的第4部分讲述!谢谢阅读。