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

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

那么为什么叫超平面?明明就是一条直线。
这是因为这里的数据只有两维的,三维的时候是平面,更高维我们就称之为超平面,支持向量机能够处理任意数量的维度。
最优分离超平面
还是上面的例子,你可以找到分离超平面(如下图),但是它不一定是最优的。

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

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

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

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

怎么计算余量?
支持向量机,这里先拿出跟数学相关的两个字“向量”。
所以这里会介绍一些向量的东西并介绍怎么使用向量作为工具去计算余量。不是很理解的朋友建议回去翻翻高数或者看这里,不过都是基本的知识。
SVM 超平面
超平面方程
超平面方程的定义:
wTx w T x 计算两个向量的点积。
直线的方程
y=ax+b
y
=
a
x
+
b
的另外一个表达形式
−b−ax+y=0
−
b
−
a
x
+
y
=
0
。给两个向量
w⎛⎝⎜−b−a1⎞⎠⎟
w
(
−
b
−
a
1
)
,
x⎛⎝⎜1xy⎞⎠⎟
x
(
1
x
y
)
, 写上面超平面定义的形式:
既然两种表达式是一样的,那么为什么还要使用向量来定义超平面?
(1)对于高维的情况,向量的表示方式更好处理
(2)向量w对于超平面总是标准的(the vector w will always be normal to the hyperplane)。
计算点到超平面的距离
下图一个超平面把数据分成了两组。

超平面方程为 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到它在超平面投影的距离。

我们把向量 OA投影到向量 w方向上,得到向量 p,我们计算的距离是点A 到超平面的距离,但是从图中我们可以看到,向量 OA在向量 w方向上的投影就等于点A到超平面的距离,也就是向量 p的模 ∥p∥ ‖ p ‖ 。
可以求得向量 w的方向向量, p的方向与 w是一样,这个方向向量也是 p的方向向量:
向量 OA用 a表示,根据上面的公式,可得向量 p和它的模:
计算超平面的margin
余量定义为:
所以通过计算得到了超平面的余量。
接下来介绍如何选择最优超平面的推理。你会看到:
- 怎么寻找最优超平面?
- 怎么计算两个超平面的距离?
- 什么是超平面优化问题?
怎么寻找最优超平面?
通过上面的分析,我们已经能够计算超平面余量了。但是可惜的是她并不是最优的超平面。最优超平面是数据到超平面余量最大的那个。
如下图,两根蓝线的间距M1并不是最大的余量,最大的余量应该是M2.


那么我们怎么通过M1找到M2呢?这里我们也会发现寻找最大的余量跟寻找最优超平面是同一回事。
怎么寻找最大余量?
根据已有的数据,选择两个中间不包含任何数据的超平面,然后最大化他们的距离,那么超平面就能确定了。 这个说起来简单,求起来并不容易。
Step1:有数据集,并能将他们分类
数据集通常由n个向量
xi
x
i
组成,每一个
xi
x
i
对应一个
yi
y
i
,
yi
y
i
的取值只能是两种情况1或者-1。
xi
x
i
可能是p维的。
所以数据集有n对
(xi,yi)
(
x
i
,
y
i
)
元素组成,数学上用下面的公式表示:
Step2: 选择两个中间不包含任何数据的超平面
对于p维(p>2)的数据,找到两个这样的平面是困难的。即使是二维的,有时也根本无法找到,如下图。所以,只有在数据线性可分的情况下,这样的两个平面才能找到。

前面讲到超平面可以使用 wTx=0 w T x = 0 表示。下面看看三维跟二维的区别。
三维的时候 w(b,−a,1) w ( b , − a , 1 ) , x(1,x,y) x ( 1 , x , y ) ,
二维的时候 w′(−a,1) w ′ ( − a , 1 ) , x′(x,y) x ′ ( x , y ) ,
二维的超平面两面加b就得到了前面的通用表达式,
所以下面将使用二维的向量,给定一个超平面 H0 H 0 ,满足 w⋅x+b=δ w ⋅ x + b = δ
选择与 H0 H 0 等距的两个超平面 H1 H 1 , H2 H 2 ,
这里为了简化问题,变量
δ
δ
取1。那么两个超平面为:
我们选择满足下面约束条件的所有超平面,对于 xi x i :

根据图解释一下上面的约束条件,如果 xi x i =A,因为A在超平面上,所以 w⋅x+b=1 w ⋅ x + b = 1 ;同理对于点H,满足 w⋅x+b=−1 w ⋅ x + b = − 1 ;那么在超平面 w⋅x+b=1 w ⋅ x + b = 1 右上方的点C,D,E,F,G满足约束条件 w⋅x+b>1 w ⋅ x + b > 1 ;在超平面 w⋅x+b=−1 w ⋅ x + b = − 1 左下方的点I,J,K,L,M,N满足约束条件 w⋅x+b<−1 w ⋅ x + b < − 1
我们想把上面两个约束条件用一个表达式表示,对于 xi x i 对应取值 yi y i 为-1的情况, w⋅xi+b≤−1 w ⋅ x i + b ≤ − 1 , 两边同时乘以 yi y i ,
得到,
对于 xi x i 对应取值 yi y i 为1的情况,两边同时乘以 yi y i , 等式没有改变,所以可以用下面的统一表达式表示上面约束条件:
Step3最大化两个超平面的距离
a)寻找两个超平面的距离
现在我们有两个超平面
H0
H
0
和
H1
H
1
的方程以及
H0
H
0
上面的一个点
x0
x
0
, 我们如何求两个超平面的距离m。

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

求出 w的方向向量 u, u=w∥w∥ u = w ‖ w ‖

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

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

向量 z0 z 0 既是 x0 x 0 和 k k 相加的结果,也是超平面上的一个点,所以用 x0+k x 0 + k 代替 z0 z 0
x0
x
0
在超平面
H0
H
0
上面,满足
w⋅x0+b=−1
w
⋅
x
0
+
b
=
−
1
,所以
通过上式,我们就能够计算m。
b)最大化超平面的距离
由上面的推导得到余量的计算公式:
通过上面的式子,可以得出,w 的模越大,余量越小。
我们发现,最大化余量也就是最小化w的模。
这就变成了一个优化问题,在 yi(w⋅xi+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/