文章目录
线性SVM分类器的工作原理
线性支持向量机的分类方法,是在这组分布中找出一个超平面作为决策边界,使得模型在数据上的分类误差尽量接近于小,尤其是在未知数据集上的分类误差(泛化误差)尽量小。
超平面 |
---|
在几何中,超平面是一个空间的子空间,它是维度比所在空间小一维的空间,如果数据空间本身是三维的,则其超平面是二维平面,而如果数据空间本身是二维的,则其超平面是一维的直线。 在二分类问题中,如果一个超平面能够将数据划分为两个集合,其中每个集合中包含单独的一个类别,我们就说这个超平面是数据的“决策边界”。 |
在决策边界一侧的所有点属于一个类,而另一侧的所有点分类属于另一个类。如果把上图中的数据集作为训练集,只要直线的一边只有一种类型的数据,就没有分类错误,我们的训练误差就为0。但是,对于一个数据集来说,训练误差为0的决策边界可以由无数条。
但在此基础上,我们无法保证这条决策边界在未知数据集(测试集)上的表现也会优秀。对于现有的数据集来说,我们有B1和B2两条可能的决策边界。我们可以把决策边界B1向两边平移,直到碰到离这条决策边界最近的方块和圆圈后停下,形成两个新的超平面,分别是b11和b12,并且我们将原始的决策边界移动到b11和b12的中间,确保B1到b11和b12的距离相等。在b11和b12中间的距离,叫做B1这条决策边界的边际(margin),通常记作d。
为了简便,我们称b11和b12为“虚线超平面”。
对B2也执行同样的操作,然后我们对比两个决策边界,发现两个决策边界在训练集上的误差都为0。
现在我们引入和原本数据集相同分布的测试样本(红色),我们可以发现,对于B1而言,依然没有样本分类错误,B1这条决策边界上的泛化误差也是0。但是对于B2而言,有三个方块被误认为了是圆,这条决策边界上的误差就远大于B1。
从中可以看出,拥有更大边际的决策边界在分类中的泛化误差更小。如果边际很小,则任何轻微的扰动都会对决策边界产生很大的影响。边际很小的情况,是一种模型在训练集上表现很好,却在测试集上表现不佳的情况,即“过拟合”现象。所以在寻找决策边界的时候,我们希望边际越大越好。
支持向量机,就是通过找出边际最大的决策边界,对数据进行分类的分类器。
线性SVM损失函数的理解
间隔与支持向量
先来定义决策边界,假设给定的数据集有 N N N个样本,每个训练样本 i i i可以表示为 ( x i , y i ) (\boldsymbol {x_i},y_i) (xi,yi),其中 x i = ( x 1 i , x 2 i , . . . , x n i ) T \boldsymbol {x_i} = (x_{1i},x_{2i},...,x_{ni})^T xi=(x1i,x2i,...,xni)T,每个样本含有 n n n个特征。二分类标签 y i ∈ { − 1 , 1 } y_i\in \{-1,1\} yi∈{ −1,1}。
如果 n n n等于2,则有 i = ( x 1 i , x 2 i , y i ) T i = (x_{1i},x_{2i},y_i)^T i=(x1i,x2i,yi)T,分别由特征向量和标签组成,此时在二维平面上,以 x 2 x_2 x2为横坐标, x 1 x_1 x1为纵坐标, y y y为颜色,可以可视化我们的 N N N个样本:
我们规定紫色点的标签为1,红色点的标签为-1。我们要在该数据集上寻找一个决策边界(二维平面上为一条直线)。
二维平面上的任意一条直线可以表示为:
x 1 = a x 2 + b x_1= ax_2+b x1=ax2+b
将上式进行等价变换:
0 = a x 2 − x 1 + b 0 = [ a , − 1 ] ∗ [ x 2 x 1 ] + b 0 = w T x + b \begin{aligned} &0=a x_{2}-x_{1}+b\\ &0=[a,-1] *\left[\begin{array}{l} x_{2} \\ x_{1} \end{array}\right]+b\\ &0=\boldsymbol{w}^{T} \boldsymbol{x}+b \end{aligned} 0=ax2−x1+b0=[a,−1]∗[x2x1]+b0=wTx+b
其中 [ a , − 1 ] [a,-1] [a,−1]就是参数向量 w \boldsymbol {w} w, x \boldsymbol {x} x就是特征向量,$ {b}$就是截距。
在一组数据下,给定固定的 w \boldsymbol {w} w和 b b b,这个式子就是一条固定的直线;当 w \boldsymbol {w} w和 b b b不确定的情况下,可表示平面上的任意直线;给定 w \boldsymbol {w} w、 b b b和 x x x,表达式可表示固定的点。在SVM中,就使用这个表达式来表示决策边界,我们的目标式求解边际最大化的决策边界,因此需要求解参数向量 w \boldsymbol {w} w 和 和 和 b b b。
参数向量 w \boldsymbol {w} w的方向
在决策边界上任取两点 x a x_a xa, x b x_b xb,带入决策边界的表达式:
0 = w T x a + b 0 = w T x b + b 0=\boldsymbol{w}^{T} \boldsymbol{x_a}+b\\ 0=\boldsymbol{w}^{T} \boldsymbol{x_b}+b 0=wTxa+b0=wTxb+b
将上面两式相减可得:
w T ∗ ( x b − x a ) = 0 \boldsymbol{w}^{T}* (\boldsymbol{x_b}-\boldsymbol{x_a})=0 wT∗(xb−xa)=0
一个列向量的转置乘以另一个列向量,可以得到两个向量的点积(dot product)。两个向量点积为0表示两个向量的方向式互相垂直的。 x a x_a xa, x b x_b xb是决策边界上的两点,相减后的向量方向由 x b x_b xb指向 x a x_a xa,并且平行于决策边界。因此,参数向量 w \boldsymbol w w的方向必然垂直于决策边界。
此时,有了决策边界。图中任意一个紫色点 x p x_p xp可以被表示为:
w T ⋅ x p + b = 1 \boldsymbol{w}^{T}·\boldsymbol x_p+b=1 wT⋅xp+b=1
任意一个红色点 x r x_r xr可以被表示为:
w T ⋅ x r + b = 1 \boldsymbol{w}^{T}·\boldsymbol x_r+b=1 wT⋅xr+b=1
此时,如果有新的测试数据 x t \boldsymbol x_t xt输入,则 x t \boldsymbol x_t xt的标签可以根据下式来判定:
y = { 1 , if w ⋅ x t + b > 0 − 1 , if w ⋅ x t + b < 0 y=\left\{\begin{aligned} 1, & \text { if } \boldsymbol{w} \cdot \boldsymbol{x}_{t}+b>0 \\ -1, & \text { if } \boldsymbol{w} \cdot \boldsymbol{x}_{t}+b<0 \end{aligned}\right. y={
1,−1, if w⋅xt+b>0 if w⋅xt+b<0
虚线超平面与支持向量
决策边界的两边要有两个超平面,这两个超平面在二维空间中就是两条平行线(就是我们的虚线超平面),而他们之间的距离就是我们的边际 d d d。而决策边界位于这两条线的中间,所以这两条平行线必然是对称的。我们令这两条平行线被表示为:
w ⋅ x + b = 1 w ⋅ x + b = − 1 \boldsymbol{w}·\boldsymbol x+b=1\\ \boldsymbol{w}·\boldsymbol x+b=-1 w⋅x+b=1w⋅x+b=−1
这就是我们平行于决策边界的两条线的表达式,表达式两边的1和-1分别表示了两条平行于决策边界的虚线到决策边界的相对距离。此时,我们可以让这两条线分别过两类数据中距离我们的决策边界最近的点,这些点就被称为“支持向量”,而决策边界永远在这两条线的中间,所以可以被调整。我们令紫色类的点为 x p x_p xp,红色类的点为 x r x_r xr,则我们可以得到:
w ⋅ x p + b = 1 w ⋅ x r + b = − 1 \boldsymbol{w}·\boldsymbol x_p+b=1\\ \boldsymbol{w}·\boldsymbol x_r+b=-1 w⋅xp+b=1w⋅xr+b=−1
两式相减,则有:
w ∗ ( x p − x r ) = 2 \boldsymbol{w}* (\boldsymbol{x_p}-\boldsymbol{x_r})=2 w∗(xp−xr)=2
如下图所示, ( x p − x r ) (\boldsymbol {x_p-x_r}) (xp−xr)可表示为两点之间的连线,而我们的实际边际 d d d是平行于 w \boldsymbol w w的,所以现在相当于是得到了三角形的斜边,并且知道一条直角边的方向。
线性代数中的模长 |
---|
向量 b \boldsymbol b b除以自身的模长可以得到 b b b方向上的单位向量。 向量 a \boldsymbol a a乘以向量 b \boldsymbol b b方向上的单位向量,可以得到向量 a \boldsymbol a a在向量 b \boldsymbol b b方向上的投影长度。 |
所以,将上述式子两边同除以 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣,可得:
w ⋅ ( x p − x r ) ∥ w ∥ = 2 ∥ w ∥ ∴ d = 2 ∥ w ∥ \begin{aligned} &\frac{\boldsymbol {w \cdot\left(x_{p}-x_{r}\right)}}{\|w\|}=\frac{2}{\|w\|}\\ &\therefore d=\frac{2}{\|w\|} \end{aligned} ∥w∥w⋅(xp−xr)=∥w∥2∴d=∥w∥2
我们的目的,是要最大化边际求决策边界,要最大化 d d d,则求解 w \boldsymbol w w的最小值。极值问题可以相互转化,我们可以把求解 w \boldsymbol w w的最小值转化为求解以下函数的最小值:
f ( w ) = ∥ w ∥ 2 2 f(w)=\frac{\|w\|^{2}}{2} f(w)=2∥w∥2
之所以要在模长上加上平方,是因为模长的本质是一个距离,是一个带根号的存在,取平方是为了消除根号。
我们的两条虚线表示的超平面,是数据边缘所在的点。所以对于任意样本,我们可以把决策函数写作:
w ⋅ x i + b ≥ 1 if