【机器学习基础】系列博客为参考周志华老师的《机器学习》一书,自己所做的读书笔记。

1.理解超平面

1.1.二维平面

超平面是支持向量机中非常重要的一个概念,再介绍超平面之前,我们来介绍下常见的二维平面的一些性质。

👉在三维x-y-z坐标系中,可以将平面定义为一个方程的集:

a x + b y + c z + d = 0 ax+by+cz+d=0 ax+by+cz+d=0

其中 a , b , c , d a,b,c,d a,b,c,d是实数,使得 a , b , c a,b,c a,b,c不全为0。平面的法向量为 ( a , b , c ) (a,b,c) (a,b,c)

👉由一点和一个法向量决定的平面:

对于一点 P 0 = ( x 0 , y 0 , z 0 ) P_0=(x_0,y_0,z_0) P0=(x0,y0,z0)和一个向量 n ⃗ = ( a , b , c ) \vec n=(a,b,c) n =(a,b,c),平面方程为:

a x + b y + c z = a x 0 + b y 0 + c z 0 ax+by+cz=ax_0+by_0+cz_0 ax+by+cz=ax0+by0+cz0

这是穿过点 P 0 P_0 P0并垂直于向量 n ⃗ \vec n n 的平面。

👉通过三点的平面:

穿过三点 P 1 = ( x 1 , y 1 , z 1 ) , P 2 = ( x 2 , y 2 , z 2 ) , P 3 = ( x 3 , y 3 , z 3 ) P_1=(x_1,y_1,z_1),P_2=(x_2,y_2,z_2),P_3=(x_3,y_3,z_3) P1=(x1,y1,z1),P2=(x2,y2,z2),P3=(x3,y3,z3)的平面的方程可以表述为如下行列式:

∣ x − x 1 y − y 1 z − z 1 x 2 − x 1 y 2 − y 1 z 2 − z 1 x 3 − x 1 y 3 − y 1 z 3 − z 1 ∣ = 0 \begin{vmatrix} x-x_1 & y-y_1 & z-z_1 \\ x_2-x_1 & y_2-y_1 & z_2-z_1 \\ x_3-x_1 & y_3-y_1 & z_3-z_1 \\ \end{vmatrix}=0 xx1x2x1x3x1yy1y2y1y3y1zz1z2z1z3z1 =0

👉一点到平面的距离:

对于一点 P 1 = ( x 1 , y 1 , z 1 ) P_1=(x_1,y_1,z_1) P1=(x1,y1,z1)和一个平面 a x + b y + c z + d = 0 ax+by+cz+d=0 ax+by+cz+d=0,从点 P 1 P_1 P1到平面的距离是:

D = ∣ a x 1 + b y 1 + c z 1 + d ∣ a 2 + b 2 + c 2 D=\frac{\mid ax_1+by_1+cz_1+d \mid}{\sqrt {a^2+b^2+c^2}} D=a2+b2+c2 ax1+by1+cz1+d

👉判定两个平面平行:

设两平面 α , β \alpha,\beta α,β的方程分别为:

α : A 1 x + B 1 y + C 1 z + D 1 = 0 \alpha:A_1 x+B_1y+C_1z+D_1=0 α:A1x+B1y+C1z+D1=0

β : A 2 x + B 2 y + C 2 z + D 2 = 0 \beta:A_2 x+B_2y+C_2z+D_2=0 β:A2x+B2y+C2z+D2=0

其法向量分别为 n 1 ⃗ = { A 1 , B 1 , C 1 } \vec {n_1}=\{ A_1,B_1,C_1 \} n1 ={A1,B1,C1} n 2 ⃗ = { A 2 , B 2 , C 2 } \vec {n_2}=\{ A_2,B_2,C_2 \} n2 ={A2,B2,C2}。两平面平行的充要条件:

n 1 ⃗ / / n 2 ⃗ \vec{n_1} // \vec{n_2} n1 //n2

即:

n 1 ⃗ = λ n 2 ⃗ \vec{n_1} = \lambda \vec{n_2} n1 =λn2

用分量来表示为:

A 1 = λ A 2 , B 1 = λ B 2 , C 1 = λ C 2 A_1=\lambda A_2,B_1=\lambda B_2,C_1=\lambda C_2 A1=λA2,B1=λB2,C1=λC2

亦即:

A 1 A 2 = B 1 B 2 = C 1 C 2 = λ \frac{A_1}{A_2}=\frac{B_1}{B_2}=\frac{C_1}{C_2}=\lambda A2A1=B2B1=C2C1=λ

👉两平行平面之间的距离:

假设两平行平面分别为(系数化为一样):

α : a x + b y + c z + d 1 = 0 \alpha : ax+by+cz+d_1=0 α:ax+by+cz+d1=0

β : a x + b y + c z + d 2 = 0 \beta : ax+by+cz+d_2=0 β:ax+by+cz+d2=0

则两平面之间的距离为:

∣ d 1 − d 2 ∣ a 2 + b 2 + c 2 \frac{\mid d_1 - d_2 \mid}{\sqrt{a^2+b^2+c^2}} a2+b2+c2 d1d2

1.2.超平面

在数学中,超平面(hyperplane)是n维欧氏空间中,余维度为1的子空间。即超平面是n维空间中的n-1维的子空间。它是平面中的直线、空间中的平面之推广。

设F为域(为初等起见,可考虑 F = R F=\mathbb R F=R)。n维空间 F n F^n Fn中的超平面是由方程:

a 1 x 1 + . . . . . . + a n x n = b a_1x_1 + ...... + a_n x_n=b a1x1+......+anxn=b

