支持向量机
文章目录
支持向量机(Support Vecor Machine,以下简称SVM)诞生于上个世纪90年代,由于它良好的分类性能,在分类领域称霸多年,在深度时代之前是分类算法中当之无愧的王者。
SVM是一个二分类算法,支持线性分类和非线性分类。经过改进,支持多元分类。经过扩展,也能应用于回归问题。
线性SVM
线性SVM分类算法针对的是线性可分数据集。
线性可分数据集:可以被线性超平面完全正确分类的数据集。
线性不可分数据集:不可以被线性超平面完全正确分类的数据集。
问题1:二分类线性可分的训练数据集如何分类?
回答:寻找一个线性分离超平面将样本点分开。
问题2:当训练数据集线性可分时,有无穷个分离超平面可将两类样本正确分开,应该以什么原则确定最 优超平面呢?
回答:希望分离超平面离两类样本尽可能远,等价于离两类的最近点尽可能远,这称为最大间隔(margin)原则。
问题3:为什么要离两个类的最近点尽量远?
回答:对未知新样本的分类预测有很好的泛化能力。
以上的文字表述过于笼统,下面用数学来严谨表达。
线性SVM的优化问题
数据集
假定训练数据集为
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } T=\{(\mathbf{x}_1,y_1), (\mathbf{x}_2,y_2), \cdots, (\mathbf{x}_N,y_N)\} T={
(x1,y1),(x2,y2),⋯,(xN,yN)}
其中, x i = [ x i 0 , x i 1 , ⋯ , x i m ] T , i = 1 , 2 , ⋯ , N \mathbf{x}_i=[x_{i0},x_{i1},\cdots,x_{im}]^T, \quad i=1,2,\cdots,N xi=[xi0,xi1,⋯,xim]T,i=1,2,⋯,N,是m维特征向量; y i ∈ { 1 , − 1 } , i = 1 , 2 , ⋯ , N y_i \in \{1,-1\}, \quad i=1,2,\cdots,N yi∈{
1,−1},i=1,2,⋯,N,是对应特征向量的标签, y i = 1 y_i=1 yi=1时 x i \mathbf{x}_i xi为正例, y i = − 1 y_i=-1 yi=−1时 x i \mathbf{x}_i xi为负例。
线性超平面
线性超平面的数学表达式为
w T x + b = 0 \mathbf{w}^T \mathbf{x}+b=0 wTx+b=0
其中, w = [ w 1 , w 2 , ⋯ , w m ] T \mathbf{w}=[w_1,w_2,\cdots,w_m]^T w=[w1,w2,⋯,wm]T是超参数, x \mathbf{x} x是样本特征向量, b b b为截距。
分类决策函数
令 F ( x ) = w T x + b F(\mathbf{x})=\mathbf{w}^T \mathbf{x}+b F(x)=wTx+b, F ( x ) F(\mathbf{x}) F(x)可以作为二分类的判别器。
假定落入 F ( x ) > 0 F(\mathbf{x}) \gt 0 F(x)>0区域为正例,落入 F ( x ) < 0 F(\mathbf{x}) \lt 0 F(x)<0区域为负例,可以通过 F ( x ) F(\mathbf{x}) F(x)的符号来分类。
上面的想法表示为一个分类决策函数
f ( x ) = sgn ( F ( x ) ) = sgn ( w T x + b ) f(\mathbf{x})=\text{sgn}(F(\mathbf{x}))=\text{sgn}(\mathbf{w}^T \mathbf{x}+b) f(x)=sgn(F(x))=sgn(wTx+b)
间隔
x − x_- x−是 w T x + b = − 1 \mathbf{w}^T \mathbf{x} + b = -1 wTx+b=−1上的一个样本点, w T x + b = − 1 \mathbf{w}^T \mathbf{x} + b = -1 wTx+b=−1以点 x − x_- x−为垂足作一条垂直线,与 w T x + b = 1 \mathbf{w}^T \mathbf{x} + b = 1 wTx+b=1相交于 x + x_+ x+,设定 x + x_+ x+与 x − x_- x−之间的距离为 λ \lambda λ, x + x_+ x+与 x − x_- x−的关系可以表示为
x + = x − + λ w ∣ ∣ w ∣ ∣ 2 x_+=x_-+\lambda \frac{\mathbf{w}}{||\mathbf{w}||_2} x+=x−+λ∣∣w∣∣2w
其中, ∣ ∣ w ∣ ∣ 2 = w 0 2 + w 1 2 + ⋯ + w n 2 ||\mathbf{w}||_2=\sqrt{w_0^2+w_1^2+\cdots+w_n^2} ∣∣w∣∣2=w02+w12+⋯+wn2,为 w \mathbf{w} w的L2范数。
λ \lambda λ就是要求的间隔,具体的求解方式如下:
{ w T x + + b = 1 w T x − + b = − 1 ⇒ w T ( x + − x − ) = 2 ⇒ w T λ w ∣ ∣ w ∣ ∣ 2 = 2 ⇒ λ = 2 ∣ ∣ w ∣ ∣ 2 \begin{aligned} &\left\{ \begin{aligned} \mathbf{w}^T \mathbf{x}_+ + b & = 1 \\ \mathbf{w}^T \mathbf{x}_- + b & = -1 \end{aligned} \right. \\ \Rightarrow& \mathbf{w}^T (\mathbf{x}_+ - \mathbf{x}_-)=2 \\ \Rightarrow& \frac{\mathbf{w}^T \lambda \mathbf{w}}{||\mathbf{w}||_2} = 2 \\ \Rightarrow& \lambda = \frac{2}{||\mathbf{w}||_2} \end{aligned} ⇒⇒⇒{ wTx++bwTx−+b=1=−1wT(x+−x−)=2∣∣w∣∣2wTλw=2λ=∣∣w∣∣22
这里 w T x + + b = 1 \mathbf{w}^T \mathbf{x}_+ + b = 1 wTx++b=1和 w T x − + b = − 1 \mathbf{w}^T \mathbf{x}_- + b = -1 wTx−+b=