支持向量机 数学推导 Part1

支持向量机的目的是什么?

支持向量机的目标是找到使训练数据的边缘最大化的最优分离超平面。
支持向量机需要训练数据,是一种监督学习算法。
支持向量机也是一种分类方法。
举个简单的例子:
我们根据身高和体重在图1中画出点,可以通过这些点区分男女。给出一个点,能不能判断男女。
比如size=180,weight = 75,那么这个点代表的人是男还是女?


fig1

什么是分离超平面?

回答上面的问题,我们可通过划一条线分开代表男的点和代表女的点,如下图


fig2

那么为什么叫超平面?明明就是一条直线。
这是因为这里的数据只有两维的,三维的时候是平面,更高维我们就称之为超平面,支持向量机能够处理任意数量的维度。

最优分离超平面

还是上面的例子,你可以找到分离超平面(如下图),但是它不一定是最优的。


fig3

假如我们选择绿线作为分离超平面,这是会出现错误。有三个女性被归类为男性。

fig4

如果我们选择黑线,结果会更好。这就就我们为什么要找最优的分离超平面。

fig5

什么是余量和如何使用余量找到最优分离超平面?


fig6

如上图,当给定一个超平面,数据点到平面的距离就能够求得。超平面到距离最近的数据点的距离就是余量。
余量是无人区,在余量里面不包含任何的数据点。如图margin A. 那么下图的margin B不也可以吗?可以是可以的,但是你会发现它余量小。 超平面到数据点的距离也大,余量越大。因此,我们找的最优分离超平面就是一个距离数据点余量最大的那个。

fig7

怎么计算余量?

支持向量机,这里先拿出跟数学相关的两个字“向量”。
所以这里会介绍一些向量的东西并介绍怎么使用向量作为工具去计算余量。不是很理解的朋友建议回去翻翻高数或者看这里,不过都是基本的知识。

SVM 超平面

超平面方程

超平面方程的定义:

wTx=0 w T x = 0

wTx w T x 计算两个向量的点积。

直线的方程 y=ax+b y = a x + b 的另外一个表达形式 bax+y=0 − b − a x + y = 0 。给两个向量 wba1 w ( − b − a 1 ) , x1xy x ( 1 x y ) , 写上面超平面定义的形式:

bax+y=wTx=b×(1)+(a)×x+1×y − b − a x + y = w T x = − b × ( 1 ) + ( − a ) × x + 1 × y

既然两种表达式是一样的,那么为什么还要使用向量来定义超平面?
(1)对于高维的情况,向量的表示方式更好处理
(2)向量w对于超平面总是标准的(the vector w will always be normal to the hyperplane)。

计算点到超平面的距离

下图一个超平面把数据分成了两组。


fig10

超平面方程为 x2=2x1 x 2 = − 2 x 1 ,使用向量形式 wTx=0 w T x = 0 表示, w(21) w ( 2 1 ) , x(x1x2) x ( x 1 x 2 )
向量 w如下图所示,计算点 A(3,4)到超平面的距离,也就是计算A到它在超平面投影的距离。

fig11

我们把向量 OA投影到向量 w方向上,得到向量 p,我们计算的距离是点A 到超平面的距离,但是从图中我们可以看到,向量 OA在向量 w方向上的投影就等于点A到超平面的距离,也就是向量 p的模 p ‖ p ‖
可以求得向量 w的方向向量, p的方向与 w是一样,这个方向向量也是 p的方向向量:
w=22+12=5 ‖ w ‖ = 2 2 + 1 2 = 5

u=(25,15) u = ( 2 5 , 1 5 )

向量 OAa表示,根据上面的公式,可得向量 p和它的模:
p=(ua)u p = ( u ⋅ a ) u

p=(205,105) p = ( 20 5 , 10 5 )

p=(4,2) p = ( 4 , 2 )

p=42+22=25 ‖ p ‖ = 4 2 + 2 2 = 2 5

计算超平面的margin

余量定义为:

margin=2p=45 m a r g i n = 2 ‖ p ‖ = 4 5

所以通过计算得到了超平面的余量。


接下来介绍如何选择最优超平面的推理。你会看到:

  • 怎么寻找最优超平面?
  • 怎么计算两个超平面的距离?
  • 什么是超平面优化问题?

怎么寻找最优超平面?

通过上面的分析,我们已经能够计算超平面余量了。但是可惜的是她并不是最优的超平面。最优超平面是数据到超平面余量最大的那个。
如下图,两根蓝线的间距M1并不是最大的余量,最大的余量应该是M2.


fig1
fig2

那么我们怎么通过M1找到M2呢?这里我们也会发现寻找最大的余量跟寻找最优超平面是同一回事。

怎么寻找最大余量?

根据已有的数据,选择两个中间不包含任何数据的超平面,然后最大化他们的距离,那么超平面就能确定了。 这个说起来简单,求起来并不容易。

Step1:有数据集,并能将他们分类

数据集通常由n个向量 xi x i 组成,每一个 xi x i 对应一个 yi y i , yi y i 的取值只能是两种情况1或者-1。
xi x i 可能是p维的。
所以数据集有n对 (xiyi) ( x i , y i ) 元素组成,数学上用下面的公式表示:

D={(xi,yi)xiRp,yi{1,1}}ni=1 D = { ( x i , y i ) ∣ x i ∈ R p , y i ∈ { − 1 , 1 } } i = 1 n

Step2: 选择两个中间不包含任何数据的超平面

