SVM(支持向量机)最初是一种解决二分类的有监督学习算法,其目的在于:在给定两类样本的数据集的前提下,寻找一个将两类样本分隔开的超平面(separating hyperplane),并且使得两类样本之间的边界间隔(margin)最大化。最终得到的超平面被称为决策边界(decision boundary)。
本文主要内容分为以下几点:
- 介绍什么是超平面
- 分隔超平面的定义
- 最大间隔超平面的介绍
- 为什么最小函数间隔设置为1
1 分隔超平面
首先给定一个样本集 D ∈ R m × ( n + 1 ) D\in \R^{m\times (n+1)} D∈Rm×(n+1), D = { ( x i , y i ) ∣ i = 1 , 2 , . . . . , m } D=\{(\mathbf{x}^i,y^i)|i=1,2,....,m\} D={ (xi,yi)∣i=1,2,....,m},其中, x i ∈ R 1 × n , y i ∈ { − 1 , + 1 } \mathbf{x}^i\in \R^{1\times n},y^{i}\in\{-1, +1\} xi∈R1×n,yi∈{ −1,+1}。样本集 D D D由两类子样本集组成,我们可以将 D D D分为正负样本集 D + D_+ D+和 D − D_- D−,正负样本集中的样本分别用 x + \mathbf{x_+} x+和 x − \mathbf{x}_- x−来表示。本文开头说过,支持向量机是一种有监督学习算法,为了区分正负样本,我们会事先给样本进行数据标记,如用 y = { − 1 , 1 } y=\{-1,1\} y={ −1,1}进行标记,如对于正样本 x + \mathbf{x}_+ x+, y + = 1 y_+=1 y+=1,而负样本的标记 y − = − 1 y_-=-1 y−=−1,当然可以选用其余的标记,不过采用这种标记方法有利于计算。
假设正负样本线性可分,这意味着,可以找到一个超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0,使得正样本和负样本被其隔开。如下图所示:
能够将正负样本分隔开的超平面,我们可以称之为分隔超平面(Seperating Hyperplane),它需要满足一些条件,这个我们在下面的内容继续介绍。首先先了解一下什么是超平面。
1.1 超平面
在 n n n维空间中,超平面是一个 n − 1 n-1 n−1维的子空间,该子空间可将 n n n维空间分隔成为两部分。在二维和三维空间中超平面的几何表示比较直观,例如二维空间是一个面,那么其超平面就是一维的直线,而在三维立体空间中,超平面是将立体分隔成两部分的二维平面。
从数学表示的层面上来看,实数域 n n n维空间中的超平面定义如下:
w 1 x 1 + w 2 x 2 + . . . + w n x n + b = 0 (1) w_1 x_1 + w_2 x_2 +... + w_n x_n + b=0 \tag{1} w1x1+w2x2+...+wnxn+b=0(1)
可以用线性代数的知识将该表达式改写为向量内积的形式:
w T x + b = 0 (2) w^T\mathbf{x}+b=0 \tag{2} wTx+b=0(2)
或者
< w , x > + b = 0 (3) <w,\mathbf{x}>+b=0 \tag{3} <w,x>+b=0(3)
其中 w ∈ R 1 × n w\in \R^{1\times n} w∈R1×n为超平面的法向量, x ∈ R 1 × n \mathbf{x} \in \R ^{1\times n} x∈R1×n, b ∈ R b\in \R b∈R为偏置值(bias)。
超平面有以下几个性质:
性质1:法向量和偏置项以任意相同的倍数放缩,新表达式描述的仍然是原来的超平面。假设放缩比例为 λ \lambda λ,令 w = λ w , b = λ b w=\lambda w, b=\lambda b w=λw,b=λb后得到的超平面表达式为 λ ( w T x + b ) = 0 \lambda(w^T\mathbf{x}+b)=0 λ(wTx+b)=0,显然,这个表达式表示的仍然是原来的超平面。举个浅显的例子,直线 2 x 1 + 4 x 2 + 4 = 0 2x_1+4x_2+4=0 2x1+4x2+4=0与直线 x 1 + 2 x 2 + 2 = 0 x_1+2x_2+2=0 x1+2x2+2=0是同一条直线,虽然他们的系数之比为2。
性质2:点 x \mathbf{x} x到超平面的距离为
d = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ (4) d=\frac{|w^T\mathbf{x}+b|}{||w||} \tag{4} d=∣∣w∣∣∣wTx+b∣(4)
性质3:超平面将 n n n维空间划分为3部分,分为是:i)点 x \mathbf{x} x在超平面里 ⇔ w T x + b = 0 \Leftrightarrow w^T\mathbf{x}+b=0 ⇔wTx+b=0;ii)点 x \mathbf{x} x在超平面的“上方” ⇔ w T x + b > 0 \Leftrightarrow w^T\mathbf{x}+b>0 ⇔wTx+b>0;iii)点 x \mathbf{x} x在超平面的“下方” ⇔ w T x + b < 0 \Leftrightarrow w^T\mathbf{x}+b<0 ⇔wTx+b<0。可以通过图2加深理解。
需要注意的是,“上方”和“下方”并不是方位上的超平面上下方,而是以超平面的法向量 w w w的指向为准, w w w指向的方向称为“上方”,反之则为“下方”。
1.2 分隔超平面
SVM中,分隔超平面是一个能够将正负样本恰好隔开的超平面,并且使得正样本在分隔超平面“上方”,负样本在分隔超平面”下方“。这就意味着,分隔超平面 w T x + b = 0 w^T\mathbf{x}+b=0 wTx+b=0中的 w , b w,b w,