SVM算法2

来源:互联网 发布:只有我知沈阳见面会 编辑:程序博客网 时间:2024/05/04 01:50

线性可分支持向量机学习算法

输入:线性可分训练集T={(x1,y1),(x2,y2),...,(xN,yN)} 其中xiRn,yi{1,+1},i=1,2,..,N
输出:分离超平面和分类决策函数
(1)构造并求解约束最优化问题

minα12i=1Nj=1Nαiαjyiyj(xixj)i=1Nαi
s.t.i=1Nαiyi=0
αi0,i=1,2,..,N

求得最优解α=(α1,α2,...,αN)T
w=i=1Nαiyixi
b=yji=1Nαiyi(xixj)

求得分离超平面
wx+b=0
分类决策函数
f(x)=sign(w+b)

线性支持向量机与软间隔最大化

线性可分问题的支持向量机学习方法,对线性不可分训练数据是不适用的,将它扩展到线性不可分的数据,使其成为软间隔最大化为了解决这个问题,可以对每个样本点(xi,yi)引进一个松弛变量ξi0,使得函数间隔加上松弛变量大于等于1,这样,约束条件变为

yi(wxi+b)1ξi
同时,对每个松弛变量ξi,支付一个代价,目标函数由原来的
12||w||2+Ci=1Nξi
这里,C>0称为惩罚参数,一般由应用问题决定,C值大是对误分类的惩罚增大,C值小时,对错误分类的惩罚减小。最小化目标函数包含两层含义:使12||w||2尽量小,即间隔尽量大,同时使错误分类的点尽量少,C是调和两者的系数。则原始问题变为
minw,β,ξ12||w||2+Ci=1Nξi
s.t.yi(wxi+b)1ξi,i=1,2,..,N
ξi0,i=1,2,..,N
显然,线性支持向量机包含线性可分支持向量机,具有更广的适用性。

学习的对偶算法

原始问题的对偶问题是

minα12i=1Nj=1Nαiαjyiyj(xixj)i=1Nαi
s.t.i=1Nαiyi=0
0αiC,i=1,2,..,N

非线性支持向量机与核函数

核技巧

非线性问题往往不好求解,所以希望能够通过解线性分类问题的方法解决这个问题,所采取的方法是进行一个非线性变化,将非线性问题变化为线性问题。核技巧应用到支持向量机,其基本想法是通过一个非线性变换将输入空间对应于一个特征空间,使得在输入空间Rn中的超曲面模型对应于特征空间H中的超平面(支持向量机),这样,分类问题的学习任务通过在特征空间中求解支持向量机就可以完成。

核函数的定义

是输入空间,设为特征空间(希尔伯特空间),如果存在一个从的映射ϕ(x):使得对所有的x,z,函数K(x,z)满足条件

K(x,z)=ϕ(x)ϕ(z)
则称K(x,z)为核函数,ϕ(x)为映射函数,式中ϕ(x)ϕ(z)为内积
核技巧的想法是,在学习与预测中只定义核函数K(x,z),而不显示地定义映射函数ϕ
我们注意到在线性支持向量机的对偶问题中,无论是目标函数还是决策函数,都只涉及输入实例与实例之间的内积,在对偶问题的目标函数中的内积xixj可以用核函数K(xi,xj)=ϕ(xi)ϕ(xj)来代替,此时对偶问题的目标函数为
W(α)=12i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαi
同样,分类决策函数中的内积也可以用核函数代替,而分类决策函数式称为
f(x)=sign(i=1Nsαiyiϕ(xi)ϕ(x)+b)=sign(i=1NsαiyiK(xi,x)+b)
这等价于经过映射ϕ将原来输入空间变换到一个新的特征空间,将输入空间中的内积xixj变换为特种空间中的内积ϕ(xi)ϕ(xj),在新的特征空间里从训练样本中学习线性支持向量机,当映射函数是非线性函数时,学习到的含有核函数的支持向量机就是非线性分类模型。
也就是说,在核函数K(x,z)给定的条件下,可以利用解线性分类问题的方法求解非线性分类问题的支持向量机。学习是隐式的在特征空间进行的,不需要显式地定义特征空间和映射函数。这样的技巧称为核技巧。

