SVN需要补充的向量知识
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN需要补充的向量知识相关的知识,希望对你有一定的参考价值。
这篇转过来的博文,将SVN需要补充的数学基础知识娓娓道来,浅显易懂,强烈推荐!
2.从向量到距离计算
SVM = Support Vector Machine
,我们在Support Vector Machine中, 看到这个单词-vector(向量)。是的,SVM中的大量计算都是建立在向量基础上的,所以这篇做一个简短的知识回顾,会涉及到的内容包括:
- 向量是什么
- 它的模长
- 它的方向
- 如何加减向量
- 什么是点积
- 如何将一个向量映射到另一个向量上
- 超平面的方程是什么
- 如何计算间隔
2.1 什么是向量
如果我们在二维空间上定义一个点A (3,4),我们可以这样绘制它
定义:任意点x=(x1,x2),x≠0指定了平面上的一个向量,即从原点的开始到x点结束的向量。
下图是一个原点与A之间的向量。
这个点的起始位置是原点O(0,0),图中的这个向量是向量OA→。我们也可以找一个其他的字母标记来标识它,例如u。
注:你会发现我们写向量时,在向量上方有一个箭头,或者是将向量加粗。在这篇文章的剩余部分中,如果像OA→这样由两个字母可以表示的,那么我将使用箭头来表示向量,否则的话将使用加粗字体的变量来表示向量。
现在我们知道有一个向量,但我们仍然不知道什么是一个向量。
定义:向量是一个既有大小又有方向的对象。
OK,所以这里涉及到两个概念:大小 和 方向。
1) 向量大小
一个向量x的大小写作∥x∥,称作向量的模。对我们的OA→来说,∥OA∥是线段OA的长度。
从图中我们可以很容易地使用勾股定理计算出距离OA:
2) 向量的方向
方向是向量的第二个组成部分。
定义:向量u(u1,u2)的方向是向量w(u1∥u∥,u2∥u∥)
那向量w的坐标怎么得到的?
要得到一个向量的方向,我们需要借助它的夹角。
上图展示了向量u(u1,u2),其中u1=3,u2=4。
简单的理解 : 向量u的方向是由夹角θ和夹角α的余弦值决定的。
现在我们来观察一下角度的余弦值:
因此,这就是向量w最初的定义,也就是为什么他的坐标被称作方向余弦。
计算方向向量
我们现在要计算上图向量u的方向。
向量u(3,4)的方向是向量w(0.6,0.8)。
下图是这个方向向量的一个示例:
我们可以看出w和u看起来一样,只是w的值小一点。并且w的模长为1,我们也把它称之为单位向量。
两个向量的和
有两个向量u(u1,u2)和v(v1,v2),那么:
这意味着两个向量相加形成了第三个向量,第三个向量的坐标是初始两个向量坐标的加和。下面是一个简单的图解:
两个向量的差
类似的,对于减法我们有:
由于减法是不可交换的,我们也应该考虑另一种情况:
向量内积
关于理解SVM的一个非常重要的概念就是内积(点积)。
定义:从几何学来说,它是两个向量的模长以及它们之间的夹角余弦值的乘积。
也就是意味着,如果我们有两个向量x和y,他们间的夹角为θ,他们的内积是:
为什么内积这么算
为了便于理解,我们看一下这个问题的几何图形
在定义中我们写cos(θ),让我们看一下他到底是什么。
初中数学知识告诉我们,在一个直角三角形中:
OK,一个稍微复杂一点的图形,里面有两个向量,如下:
和
合在一起可以得到如下的几何图像:
可以看出:
所以计算cos(θ)就是在计算cos(β?α),根据两角差的余弦公式为:
(忘记这部分高中数学知识的同学请点击公式推导)
直角三角形中三角函数的定义 =_=|
三角公式替换后有:
将∥x∥∥y∥左移有:
也就是说:
就这样推导了一遍向量内积的几何定义…
多说一句,当我们在谈论x?y的点积是我们在谈论的是:
- 向量X,Y的内积(线性代数)
- 标量积,因为我们做两个向量的乘积,它返回一个标量(一个实数)。
向量的正交投影
有两个向量x与y,怎么求x在y上的正交投影?,如下图所示,将x投射到y上,得到向量z
通过定义:
我们从内积的部分有:
在方程中替换cos(θ)有:
如果我们定义了u作为y的方向那么:
并且
现在我们可以用一种简单的方式定义z的模:
z与y有相同的方向向量u
所以我们说:
向量z=(u?x)u 是向量x在y上的正交投影。
为什么要费尽心思去讲正交投影?因为它能帮助我们计算一个距离∥x?z∥。
3. SVM的超平面
我们都知道一条直线的数学方程是:y=ax+b,而超平面会被定义成类似的形式:
这两种形式是如何联系的?在超平面的方程可以看出,变量的名称是粗体的。是的,所以它们不是标量,是向量了。此外wTx是两个向量的内积。
还有一点大家注意一下,有时候我们会做一些形式变换,比如y=ax+b和y?ax?b=0其实是等价的。
两个向量w????b?a1???与x???1xy???,我们有
注意到w0是?b,这个值确定了与纵轴的交点。为什么我们用wTx这个方程式代表超平面而非y=ax+b呢?因为
- 在多于二维的空间里,这个方程式更适用
- 向量w垂直于超平面
计算一个点到超平面的距离第二个原因将派上用场。
3.1 计算点到超平面距离
下图中我们有一个超平面,他将两组数据划分开。
为了简化这个例子,我们干脆将w0设为0。
图中的超平面方程为:x2=?2x1相当于:
其中w(21),x(x1x2)。请注意w是一个向量而非数据点。
我们来计算一下点A(3,4)到超平面的距离,下图是A投影到超平面的距离。
我们把点A视作一个从原点指向A的向量。再将A向量投影到向量w上
得到向量p
我们的目标是找到点A(3,4)和超平面之间的距离。从上图中可以很清楚看到这个距离就是∥p∥。让我们一起计算一下它的值:
向量w=(2,1)垂直于超平面,向量a=(3,4)
设向量u为w的方向向量
p是a在w上的投影,所以:
3.2 计算超平面的间隔
我们得出了A与超平面的距离∥p∥,根据间隔公式有:
是的,就这样算出了超平面的间隔!
4.总结
OK,到目前为止,其实就是简单回顾了一下向量中的一些概念,依旧用向量的知识,怎么帮助我们去计算超平面间隔。
以上是关于SVN需要补充的向量知识的主要内容,如果未能解决你的问题,请参考以下文章
有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]