支持向量机(SVM)原理分析

版权说明:码字不易,转载请注明出处:http://blog.csdn.net/flying_sfeng/article/details/79055411
支持向量机(SVM)是一种二分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器。支持向量机学习的基本思想是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。
对于下图线性可分的情况,SVM就是为了找到一个最优的超平面,将正负样本尽可能地分开来,也就是说,我们要找到分开样本的最大间隔。
支持向量机(SVM)原理分析
先了解一下函数间隔和几何间隔。
函数间隔

γ^(i)=y(i)(wTx(i)+b)

其中,y(i)为标签(y{1,1})
y(i)=1时,为了使间隔最大,wTx+b必须是一个尽可能大的正数,这样才能确保分类正确的确信度最高。同样地,当y(i)=1时,为了使间隔最大,wTx+b必须是一个尽可能大的负数。
而我们的目的是最大化所有训练样本的最小间隔,即给定一个训练集S={(x(i),y(i));i=1,...,m},我们定义在S下(w,b)的函数间隔为所有训练样本的函数边界的最小值,则:
γ^=mini=1,...,mγ^(i)

几何间隔
如图,
支持向量机(SVM)原理分析
假设γ(i)为我们要求的几何间隔,我们知道,w||w||w方向上的单位向量,给定A:x(i),可以得到B:x(i)γ(i)w||w||,又因为B位于决策边界,所以B也满足wTx+b=0,代入得:
wT(x(i)γ(i)w||w||)+b=0.

移项得到:
γ(i)=wTx(i)+b||w||=(w||w||)Tx(i)+b||w||

这只是一个方向上的,为了满足正负样本y=±1 的情况,更一般的,我们可以令
γ(i)=y(i)((w||w||)Tx(i)+b||w||)

因此,几何间隔与函数间隔的关系为:
γ(i)=γ^(i)||w||

||w||=1 时,几何间隔就等于函数间隔。
同样地,几何间隔为所有样本距离分界面的间隔的最小值,则
γ=mini=1,...,mγ(i)

间隔最大化:
间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面,这意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够的确信度将它们分开。
下面考虑如何求得一个几何间隔最大的分离超平面,即最大间隔分离超平面。具体地,这个问题可以表示为下面的约束最优化问题:
maxw,bγs.t.γ(i)=y(i)((w||w||)Tx(i)+b||w||)γ,  i=1,2,...,N

即我们希望最大化超平面(w,b)关于训练数据集的几何间隔γ, γ 表示的是训练数据集中的最小几何间隔,所以约束条件表示的是超平面(w,b)关于每个训练样本点的几何间隔至少是γ.
考虑到几何间隔与函数间隔的关系,可将这个问题改写为:
maxw,bγ^||w||s.t.y(i)((w||w||)Tx(i)+b||w||)γ^||w||,  i=1,2,...,N

将不等式两边的||w|| 约去,即:
maxw,bγ^||w||s.t.y(i)(wTx(i)+b)γ^,  i=1,2,...,N

函数间隔γ^的取值并不影响最优化问题的解。为什么呢?事实上,假设将w和b按比例改变成λwλb ,这时函数间隔成为λγ^。把λwλbλγ^分别代入上面的优化问题可以得到:
maxw,bλγ^||λw||=λγ^λ||w||s.t.y(i)((λw)Tx(i)+λb)λγ^,  i=1,2,...,N

两个式子的λ 都可以约去,因此,函数间隔的这一改变对上述目标函数的优化没有影响,对不等式约束也没有影响。也就是说,它产生了一个等价的最优化问题。所以,我们就可以取γ^=1, 将γ^=1 代入上面的最优化问题中,考虑到最大化1||w|| 和最小化12||w||2 是等价的,于是就得到了下面的线性可分支持向量机学习的最优化问题:
minw,b12||w||2s.t.y(i)(wTx(i)+b)10,  i=1,2,...,N

如果求出了上述约束最优化问题的解w,b, 那么就可以得到最大间隔超平面wx+b=0 及分类决策函数f(x)=sign(wx+b), 即线性可分支持向量机模型。
接下来考虑对偶问题
我们暂时先不管以上的优化式子,考虑一般化的条件:
minwf(w) s.t. hi(w)=0, i=1,...,l.

这是含有等式约束的最小化问题,可以用拉格朗日乘子方法求解。
以上含等式约束的问题可以转换为以下拉格朗日函数:
L(w,β)=f(w)+i=1lβihi(w)

其中βi 为拉格朗日乘子,令L的导数等于零:
Lwi=0; Lβi=0

