今天开始学习SVM
1.1 SVM的基本原理
SVM方法是从线性可分情况下的最优分类面(Optimal Hyperplane)提出的。考虑图1所示的二维两类线性可分情况,图中实心点和空心点分别表示两类的训练样本,H为把两类没有错误地分开的分类线,H1、H2分别为过各类样本中离分类线最近的点且平行于分类线的直线,H1和H2之间的距离叫做两类的分类空隙或分类间隔(margin)。所谓最优分类线就是要求分类线不但能将两类无错误地分开,而且要使两类的分类空隙最大。前者是保证经验风险最小(为0),而通过后面的讨论可以看到,使分类空隙最大实际上就是使推广性的界中的置信范围最小,从而使真实风险最小。推广到高维空间,最优分类线就成为最优分类面。
设线性可分样本集(xi,yi), i = 1, ......n, y belong{+1, -1} 是类别标号,d维空间中线性判别函数的一般形式为:
g(x) = w·x + b (1)
分类面方程为:
w·x + b = 0 (2)
我们将判别函数进行归一化,使俩类所有样本都满足|g(x)|≥ 1,即使离分类面最近的样本的|g(x)|≥ 1,这样分类间隔就等于2/||w||,因此,使间隔最大等价于使||w||(或||w||2)最小;而要求分类线对所在样本正确分类,就是要求它满足
yi[(w·xi) + b] - 1 ≥ 0, i = 1, 2,...,n. (3)
因此,满足上述条件且使||w||2最小的分类面就是最优分类面。过俩类样本中离分类面最近的点且平等于最优分类面的超平面H1,H2上的训练集就是使(3)式中使等号成立的那些样本,它们叫做支持向量(Support Vectors)。因为它们支持了最优分类面,如图1中用圆圈标出的点所示。
下面我们看如何求最优分类面,根据上面的讨论就是使:
Φ(w) = 1/2||w||2 = 1/2(w·w) (4)
的值最小。为此,可以定义如下的Lagrange函数:
L(w,b,a) = 1/2(w·w) - ∑ai{yi[w·xi) + b] - 1} i = 1,...,n (5)
其中,ai > 0为Lagrange系数, 我们的问题是对w和b求Lagrange函数的极小值。
把式(5)分别对w和b求偏微分,并令它们等于0, 就可以把原问题转化为如下这种较简单的对偶问题:在约束条件
∑yi·ai = 0 i = 1,...,n (6a)
ai ≥ 0 i = 1,...,n (6b)
之下对ai求解下列函数的最大值:
Q(a) = ∑ai - 1/2∑ai·aj·yi·yj·(xi·xj) i = 1,...,n; j = 1,...,n (7)
若ai* 为最优解,则:
w* = ∑ai*·yi·xi i = 1,...,n (8)
即最优分类面的权系数向量是训练样本向量的线性组合。
这是一个不等式约束下的二次函数极值问题,存在唯一解,且根据Kü hn-Tucker条件,这个优化问题的解须满足
ai·(yi·(w·xi + b) - 1) = 0 i = 1,...,n
因此,对多数样本ai*将为零,取值不为零的ai*对应于使式(3)等号成立的样本即支持向量。
求解上述问题后得到的最优分类函数是
ƒ(x) = sgn{(w*·x) + b*} = sgn{∑ai*·yi(xi·x) + b*} (10)
其中,sgn()为符号函数。由于非支持向量对应的ai均为0,因此式中的求和实际上只对支持向量进行。而 b* 是分类的域值,可以由任意一个支持向量用式(3)求得(因为支持向量满足其中的等式),或通过俩类中任意一对支持向量取中值求得。
以上都是抄自某篇Paper的,比较不容易懂,起码现在我还是不懂SVM的工作原理,为弄懂这个还顺便学了一个拉格郎日了。。。