正定核

n,K(x,z)是定义在×上的对称函数,如果K(x,z)对应的Gram矩阵

K=[K(xi,xj)]m×n
是半正定矩阵,则称K(x,z)是正定核

常用的核函数

1多项式核函数

K(x,z)=(xz+1)p
对应的支持向量机是一个p次多项式分类器。在此情形下,分类决策函数成为
f(x)=sign(i=1Nsαiyi(xix+1)p+b)

2.高斯核函数
K(x,z)=exp(||xz||22σ2)
对应的支持向量机是高斯径向基函数分类器,在此情形下,分类决策函数成为
f(x)=sign(i=1Nsαiyiexp(||xz||22σ2)+b)

3.字符串核函数
两个字符串st上的字符串核函数是基于映射ϕn的特征空间中的内积:

kn(s,t)=un[ϕn(s)][ϕn(t)]u

字符串核函数kn(s,t)给出了字符串st中长度等于n的所有字串组成的特征向量的余弦相似度
http://users.cecs.anu.edu.au/~chteo/SASK.html给出了计算字符串核函数比较好的方法。通常字符串核函数是用动态规划来计算,该方法可以降低计算复杂度。

序列最小最优化算法

SMO算法要解如下凸二次规划的对偶问题:

minα12i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαi
s.t.i=1Nαiyi=0
0αiC,i=1,2,,..,N

SMO算法是一种启发式算法,其基本思路是:如果所有算法都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了,因为KKT条件是该最优化问题的充分必要条件。否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题,这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解。子问题可以大大提高算法速度。
注意,子问题的两个变量中只有一个是自由变量,假设α1,α2为两个变量,α3,α4,...αN固定,那么由于要满足
i=1Nαiyi=0
所以
α1=y1i=2Nαiyi
整个SMO算法包括两个部分:求解两个变量二次规划的解析方法和选择变量的启发方法。于是,SMO的最优化问题的子问题可以写成:
minα1,α2W(α1,α2)=12K11α21+12K22α22+y1y2K12α1α2(α1+α2)++y1α1i=3NyiαiKi1+y2α2i=3NyiαiKi2
s.t.αiyi+α2y2=i=3Nyiαi=ζ
0αiC,i=1,2
假设问题的初始可行解为αold1,αold2最优解为αnew1,αnew2,并假设在沿着约束方向未经剪辑时α2的最优解是αnew,unc2
由于αnew2需满足不等式约束0αiC,所以最优值的取值范围必须满足条件Lαnew2H,其中LHαnew2所在对角线段端点的界。
如果y1y2
L=max(0,αold2αold1),H=min(C,C+αold2αold1)
如果y1=y2
L=max(0,αold2+αold1C),H=min(C,αold2+αold1)
下面,首先求沿着约束方向未经剪辑即未考虑不等式约束时α2的最优解αnew,unc2,然后再求剪辑后α2的解αnew2,我们用定理来叙述这个结果,首先记
g(x)=i=1NαiyiK(xi,x)+b
Ei=g(xi)yi最优化问题沿着约束方向未经剪辑时的解是
αnew,unc2=αold2+y2(E1E2)η
其中η=K11+K222K12=||ϕ(x1)ϕ(x2)||2
αnew1=αold1+y1y2(αold2αnew2)

变量选择问题

第一个变量的选择:SMO称选择第一个变量的过程为外层循环。外层循环在训练样本中选取违反KKT条件最严重的样本点,并将其对应的变量作为第一个变量。SMO称选择第二个变量的过程为内层循环。假设在外层循环中已经找到第一个变量α1,现在要在内层循环中找第2个变量α2,第2个变量的选择标准是希望能使α2有足够大的变化。

0 0