线性可分支持向量机学习算法
输入:线性可分训练集T={(x1,y1),(x2,y2),...,(xN,yN)} 其中xi∈Rn,yi∈{−1,+1},i=1,2,..,N
输出:分离超平面和分类决策函数
(1)构造并求解约束最优化问题
minα12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi
s.t.∑i=1Nαiyi=0
αi≥0,i=1,2,..,N
求得最优解
α∗=(α∗1,α∗2,...,α∗N)T w∗=∑i=1Nα∗iyixi
b∗=yj−∑i=1Nα∗iyi(xi⋅xj)
求得分离超平面
w∗⋅x+b∗=0
分类决策函数
f(x)=sign(w∗+b∗)
线性支持向量机与软间隔最大化
线性可分问题的支持向量机学习方法,对线性不可分训练数据是不适用的,将它扩展到线性不可分的数据,使其成为软间隔最大化为了解决这个问题,可以对每个样本点(xi,yi)引进一个松弛变量ξi≥0,使得函数间隔加上松弛变量大于等于1,这样,约束条件变为
yi(w⋅xi+b)≥1−ξi
同时,对每个松弛变量
ξi,支付一个代价,目标函数由原来的
12||w||2+C∑i=1Nξi
这里,
C>0称为惩罚参数,一般由应用问题决定,
C值大是对误分类的惩罚增大,
C值小时,对错误分类的惩罚减小。最小化目标函数包含两层含义:使
12||w||2尽量小,即间隔尽量大,同时使错误分类的点尽量少,
C是调和两者的系数。则原始问题变为
minw,β,ξ12||w||2+C∑i=1Nξi
s.t.yi(w⋅xi+b)≥1−ξi,i=1,2,..,N
ξi≥0,i=1,2,..,N
显然,线性支持向量机包含线性可分支持向量机,具有更广的适用性。
学习的对偶算法
原始问题的对偶问题是
minα12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi
s.t.∑i=1Nαiyi=0
0≤αi≤C,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),而不显示地定义映射函数
ϕ。
我们注意到在线性支持向量机的对偶问题中,无论是目标函数还是决策函数,都只涉及输入实例与实例之间的内积,在对偶问题的目标函数中的内积
xi⋅xj可以用核函数
K(xi,xj)=ϕ(xi)ϕ(xj)来代替,此时对偶问题的目标函数为
W(α)=12∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαi
同样,分类决策函数中的内积也可以用核函数代替,而分类决策函数式称为
f(x)=sign(∑i=1Nsα∗iyiϕ(xi)ϕ(x)+b∗)=sign(∑i=1Nsα∗iyiK(xi,x)+b∗)
这等价于经过映射
ϕ将原来输入空间变换到一个新的特征空间,将输入空间中的内积
xi⋅xj变换为特种空间中的内积
ϕ(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)=(x⋅z+1)p
对应的支持向量机是一个
p次多项式分类器。在此情形下,分类决策函数成为
f(x)=sign(∑i=1Nsα∗iyi(xi⋅x+1)p+b∗)
2.高斯核函数
K(x,z)=exp(−||x−z||22σ2)
对应的支持向量机是高斯径向基函数分类器,在此情形下,分类决策函数成为
f(x)=sign(∑i=1Nsα∗iyiexp(−||x−z||22σ2)+b∗)
3.字符串核函数
两个字符串s和t上的字符串核函数是基于映射ϕn的特征空间中的内积:
kn(s,t)=∑u∈∑n[ϕn(s)][ϕn(t)]u
字符串核函数
kn(s,t)给出了字符串
s和
t中长度等于
n的所有字串组成的特征向量的余弦相似度
http://users.cecs.anu.edu.au/~chteo/SASK.html给出了计算字符串核函数比较好的方法。通常字符串核函数是用动态规划来计算,该方法可以降低计算复杂度。
序列最小最优化算法
SMO算法要解如下凸二次规划的对偶问题:
minα12∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαi
s.t.∑i=1Nαiyi=0
0≤αi≤C,i=1,2,,..,N
SMO算法是一种启发式算法,其基本思路是:如果所有算法都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了,因为KKT条件是该最优化问题的充分必要条件。否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题,这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解。子问题可以大大提高算法速度。
注意,子问题的两个变量中只有一个是自由变量,假设
α1,α2为两个变量,
α3,α4,...αN固定,那么由于要满足
∑i=1Nαiyi=0
所以
α1=−y1∑i=2Nαiyi
整个SMO算法包括两个部分:求解两个变量二次规划的解析方法和选择变量的启发方法。于是,SMO的最优化问题的子问题可以写成:
minα1,α2W(α1,α2)=12K11α21+12K22α22+y1y2K12α1α2−(α1+α2)++y1α1∑i=3NyiαiKi1+y2α2∑i=3NyiαiKi2
s.t.αiyi+α2y2=−∑i=3Nyiαi=ζ
0≤αi≤C,i=1,2
假设问题的初始可行解为
αold1,αold2最优解为
αnew1,αnew2,并假设在沿着约束方向未经剪辑时
α2的最优解是
αnew,unc2 由于
αnew2需满足不等式约束
0≤αi≤C,所以最优值的取值范围必须满足条件
L≤αnew2≤H,其中
L和H是
αnew2所在对角线段端点的界。
如果
y1≠y2则
L=max(0,αold2−αold1),H=min(C,C+αold2−αold1)
如果
y1=y2则
L=max(0,αold2+αold1−C),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(E1−E2)η
其中
η=K11+K22−2K12=||ϕ(x1)−ϕ(x2)||2 αnew1=αold1+y1y2(αold2−αnew2)
变量选择问题
第一个变量的选择:SMO称选择第一个变量的过程为外层循环。外层循环在训练样本中选取违反KKT条件最严重的样本点,并将其对应的变量作为第一个变量。SMO称选择第二个变量的过程为内层循环。假设在外层循环中已经找到第一个变量α1,现在要在内层循环中找第2个变量α2,第2个变量的选择标准是希望能使α2有足够大的变化。