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

作者:寒小阳
时间:2016年9月。
出处:http://blog.csdn.net/han_xiaoyang/article/details/52679559
声明:版权所有,转载请联系作者并注明出处

1.引言

第一篇博客part1的部分很短,就说了一个事情,SVM在试图找一个Max Margin(最大间隔)的分离超平面。OK,这个部分要补补基础,复习一下数学,为后面的学习做准备(墙裂建议数学基础好的同学略过此节基础内容…)。咱们来看看SVM涉及到的向量和空间距离。

2.从向量到距离计算

SVM = Support Vector Machine,我们在Support Vector Machine中, 看到这个单词-vector(向量)。是的,SVM中的大量计算都是建立在向量基础上的,所以这篇做一个简短的知识回顾,会涉及到的内容包括:

  • 向量是什么
    • 它的模长
    • 它的方向
  • 如何加减向量
  • 什么是点积
  • 如何将一个向量映射到另一个向量上
  • 超平面的方程是什么
  • 如何计算间隔

2.1 什么是向量

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


cmd-markdown-logo

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

下图是一个原点与A之间的向量。


cmd-markdown-logo

这个点的起始位置是原点 O(0,0) ,图中的这个向量是向量 OA 。我们也可以找一个其他的字母标记来标识它,例如 u

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

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

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

OK,所以这里涉及到两个概念:大小方向

1) 向量大小

一个向量x的大小写作 x ,称作向量的模。对我们的 OA 来说, OA 是线段 OA 的长度。


cmd-markdown-logo

从图中我们可以很容易地使用勾股定理计算出距离OA:

OA2=OB2+AB2OA2=32+42OA2=25OA=25OA=OA=5

2) 向量的方向

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

定义:向量 u(u1,u2) 方向是向量 w(u1u,u2u)

那向量 w 的坐标怎么得到的?

要得到一个向量的方向,我们需要借助它的夹角。


cmd-markdown-logo

上图展示了向量 u(u1,u2) ,其中 u1=3 u2=4

简单的理解 : 向量 u 的方向是由夹角 θ 和夹角 α 的余弦值决定的。
现在我们来观察一下角度的余弦值:

cos(θ)=u1ucos(α)=u2u

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

计算方向向量

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

cos(θ)=u1u=35=0.6cos(α)=u2u=45=0.8

向量 u(3,4) 的方向是向量 w(0.6,0.8)
下图是这个方向向量的一个示例:


cmd-markdown-logo

我们可以看出 w u 看起来一样,只是 w 的值小一点。并且 w 的模长为1,我们也把它称之为单位向量。

两个向量的和


cmd-markdown-logo

有两个向量 u(u1,u2) v(v1,v2) ,那么:

u+v=(u1+v1,u2+v2)

这意味着两个向量相加形成了第三个向量,第三个向量的坐标是初始两个向量坐标的加和。下面是一个简单的图解:


cmd-markdown-logo

两个向量的差

类似的,对于减法我们有:


uv=(u1v1,u2v2)

cmd-markdown-logo

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


vu=(v1u1,v2u2)

cmd-markdown-logo

向量内积

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

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

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

xy=xycos(θ)

为什么内积这么算

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


cmd-markdown-logo

在定义中我们写 cos(θ) ,让我们看一下他到底是什么。
初中数学知识告诉我们,在一个直角三角形中:

cos(β)=

OK,一个稍微复杂一点的图形,里面有两个向量,如下:


cmd-markdown-logo

cmd-markdown-logo

合在一起可以得到如下的几何图像:


cmd-markdown-logo

可以看出:

θ=βα

所以计算 cos(θ) 就是在计算 cos(βα) ,根据两角差的余弦公式为:

cos(βα)=cos(β)cos(α)+sin(β)sin(α)

(忘记这部分高中数学知识的同学请点击 公式推导)

直角三角形中三角函数的定义 =_=|

cos(β)==x1xsin(β)==x2xcos(α)==y1ysin(α)==y2y

三角公式替换后有:

cos(θ)=cos(βα)=cos(β)cos(α)+sin(β)sin(α)cos(θ)=x1xy1y+x2xy2ycos(θ)=x1y1+x2y2xy

xy 左移有:

xycos(θ)=x1y1+x2y2

也就是说:

xycos(θ)=xy

就这样推导了一遍向量内积的几何定义…

多说一句,当我们在谈论 xy 的点积是我们在谈论的是:

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

向量的正交投影

有两个向量 x y ,怎么求 x y 上的正交投影?,如下图所示,将 x 投射到 y 上,得到向量 z


cmd-markdown-logo

通过定义:

cos(θ)=zxz=xcos(θ)

我们从内积的部分有:

cos(θ)=xyxy

在方程中替换 cos(θ) 有:

z=xxyxyz=xyy

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

u=yy

并且

z=ux

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

u=zzz=zu

所以我们说:
向量 z=(ux)u 是向量 x y 上的正交投影。

为什么要费尽心思去讲正交投影?因为它能帮助我们计算一个距离 xz


cmd-markdown-logo

xz=(34)2+(51)2=17

3. SVM的超平面

我们都知道一条直线的数学方程是: y=ax+b ,而超平面会被定义成类似的形式:

wTx=0

这两种形式是如何联系的?在超平面的方程可以看出,变量的名称是粗体的。是的,所以它们不是标量,是向量了。此外 wTx 是两个向量的内积。
还有一点大家注意一下,有时候我们会做一些形式变换,比如 y=ax+b yaxb=0 其实是等价的。

两个向量 wba1 x1xy ,我们有

wTx=b×(1)+(a)×x+1×ywTx=yaxb

注意到 w0 b ,这个值确定了与纵轴的交点。为什么我们用 wTx 这个方程式代表超平面而非 y=ax+b 呢?因为

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

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

3.1 计算点到超平面距离

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


cmd-markdown-logo

为了简化这个例子,我们干脆将 w0 设为0。
图中的超平面方程为: x2=2x1 相当于:

wTx=0

其中 w(21) x(x1x2) 。请注意 w 是一个向量而非数据点。

我们来计算一下点 A(3,4) 到超平面的距离,下图是 A 投影到超平面的距离。


cmd-markdown-logo

我们把点A视作一个从原点指向 A 的向量。再将A向量投影到向量 w


cmd-markdown-logo

得到向量 p


cmd-markdown-logo

我们的目标是找到点 A(3,4) 和超平面之间的距离。从上图中可以很清楚看到这个距离就是 p 。让我们一起计算一下它的值:

向量 w=(2,1) 垂直于超平面,向量 a=(3,4)

w=22+12=5

设向量 u w 的方向向量
u=(25,15)

p a w 上的投影,所以:
p=(ua)up=(3×25+4×15)up=(65+45)up=105up=(105×25,105×15)p=(205,105)p=(4,2)p=42+22=25

3.2 计算超平面的间隔

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

margin=2p=45

是的,就这样算出了超平面的间隔!

4.总结

OK,到目前为止,其实就是简单回顾了一下向量中的一些概念,依旧用向量的知识,怎么帮助我们去计算超平面间隔,有兴趣的同学请接着看part3:如何找到最优分离超平面

参考资料
SVM - Understanding the math

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值