定义的子集,其中 a 1 , . . . , a n ∈ F a_1,...,a_n \in F a1,...,anF是不全为零的常数。

1.1部分中二维平面的性质也可推广到超平面。

2.间隔与支持向量

给定训练样本集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } , y i ∈ { − 1 , + 1 } D=\{ (\mathbf x_1,y_1),(\mathbf x_2,y_2),...,(\mathbf x_m,y_m) \},y_i \in \{ -1,+1 \} D={(x1,y1),(x2,y2),...,(xm,ym)},yi{1,+1},分类学习最基本的想法就是基于训练集 D D D在样本空间中找到一个划分超平面,将不同类别的样本分开。但能将训练样本分开的划分超平面可能有很多,如下图所示,我们应该努力去找到哪一个呢?

直观上看,应该去找位于两类训练样本“正中间”的划分超平面,即上图中加粗的那个,因为该划分超平面对训练样本局部扰动的“容忍”性最好。例如,由于训练集的局限性或噪声的因素,训练集外的样本可能比上图中的训练样本更接近两个类的分隔界,这将使许多划分超平面出现错误,而加粗的超平面受影响最小。换言之,这个划分超平面所产生的分类结果是最鲁棒的,对未见示例的泛化能力最强。

在样本空间中,划分超平面可通过如下线性方程来描述:

w T x + b = 0 \mathbf w^T \mathbf x +b = 0 wTx+b=0

其中 w = ( w 1 ; w 2 ; . . . ; w d ) \mathbf w=(w_1;w_2;...;w_d) w=(w1;w2;...;wd)为法向量,决定了超平面的方向;b为位移项,决定了超平面与原点之间的距离。显然,划分超平面可被法向量 w \mathbf w w和位移b确定,我们将其记为 ( w , b ) (\mathbf w,b) (w,b)。样本空间中任意点 x \mathbf x x到超平面 ( w , b ) (\mathbf w,b) (w,b)的距离可写为:

r = ∣ w T x + b ∣ ∥ w ∥ r=\frac{\mid \mathbf w^T \mathbf x +b \mid}{\lVert \mathbf w \rVert} r=wwTx+b

假设如下红色所示超平面 ( w , b ) (\mathbf w,b) (w,b)能将训练样本正确分类,即对于 ( x i , y i ) ∈ D (\mathbf x_i,y_i) \in D (xi,yi)D,若 y i = + 1 y_i=+1 yi=+1,则有 w T x i + b > 0 \mathbf w^T \mathbf x_i +b>0 wTxi+b>0;若 y i = − 1 y_i=-1 yi=1,则有 w T x i + b < 0 \mathbf w^T \mathbf x_i +b<0 wTxi+b<0

此外还有两个虚线所示的超平面与红色超平面平行,且可以做到刚好分类成功。因此分类器可以进一步描述为:

{ w T x i + b ⩾ + k , y i = + 1 w T x i + b ⩽ − k , y i = − 1 (1) \left\{ \begin{array}{c} \mathbf w^T \mathbf x_i +b \geqslant +k, y_i=+1 \\ \mathbf w^T \mathbf x_i +b \leqslant -k, y_i=-1 \\ \end{array} \right. \tag{1} {wTxi+b+k,yi=+1wTxi+bk,yi=1(1)

如上图所示,距离红色超平面最近的这几个训练样本点使式(1)的等号成立,它们被称为 “支持向量”(support vector)

之所以将样本称之为向量,是因为每个样本都对应一个特征向量。

两个异类支持向量到红色超平面的距离之和为(即两个虚线所示超平面之间的距离):

γ = 2 k ∥ w ∥ \gamma = \frac{2k}{\lVert \mathbf w \rVert} γ=w2k

它被称为 “间隔”(margin)

若超平面 ( w ′ , b ′ ) (\mathbf w',b') (w,b)能将训练样本正确分类,则总存在缩放变换 ξ w ↦ w ′ \xi \mathbf w \mapsto \mathbf w' ξww ξ b ↦ b ′ \xi b \mapsto b' ξbb使式(1)成立。因此,式(1)我们可以简化为:

{ w T x i + b ⩾ + 1 , y i = + 1 w T x i + b ⩽ − 1 , y i = − 1 (2) \left\{ \begin{array}{c} \mathbf w^T \mathbf x_i +b \geqslant +1, y_i=+1 \\ \mathbf w^T \mathbf x_i +b \leqslant -1, y_i=-1 \\ \end{array} \right. \tag{2} {wTxi+b+1,yi=+1wTxi+b1,yi=1(2)

对应的间隔为:

γ = 2 ∥ w ∥ \gamma = \frac{2}{\lVert \mathbf w \rVert} γ=w2

欲找到具有 “最大间隔”(maximum margin) 的划分超平面,也就是要找到能满足式(2)中约束的参数 w \mathbf w w b b b,使得 γ \gamma γ最大,即:

在这里插入图片描述

上式等价于:

在这里插入图片描述

这就是 支持向量机(Support Vector Machine,简称SVM) 的基本型。

间隔貌似仅与 w \mathbf w w有关,但事实上 b b b通过约束隐式地影响着 w \mathbf w w的取值,进而对间隔产生影响。

3.参考资料

  1. 平面 (数学)(维基百科)
  2. 超平面(维基百科)
  3. 两平面平行(百度百科)
  4. [機器學習首部曲] 支援向量機 SVM

想要获取最新文章推送或者私聊谈人生,请关注我的个人微信公众号:⬇️x-jeff的AI工坊⬇️

个人博客网站:https://shichaoxin.com

GitHub:https://github.com/x-jeff


Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