对于p维(p>2)的数据,找到两个这样的平面是困难的。即使是二维的,有时也根本无法找到,如下图。所以,只有在数据线性可分的情况下,这样的两个平面才能找到。


fig3

前面讲到超平面可以使用 wTx=0 w T x = 0 表示。下面看看三维跟二维的区别。
三维的时候 w(b,a,1) w ( b , − a , 1 ) , x(1,x,y) x ( 1 , x , y ) ,
wx=yax+b w ⋅ x = y − a x + b

二维的时候 w(a,1) w ′ ( − a , 1 ) , x(x,y) x ′ ( x , y ) ,
wx=yax w ′ ⋅ x ′ = y − a x

二维的超平面两面加b就得到了前面的通用表达式,
wx+b=yax+b w ′ ⋅ x ′ + b = y − a x + b

wx+b=wx w ′ ⋅ x ′ + b = w ⋅ x

所以下面将使用二维的向量,给定一个超平面 H0 H 0 ,满足 wx+b=δ w ⋅ x + b = δ
选择与 H0 H 0 等距的两个超平面 H1 H 1 , H2 H 2 ,
wx+b=δ w ⋅ x + b = δ

wx+b=δ w ⋅ x + b = − δ

这里为了简化问题,变量 δ δ 取1。那么两个超平面为:

wx+b=1 w ⋅ x + b = 1

wx+b=1 w ⋅ x + b = − 1

我们选择满足下面约束条件的所有超平面,对于 xi x i
wxi+b1for xihaving the class1 w ⋅ x i + b ≥ 1 for  x i having the class 1

wxi+b1for xihaving the class1 w ⋅ x i + b ≤ − 1 for  x i having the class − 1


fig4

根据图解释一下上面的约束条件,如果 xi x i =A,因为A在超平面上,所以 wx+b=1 w ⋅ x + b = 1 ;同理对于点H,满足 wx+b=1 w ⋅ x + b = − 1 ;那么在超平面 wx+b=1 w ⋅ x + b = 1 右上方的点C,D,E,F,G满足约束条件 wx+b>1 w ⋅ x + b > 1 ;在超平面 wx+b=1 w ⋅ x + b = − 1 左下方的点I,J,K,L,M,N满足约束条件 wx+b<1 w ⋅ x + b < − 1
我们想把上面两个约束条件用一个表达式表示,对于 xi x i 对应取值 yi y i 为-1的情况, wxi+b1 w ⋅ x i + b ≤ − 1 , 两边同时乘以 yi y i ,
yi(wxi+b)yi(1) y i ( w ⋅ x i + b ) ≤ y i ( − 1 )

得到,
yi(wxi+b)1 y i ( w ⋅ x i + b ) ≥ 1

对于 xi x i 对应取值 yi y i 为1的情况,两边同时乘以 yi y i , 等式没有改变,所以可以用下面的统一表达式表示上面约束条件:
yi(wxi+b)1for all1in y i ( w ⋅ x i + b ) ≥ 1 for all 1 ≤ i ≤ n

Step3最大化两个超平面的距离
a)寻找两个超平面的距离

现在我们有两个超平面 H0 H 0 H1 H 1 的方程以及 H0 H 0 上面的一个点 x0 x 0 , 我们如何求两个超平面的距离m。


fig5

我们找到与 x0 x 0 距离m的一个集合,只要找到一个垂直于超平面 H1 H 1 ,长度为m的向量就可以。而垂直于超平面 H1 H 1 的向量就是 w

fig6

求出 w的方向向量 u u=ww u = w ‖ w ‖

fig7

m乘以 u,得到向量 kk就是我们想要找的向量,如下图

fig8

通过上面的推导,我们把线段m转变成一个向量 k,下面可以通过向量 x0 x 0 计算m。

fig9

向量 z0 z 0 既是 x0 x 0 k k 相加的结果,z0也是超平面上的一个点,所以用 x0+k x 0 + k 代替 z0 z 0
w(x0+k)+b=1 w ⋅ ( x 0 + k ) + b = 1

w(x0+mww)+b=1 w ⋅ ( x 0 + m w ‖ w ‖ ) + b = 1

wx0+mwww+b=1 w ⋅ x 0 + m w ⋅ w ‖ w ‖ + b = 1

wx0+mw2w+b=1 w ⋅ x 0 + m ‖ w ‖ 2 ‖ w ‖ + b = 1

wx0+b=1mw w ⋅ x 0 + b = 1 − m ‖ w ‖

x0 x 0 在超平面 H0 H 0 上面,满足 wx0+b=1 w ⋅ x 0 + b = − 1 ,所以

1=1mw − 1 = 1 − m ‖ w ‖

m=2w m = 2 ‖ w ‖

通过上式,我们就能够计算m。

b)最大化超平面的距离

由上面的推导得到余量的计算公式:

m=2w m = 2 ‖ w ‖

通过上面的式子,可以得出,w 的模越大,余量越小。
我们发现,最大化余量也就是最小化w的模
这就变成了一个优化问题,在 yi(wxi+b)1 y i ( w ⋅ x i + b ) ≥ 1 中最小化(w,b), w ‖ w ‖ .
解决这个优化问题,我们就能够得到最大的超平面余量。



才疏学浅,还未能创造知识,先做知识的搬运工!

详见原文地址:https://www.svm-tutorial.com/2014/11/svm-understanding-math-part-1/
详见原文地址:https://www.svm-tutorial.com/2014/11/svm-understanding-math-part-2/
详见原文地址:https://www.svm-tutorial.com/2015/06/svm-understanding-math-part-3/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值