可以求出wβ.
接下来我们看一下含有不等式约束的最优化问题。原问题:
minwf(w)s.t.gi(w)0, i=1,...,khi(w)=0, i=1,...,l.

为了解决这个不等式约束问题,我们定义以下的拉格朗日函数:
L(w,α,β)=f(w)+i=1kαigi(w)+i=1kβihi(w).

其中αi,βi为拉格朗日乘子。
考虑以下等式:
θp(w)=maxα,β:αi0L(w,α,β)

当违背约束时(即存在i, 使得gi(w)>0hi(w)0),
θp(w)=maxα,β:αi0f(w)+i=1kαigi(w)+i=1kβihi(w)=

而当不等式约束跟等式约束都满足时,θp(w)=f(w),即:
θp(w)={f(w),如果w满足所有约束,否则

这就是要最大化拉格朗日函数的原因。当不等式约束跟等式约束都满足要求时,θp(w)=f(w); 当违背约束时, θp(w) 趋向于无穷大,式子无解,这样做相当于把约束放到了上述式子中了。同时,我们最小化f(w),就相当于最小化θp(w).即:
p=minwθp(w)=minwmaxα,β:αi0 L(w,α,β)

p即为原问题的解。
接下来我们最小化拉格朗日函数,
θd(α,β)=minwL(w,α,β)

由此我们可以列出对偶优化问题:
d=maxα,β:αi0θd(α,β)=maxα,β:αi0minw L(w,α,β)

d即为对偶问题的解。
原问题跟对偶问题有什么关系呢?关系如下:
d=maxα,β:αi0minw L(w,α,β)minwmaxα,β:αi0 L(w,α,β)=p

当拉格朗日乘子的解w,α,β满足以下的KKT条件时,d=p:
(27)L(w,α,β)wi=0,  i=1,...,n(28)L(w,α,β)βi=0,  i=1,...,l(29)αigi(w)=0,  i=1,...,k(30)gi(w)0,  i=1,...,k(31)α0,  i=1,...,k

下面,将证明原问题与对偶问题的关系的由来。
我们再次写下拉格朗日函数:
L(w,α,β)=f(w)+i=1kαigi(w)+i=1kβihi(w).

以下式子恒成立(sup表示上确界,inf表示下确界):
(32)infwWL(w,α,β)L(w,α,β),  w,α,β(33)supα,β:αi0L(w,α,β)L(w,α,β),  w,α,β

令:
(34)q(α,β)=infwWL(w,α,β)(35)f(w)=supα,β:αi0L(w,α,β)

所以,有:
q(α,β)f(w)

因此:
supα,β:αi0q(α,β)infwWf(w)

即:
supα,β:αi0infwWL(w,α,β)infwWsupα,β:αi0L(w,α,β)

等式成立的条件是:L(w,α,β)的第二项跟第三项为零,即:
(36)αi0,  i(37)gi(w)0,  i(38)αigi(w)=0,  i(39)hi(w)=0,  i

也就是说,当变量满足KKT条件时,对偶问题的解等于原问题的解。

优化问题的求解:
再次写下我们要求解的优化问题:

minw,b12||w||2s.t.y(i)(wTx(i)+b)10,  i=1,2,...,N

拉格朗日函数如下:
L(w,α,β)=12||w||2+i=1mαi[1y(i)(wTx(i)+b)].

我们通过求解对偶问题来得到原问题的解,当然前提是必须满足KKT条件。
对偶问题如下:
maxαi0minw,b12||w||2+i=1mαi[1y(i)(wTx(i)+b)].

对于这个问题,我们先通过最小化L(w,α,β) 来求出w,b(α),具体做法是使L对w,b的导数为零。对w求导:
wL(w,b,α)=wi=1mαiy(i)x(i)=0

即:
w=i=1mαiy(i)x(i)

对b求导:
bL(w,b,α)=i=1mαiy(i)=0

将上述两式代入到拉格朗日函数中,可以得到:
L(w,b,α)=i=1mαi12i=1mj=1my(i)y(j)αiαj(x(i))Tx(j)

因此,优化问题可写成下列形式:
maxαi=1mαi12i=1mj=1my(i)y(j)αiαj(x(i))Tx(j)s.t.αi0, i=1,...,mi=1mαiy(i)=0

这就变成了对α 的单变量优化问题。对α的求解可以使用SMO算法,我们后面会讲到。假设我们已经求解出α, 那么我们可以通过w=i=1mαiy(i)x(i)求出w,但是b该怎么求解呢?
当i为支持向量时,我们可以得到函数间隔:y(i)(wTx(i)+b)=γ^,即:
maxi:y(i)=1wTx(i)+b=γ^mini:y(i)=1wTx(i)+b=γ^

以上两式相加可以得到b:
b=maxi:y(i)=1wTx(i)+mini:y(i)=1wTx(i)2.

因此,对于一个待预测的样本,我们可以得到:
wTx+b=i=1mαiy(i)(x(i))Tx+b=i=1mαiy(i)x(i),x+b.

wTx+b>0 时我们把该样本预测为正样本,wTx+b0 时预测为负样本。

核函数:
在前面的讨论中,我们假设训练样本时线性可分的,即存在一个划分超平面能将训练样本正确分类。然而在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面。对于这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。幸运的是,如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分。(参考《机器学习》6.3节 周志华著)
核函数的定义:
设X是原始输入空间,H为特征空间(希尔伯特空间),如果存在一个从X到H 的映射:

ϕ(x):XH

使得对所有x,zX, 函数K(x,z)满足条件:
K(x,z)=ϕ(x),ϕ(z)

则称K(x,z) 为核函数,ϕ(x) 为映射函数,式中ϕ(x),ϕ(z)ϕ(x)ϕ(z)的内积。
核技巧的想法是:在学习与预测中只定义核函数K(x,z),而不显式地定义映射函数ϕ。通常,直接计算K(x,z) 比较容易,而通过ϕ(x)ϕ(z)计算K(x,z)并不容易。这是因为,ϕ是原始输入空间X到特征空间H地映射,特征空间H一般是高维的,甚至是无穷维的。
通俗点讲,对于在原始空间内线性不可分的情况,我们可以将原始空间映射到高维空间,高维空间的内积计算使用核函数代替。
因此,我们的目标函数的对偶问题可以写成下列形式:
maxαi=1mαi12i=1mj=1my(i)y(j)αiαjk(x(i),x(j))s.t.αi0, i=1,...,mi=1mαiy(i)=0

求解后即可得到:
f(x)=wTϕ(x)+b=i=1mαiy(i)ϕ(x(i))Tϕ(x)+b=i=1mαiy(i)k(x(i),x)+b

那么,什么样的函数能做核函数呢?我们有下面的定理:
定理:令X为原始输入空间,k(x(i),x(j)) 是定义在X×X 上的对称函数,则k是核函数当且仅当对于任意数据D=x(1),x(2),...,x(m), 核矩阵K总是半正定的:
K=[k(x(1),x(1))k(x(1),x(j))k(x(1),x(m))k(x(i),x(1))k(x(i),x(j))k(x(i),x(m))k(x(m),x(1))k(x(m),x(j))k(x(m),x(m))]

定理表明,只要一个对称函数所对应的核矩阵半正定,它就能作为核函数使用。
定理证明:如果k 是一个有效的核函数,那么k(x(i),x(j))=ϕ(x(i))Tϕ(x(j))==ϕ(x(j))Tϕ(x(i))=k(x(j),x(i)), 因此核函数k必须是对称的。另外,对于任意向量z,我们有:
zTKz=ijzik(x(i),x(j))zj=ijziϕ(x(i))Tϕ(x(j))zj=ijzikϕk(x(i))ϕk(x(j))zj=kijziϕk(x(i))ϕk(x(j))zj=k(iziϕk(x(i)))20.

因此,核矩阵K必须是半正定的。证毕。
常用核函数:
线性核k(x(i),x(j))=(x(i))Tx(j)多项式核k(x(i),x(j))=((x(i))Tx(j))d高斯核k(x(i),x(j))=exp(||x(i)x(j)||22σ2)拉普拉斯核k(x(i),x(j))=exp(||x(i)x(j)||σ)Sigmoid核k(x(i),x(j))=tanh(β(x(i))Tx(j)+θ)

线性不可分的支持向量机
在前面的讨论中,我们一直假定训练样本在样本空间或特征空间中是线性可分的,即存在一个超平面能将不同类的样本完全分开。然而,在现实任务中往往很难确定合适的核函数使得训练样本在特征空间中线性可分;退一步说,即使恰好找到了某个核函数使训练集在特征空间中线性可分,但这样划分的结果会更容易造成过拟合。
线性不可分意味着某些样本点(x(i),y(i)) 不能满足函数间隔大于等于1的约束条件。为了解决这个问题,可以对每个样本点(x(i),y(i))引进一个松弛变量ξi, 使函数间隔加上松弛变量大于等于1,这样,约束条件变为:

y(i)(wTx(i)+b)1ξi

同时,对每一个样本,支付一个代价ξi, 目标函数由原来的12||w||2 变为:
12||w||2+Ci=1Nξi

其中,C>0称为惩罚因子,C值大时对误分类的惩罚增大。最小化目标函数包含两层含义:为了使目标函数尽可能小,C应该取一个较小的值;同时为了使误分类的样本尽可能少,C应该取一个较大的值。所以,惩罚因子C的取值必须在这两者做个折中。
线性不可分的线性支持向量机的学习问题变成一个凸二次规划问题(原问题):
minw,b,ξ12||w||2+Ci=1Nξis.t.y(i)(wTx(i)+b)1ξi,  i=1,2,...,Nξi0,  i=1,2,...,N

该问题的拉格朗日函数是:
L(w,b,α,ξ,μ)=12||w||2+Ci=1Nξi+i=1mαi(1ξiy(i)(wTx(i)+b))i=1mμiξi

其中,αi0,μi0是拉格朗日乘子。
L(w,b,α,ξ,μ)w,b,ξ的偏导为零可得:
w=i=1mαiy(i)x(i),0=i=1mαiy(i),C=αi+μi.

将以上等式代入拉格朗日函数中可得到对偶问题:
maxαi=1mαi12i=1mj=1my(i)y(j)αiαj(x(i))Tx(j)s.t.0αiC, i=1,...,mi=1mαiy(i)=0

同样地,对于软间隔支持向量机,也必须满足KKT条件:
αi0,  μi0,y(i)f(x(i))1ξi,αi(y(i)f(x(i))1+ξi)=0ξi0,  μiξi=0.

因此,对任意训练样本(x(i),y(i)), 总有αi=0y(i)f(x(i))1+ξi=0. 若αi=0, 则该样本不会对f(x)有任何影响;若αi>0,则必有y(i)f(x(i))1+ξi=0, 则该样本是支持向量:由于C=αi+μi,若αi<C,则μi>0,进而有ξi=0,则该样本恰好落在间隔边界上;若αi=C,则μi=0, 此时若0<ξi<1,则该样本落在间隔边界与分离超平面之间;若ξi=1,则该样本恰好落在分离超平面上;若ξi>1,则该样本落在分离超平面误分一侧。同样,软间隔支持向量机的最终模型仅与支持向量有关。
线性支持向量机学习算法步骤:
输入:训练数据集T=(x(1),y(1)),(x(2),y(2)),...,(x(N),y(N)),其中x(i)X=Rn,y(i)Y={1,+1}, i=1,2,...,N;
输出:分离超平面核分类决策函数。
(1)选择惩罚参数C>0, 构造并求解凸二次规划问题:
maxαi=1Nαi12i=1Nj=1Ny(i)y(j)αiαj(x(i))Tx(j)s.t.0αiC, i=1,...,mi=1Nαiy(i)=0

求得最优解α=(α1,α2,...,αN)T.
(2)计算w=i=1Nαiy(i)x(i)
选择α的一个分量αj满足条件0<αj<C,计算
b=y(j)i=1Nαiy(i)(x(i))Tx(j)

求得分离超平面
wx+b=0

分类决策函数:
f(x)=sign(wx+b)

步骤(2)中,因为存在多个αj,所以b的解并不是唯一的,所以实际计算时可以取在所有符合条件的样本点上的平均值。

SMO算法(序列最小最优化算法):
SMO算法要求解如下凸二次规划的对偶问题:

minα12i=1Nj=1Ny(i)y(j)αiαj(x(i))Tx(j)i=1Nαis.t.0αiC, i=1,...,mi=1Nαiy(i)=0

在这个问题中,变量时拉格朗日乘子,一个变量αi对应于一个样本点(x(i),y(i));变量的总数等于训练样本容量N。
SMO算法时一种启发式算法,其基本思路是:如果所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充分必要条件。否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解。子问题有两个变量,一个是违反KKT条件最严重的哪一个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。
因此,在参数初始化后,SMO算法不断执行以下两个步骤直至收敛:
(1)选取一对需要更新的变量αiαj
(2)固定αiαj以外的参数,求解目标函数后获得更新后的αiαj。(因为存在约束条件i=1mαiy(i)=0,实际的变量只有一个,对该变量求导等于零可以得到该变量的解,将其代入约束条件可以得到另一个变量的解)
整个SMO算法包括两个部分:求解两个变量二次规划的解析方法和选择变量的启发式方法。时间关系,这里不做展开了,感兴趣的读者可以参阅《统计学习方法》7.4节 (作者:李航),作者讲的很详细,推荐阅读。

花了很长时间,终于把这部分内容总结完了。以上公式纯手打,若有错误或者理解不当的,烦请指出。
参考:
吴恩达 CS229笔记
《统计学习方法》 李航著
《机器学习》 周志华著