机器学习之SVM分类

来源:互联网 发布:英雄杀探宝固定数据 编辑:程序博客网 时间:2024/06/05 08:11

通俗来说,SVM就是找到一个平面把不同类别的样本分开。这个平面在一维中是一个点,二维中是一条线,三维是一个平面。

SVM基本型

划分超平面可以用下面线性方程表述:

wTx+b=0

W是法向量,决定超平面的方向;b为位移项,决定超平面与原点之间的距离。样本空间中任一点x到超平面的距离是:

r=|wTx+b|w

若对yi=+1,则有wTxi+b+1;若yi=1,则有WTxi+b1。使等号成立的点称为“支持向量”(support vector),两个异类支持向量到超平面的距离为:

γ=2w

这被称为“间隔”(margin),要找到最大间隔(maximum margin)划分超平面,也就是要求解:
maxw,b2w

s.t.yiwTxi+b1

我们通常把它写成求最小值的形式,前面1/2是为了求导方便。

maxw,b12w2

s.t.yiwTxi+b1

这就是支持向量机的基本型。

对偶形式

基本型本身是一个凸二次规划(convex quadratic programming)问题。数学基础部分请参照机器学习部分数学基础的相关章节。对其用拉格朗日乘子法可得其对偶问题(dual problem)。具体来说,对每条约束添加拉格朗日乘子ai0,则拉格朗日函数可写为:

L(w,b,a)=12w2+i=1mai(1yi(wTxi+b))

wb求偏导令其为0:

w=i=1maiyixi

0=i=1maiyi

代入消去wb

maxi=1mai12aiajyiyjxTixj

s.t.i=1maiyi=0,ai0

求解出a后,求出wb就得到模型。
上述过程需要满足KKT条件:
ai0
yif(xi)10
ai(yif(xi)1)=0

由上面第三个可知,对于任意训练样本(xi,yi)总有ai=0或者yif(xi)=1。若ai=0,则该样本不会在求和中出现,对f(x)没有任何影响。若ai>0,则yif(xi)=1是对应最大间隔边界上的点,即支持向量。这表明:训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关。

SMO算法

SMO(Sequential Minimal Optimization)的基本思路是先固定ai之外的所有参数,然后求ai上的极值。由于约束条件aiyi=0,所以我们每次选择两个变量,并固定其他参数。

注意到只需要选取aiaj中有一个不满足KKT条件,目标函数就会在迭代后减小。KKT条件违背程度越大,则变量更新后可能导致的目标函数值减幅越大。所以,SMO先选择违背KKT条件程度最大的变量,第二个变量应选择一个使目标函数值减小最快的变量。SMO采用了一种启发式方法:使选取的两变量所对应样本之间的间隔最大,这样两个变量有很大的差别,与对两个相似的变量更新相比,对它们更新会带给目标函数更大的变化。

SMO算法之所以高效,在于在固定其他参数后,仅优化两个参数的过程能非常高效。

下面如何确定偏移项呢?注意到对任意支持向量都有ysf(xs)=1,选取支持向量代入即可。
在现实任务中确定偏移项采用一种更鲁棒的做法,使用所有支持向量求解的平均值。

核函数

核函数主要思想是将样本映射到更高维度的控件,使得线性可分。
ϕ(x)表示将x映射后的特征向量,于是超平面对应的模型为:

f(x)=wTϕ(x)+b

类似于前面,基本型:

maxw,b12w2

s.t.yiwTϕ(xi)+b1

对偶问题是:

maxi=1mai12aiajyiyjϕ(xi)Tϕ(xj)

s.t.i=1maiyi=0,ai0

由于特征空间维度可能很高,直接计算ϕ(xi)Tϕ(xj)不太容易,所以我们考虑以下函数:

κ(xi,xj)=<ϕ(xi),ϕ(xj)>=ϕ(xi)Tϕ(xj)

这里κ()就是核函数(kerel function)。从f(x)=mi=1aiyiκ(x,xi)+b中可看出,模型最优解可通过训练样本的核函数展开,这一展开式也称为“支持向量展开式”(support vector expansion)。

核函数定理:令χ为输入空间,kappa是定义在χ×χ上的对称函数,则κ是核函数当且仅当对于任意数据D,“核矩阵”(kernel matrix)总是半正定的。

以上定理表明:只要一个对称函数对应的核矩阵半正定,它就能作为核函数使用。
下面是几种常用的核函数:

  • 线性核xTixj
  • 多项式核(xTixj)d
  • 高斯核(RBF)核exp(fracxixj22σ2,σ>0
  • 拉普拉斯核:exp(xixjσ),σ>0
  • Sigmoid核:tanh(βxTixj+θ)

另外,任意核函数的线性组合,直积也是核函数。

软间隔与正则化

SVM容易过拟合,缓解的方法包括软间隔(soft margin),再引入松弛变量(slack variables)方法。就是可以允许有些点不满足约束条件,于是得到常用的“软间隔支持向量机”。

min12w2+Cξ

s.t.yi(wTxi+b)1ξi,ξi0

C是损失函数,由于0/1函数非凸非连续,数学性质不太好。一般我们常用以下替代损失函数:

  • hinge损失max(0,1z)
  • 指数损失exp(z)
  • 对率损失log(1+exp(z))

这仍然是一个二次规划问题,我们可以用拉格朗日乘子法求解。

实际上损失函数为对率函数时,我们几乎得到了对率回归模型。对率回归的优势主要在于其输出有自然概率意义,SVM要得到概率意义要特殊处理。对率回归也可以直接用于多分类,SVM用于多分类要进行特殊处理。

0 0