支持向量机(SVM)原理与公式推导

一. SVM简介

支持向量机一般用于解决二分类问题,即给定数据集T={(x1x_1,y1y_1),(x2x_2,y2y_2),(x3x_3,y3y_3)…},找到一个可以分开数据集的超平面:wx+b=0( 1.1)w^* \cdot x+b^*=0\qquad (式 \ 1.1)此最优超平面应当使支持向量到超平面上的几何间隔d最大。
支持向量机(SVM)原理与公式推导
如上图所示,在向量空间中构造三个相互平行的超平面F,Fa,Fb。一般将离超平面F最近的一些样本点称之为支持向量(Support Vector),由支持向量约束构成的超平面Fa,Fb称为支持超平面。由于在超平面F与样本集均确定的条件下,所有支持向量也是确定的,在训练过程中需要计算所有支持向量到超平面F的几何间隔d。

二. 将几何间隔最大值问题转化为最小值问题

几何间隔dd与间隔uu可以用以下公式计算,其中(x,y)(x,y)为样本点:d=y(wx+b)1w( 2.1)d=y\cdot (w^* \cdot x+b^*)\cdot \frac{1}{||w||}\qquad (式 \ 2.1)u=y(wx+b)( 2.2)u=y\cdot (w^* \cdot x+b^*)\qquad (式 \ 2.2)yy表示数据标签,在二分类问题中一般为1/-1,这样定义后,不论样本点在超平面的哪一侧,都能保证uu总为正数。在实际使用中,为了方便计算,通常固定间隔u=1u=1,这样,求dd的最大值问题变为求w||w||的最小值问题,于是可以转化为求解如下的二次规划问题:minw,b12w2( 2.3)\min_{w,b}\frac{1}{2}||w||^2\qquad (式 \ 2.3)yi(wxi+b)10i=1,2,...,N条件:y_i\cdot (w\cdot x_i+b)-1\geq0,i=1,2,...,N
对于线性可分数据集,这是一个凸二次规划问题,必有解。

三. 将二次规划问题转化为对偶优化问题

定义拉格朗日函数:L(w,b,λ)=12w2i=1Nλiyi(wxi+b)+i=1Nλi( 3.1)L(w,b,\lambda)=\frac{1}{2}||w||^2-\sum_{i=1}^N\lambda_iy_i(w\cdot x_i+b)+\sum_{i=1}^N\lambda_i\qquad (式 \ 3.1)
根据拉格朗日对偶性,(式 2.3)的对偶问题是以下极大极小值问题:maxλminw,bL(w,b,λ)( 3.2)\max_\lambda\min_{w,b}L(w,b,\lambda)\qquad (式 \ 3.2)
可以分两步解决:

  1. minw,bL(w,b,λ)\min_{w,b}L(w,b,\lambda)
    拉格朗日函数L(w,b,λ)L(w,b,\lambda)分别对w,bw,b求偏导,并令其等于0,整理后可得到:w=i=1Nλiyixi( 3.3)w=\sum_{i=1}^N\lambda_iy_ix_i\qquad (式 \ 3.3)i=1Nλiyi=0( 3.4)\sum_{i=1}^N\lambda_iy_i=0\qquad (式 \ 3.4)将(式 3.3)与(式 3.4)带入(式 3.1)中,即可得到:minw,bL(w,b,λ)=12i=1Nj=1Nλiλjyiyj(xixj)+i=1Nλi( 3.5)\min_{w,b}L(w,b,\lambda)=-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_j(x_i\cdot x_j)+\sum_{i=1}^N\lambda_i\qquad (式 \ 3.5)
  2. minw,bL(w,b,λ)\min_{w,b}L(w,b,\lambda)λ\lambda的极大值
    在(式 3.5)前加负号将极大值问题转化为极小值问题:minλ12i=1Nj=1Nλiλjyiyj(xixj)=i=1Nλi( 3.6)\min_\lambda\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_j(x_i\cdot x_j)=\sum_{i=1}^N\lambda_i\qquad (式 \ 3.6)i=1Nλiyi=0λi0,i=1,2,...,N条件:\sum_{i=1}^N\lambda_iy_i=0\quad \lambda_i\geq0,i=1,2,...,N
    由(式 3.6)可以求得拉格朗日乘子λ\lambda,依据λ\lambda带入(式 3.3)与(式 3.1)中可以求得w,bw,b,最终带入(式 1.1)即可得到最终超平面方程为:i=1Nλiyi(xix)+yii=1Nλiyi(xixj)=0( 3.7)\sum_{i=1}^N\lambda_iy_i(x_i\cdot x)+y_i-\sum_{i=1}^N\lambda_iy_i(x_i\cdot x_j)=0\qquad (式 \ 3.7)

四. 核函数

核函数的标准定义:
XX为输入空间,而HH为特征空间,设存在一个从XXHH的映射ϕ(x):XH\phi(x):X\rightarrow H,使得对所有的x,zXx,z\in X,函数K(x,z)K(x,z)满足条件:K(x,z)=ϕ(x)ϕ(z)K(x,z)=\phi(x)\cdot \phi(z),则称K(x,z)K(x,z)为核函数,ϕ(x)\phi(x)为映射函数。式中ϕ(x)ϕ(z)\phi(x)\cdot \phi(z)ϕ(x)\phi(x)ϕ(z)\phi(z)的内积。

在上文的(式3.6)与(式3.7)中,可以注意到样本的输入x总是成对乘积的形式,在此可以将两个输入的欧式乘积定义为核函数K(xi,xj)K(x_i,x_j),利用此核函数就可求得最终解。
核函数可以将输入空间通过映射函数映射到特征空间中,一般来说从低维映射到高维。在低维空间中的线性不可分问题转化至高维空间中可能为线性可分问题,即在高维空间中使用ϕ(x)ϕ(z)\phi(x)\cdot \phi(z)求解优化问题。利用核函数不需要显性地给定映射,而只需定义一个低维空间中的运算使其值等于在高维空间中的乘积运算。
常用的核函数有以下几种:

  • 线性核:K(x1,x2)=x1Tx2+cK(x_1,x_2)=x_1^Tx_2+c
  • 多项式核:K(x1,x2)=(ax1Tx2+c)dK(x_1,x_2)=(ax_1^Tx_2+c)^d
  • 径向基核函数:K(x1,x2)=exp(γx1x22)K(x_1,x_2)=\exp(-\gamma||x_1-x_2||^2)
  • Sigmoid核函数:K(x1,x2)=tanh(a(x1Tx2)+c)K(x_1,x_2)=\tanh(a(x_1^Tx_2)+c)