支持向量机的一些推导梳理

基本上按照吴恩达的PDF的思路,参考了西瓜书和一本机器学习实战,感觉吴恩达PDF和西瓜书简直互补。
先梳理一下拉格朗日对偶的数学概念,然后后面思路会顺一些。

拉格朗日对偶

对于优化问题(原问题)

minwf(w)s.t.gi(w)0hi(w)=0minw⁡f(w)s.t.gi(w)⩽0hi(w)=0

构造拉格朗日函数
L(w,α,β)=f(w)+iαigi(w)+iβihi(w)L(w,α,β)=f(w)+∑iαigi(w)+∑iβihi(w)
定义函数
θp(w)=maxα,β;αi>0L(w,α,β)θp(w)=maxα,β;αi>0⁡L(w,α,β)

定义问题
p=minwmaxα,β;αi>0L(w,α,β)=minwθp(w)p∗=minw⁡maxα,β;αi>0⁡L(w,α,β)=minw⁡θp(w)
pp∗这个问题和原问题同解,因为

对于拉格朗日函数LL而言,如果原问题的约束满足,则使得L最大化(即θp(w)θp(w)函数)就是让ααββ全部为零,这样LL就等于f(w); 如果原问题的约束不满足,则θp(w)θp(w)可以任意地接近正无穷。所以

θp(w)={f(w)+θp(w)={f(w)约束满足+∞约束不满足
因此最小化θp(w)θp(w)就是在原问题约束下最小化f(w)f(w).

再定义函数

θD(α,β)=minwL(w,α,β)θD(α,β)=minw⁡L(w,α,β)
定义问题
d=maxα,β;αi>0minwL(w,α,β)=maxα,β;αi>0θD(α,β)d∗=maxα,β;αi>0⁡minw⁡L(w,α,β)=maxα,β;αi>0⁡θD(α,β)
称为对偶问题。

一般情况下总是成立dpd∗⩽p∗,因为:

对于二元函数f(x,y)f(x,y)总有

maxxminyf(x,y)minymaxxf(x,y)maxx⁡miny⁡f(x,y)⩽miny⁡maxx⁡f(x,y)
因为上式等价于说,对于任意s,ts,t有(你的最大值比我最小值还小,那我任何元素都比你更大)
minyf(s,y)maxxf(x,t)miny⁡f(s,y)⩽maxx⁡f(x,t)
上面这个式子就是:(显然成立)
minyf(s,y)f(s,t)maxxf(x,t)miny⁡f(s,y)⩽f(s,t)⩽maxx⁡f(x,t)

但是在满足某些条件的时候p=dp∗=d∗,条件是:

1 f(w)f(w)是凸函数;2 {gi(w)}{gi(w)}是凸函数;3 {hi(w)}{hi(w)}是仿射函数;4 {gi(w)}{gi(w)}的那个不等式约束取严格小于时,原问题可行域非空

满足上面条件,则一定存在w,α,βw∗,α∗,β∗满足:1 ww∗是原问题的解;2 αα∗ββ∗是对偶问题的解;3 w,α,βw∗,α∗,β∗满足KKT条件。反过来,如果存在w,α,βw∗,α∗,β∗满足KKT条件,则w,α,βw∗,α∗,β∗也一定是原问题和对偶问题的解。

KKT条件是:

wiL(w,α,β)=0∂∂wiL(w∗,α∗,β∗)=0
βiL(w,α,β)=0∂∂βiL(w∗,α∗,β∗)=0
αigi(w)=0αi∗gi(w∗)=0
gi(w)0gi(w∗)⩽0
αi0αi⩾0

最大间隔分类器

给定训练集(x(i),y(i))(x(i),y(i)),希望寻找超平面wTx+b=0wTx+b=0使得对于所有y(i)=1y(i)=1的样本在超平面上方:wTx(i)+b0wTx(i)+b⩾0,对于所有y(i)=1y(i)=−1的样本在超平面下方:wTx(i)0wTx(i)⩽0.

为衡量一个样本距离超平面的远近,定义函数间隔为

γ^(i)=y(i)(wTx(i)+b)γ^(i)=y(i)(wTx(i)+b)
注意这个函数间隔总是正数。希望对于正例,间隔越大样本越“正”;对与负例,间隔越大样本越“负”。然而定义的函数间隔有问题:同时给w,bw,b乘以同一个常数,超平面不变,样本的正负程度不变,但函数间隔却变化了一个常数倍。

为解决这个问题,可以定义几何间隔为

γ(i)=y(i)(wTx(i)+b)/||w||2γ(i)=y(i)(wTx(i)+b)/||w||2
可以证明这个几何间隔就是nn维欧几里得空间中样本x(i)到超平面wTx+b=0wTx+b=0的距离。

最大间隔分类器目的是在特征空间中找到超平面使得正负样本被分到超平面两边且到超平面的距离都最大化。转化为优化问题就是:

maxγ,w,bγs.t.y(i)(wT+b)γ||w||=1maxγ,w,b⁡γs.t.y(i)(wT+b)⩾γ||w||=1
这个问题含有等式约束很麻烦,使用函数间隔可以转换成(首先应该使得函数间隔大于某个值,又因为函数间隔可以任意缩放,对优化目标进行归一化处理,也可以按照西瓜书上那样直接得到优化目标为γ=2/||w||γ=2/||w||)
maxγ^,w,bγ^||w||s.t.y(i)(wT+b)γ^maxγ^,w,b⁡γ^||w||s.t.y(i)(wT+b)⩾γ^
上面优化问题说的是遍历所有满足约束的γ^,w,bγ^,w,b求出使得γ^/||w||γ^/||w||最大的那一组γ^,w,bγ^,w,b。对于每一次γ^,w,bγ^,w,b的取值,我都可以利用 “w,bw,b任意缩放不影响分类效果” 而把γ^γ^变成11。所以可以直接将上面问题中的γ^设为11而不改变问题的解(γ^正好为11的那些样本称之为支持向量)。把||w||倒数最大化等于将||w||||w||最小化。所以问题转化为
minw,b12||w||22s.t.y(i)(wT+b)1minw,b⁡12||w||22s.t.y(i)(wT+b)⩾1

为进一步简化这个问题,尝试利用对偶问题来解决。可以验证这个问题满足使得d=pd∗=p∗的四个条件,因此这个问题的解与其对偶问题的解相同。先不写其对偶问题是什么,先写拉格朗日函数,再利用KKT条件对拉格朗日函数进行化简。

拉格朗日函数为

L(w,α,β)=12||w||2iαi[y(i)(wTx(i)+b)1]L(w,α,β)=12||w||2−∑iαi[y(i)(wTx(i)+b)−1]
利用KKT条件里的对wwb偏导为零(bb可以视为w的一部分),得到
wiαiy(i)x(i)=0()(∗)w−∑iαiy(i)x(i)=0
iαiy(i)=0()(∗∗)∑iαiy(i)=0
把这两个式子代入拉格朗日函数得到
L(w,α,β)=iαi12i,jαiαjy(i)y(j)x(i)Tx(j)=iαi12i,jαiαjy(i)y(j)x(i),x(j)L(w,α,β)=∑iαi−12∑i,jαiαjy(i)y(j)x(i)Tx(j)=∑iαi−12∑i,jαiαjy(i)y(j)⟨x(i),x(j)⟩

所以对偶问题是
maxαiαi12i,jαiαjy(i)y(j)x(i),x(j)s.t.αi0iαiy(i)=0maxα⁡∑iαi−12∑i,jαiαjy(i)y(j)⟨x(i),x(j)⟩s.t.αi⩾0∑iαiy(i)=0
对偶问题的两个约束,第一个是一直都有的(在拉格朗日对偶里面),第二个是KKT条件得来的()(∗∗)式。

为求得对偶问题的解,使用SMO算法。对偶问题是一个有约束的最大值问题。SMO算法思想是,选取一个变量更新,使目标函数最大化,同时固定其他变量不变。由于对偶问题中有一个等式约束,不能只更新一个变量而保持约束成立,所以每次选取两个αi,αjαi,αj同时更新使目标函数最大化。

一旦在某次更新中选取了αi,αjαi,αj两个变量,而其余变量固定,那么剩下的就是求新的αi,αjαi,αj值使得拉格朗日函数最大化。这个过程可以做得非常高效:因为约束为αiy(i)+αjy(j)=cαiy(i)+αjy(j)=c,则ajaj可以用aiai表示,从而转化为一个单变量二次优化问题,且约束条件只有一个αi0αi⩾0,这个问题有解析解:全局极值点如果在可行域内则直接取它,如果不在可行域内则取边界点。

每次更新都要选取αi,αjαi,αj,一般的选取策略是,选取的两个αi,αjαi,αj对应的样本间隔应该最大。

如果求得了对偶问题的解,那么直接使用()(∗)式可以非常简单地得到ww∗.

剩下的只有bb了,w是斜率,控制超平面的摆放角度(斜率),bb控制其摆放的高度(截距)。当最佳的w确定了以后,最佳的bb的取值,直觉上应该使得超平面位于两组支持向量确定的两个平行超平面的中间。设最佳bbb∗,则对于正样本的支持向量而言wTx+=1bw∗Tx+=1−b∗,对于负样本的支持向量而言wTx=1bw∗Tx−=−1−b∗所以b=wTx++wTx2b∗=−w∗Tx++w∗Tx−2,而x+x+xx−可以用mini:y(i)=1wTx(i)mini:y(i)=1⁡w∗Tx(i)maxi:y(i)=1wTx(i)maxi:y(i)=−1⁡w∗Tx(i)来表示。所以

b=mini:y(i)=1wTx(i)+maxi:y(i)=1wTx(i)2b∗=−mini:y(i)=1⁡w∗Tx(i)+maxi:y(i)=−1⁡w∗Tx(i)2

既然已经求出wwb,那就可以对输入的新样本进行预测。预测根据的是看wTx+bwTx+b是正是负而归到正类或者负类。为wTx+bwTx+b可以化简,利用()(∗)

wTx+b=(iαiy(i)x(i))Tx+b=iαiy(i)x(i),x+bwTx+b=(∑iαiy(i)x(i))Tx+b=∑iαiy(i)⟨x(i),x⟩+b

观察KKT条件的最后三行,那里实际上说的是,不等式gi(w)0gi(w)⩽0和不等式αi0αi⩾0总有一个取等号,另一方面,对于非支持向量而言,前者必然不取等号,所以后者一定取等号。换句话说,只有支持向量对应的αiαi才可能非零。于是实际上,上面的式子中的内积,只需要对支持向量计算即可。

核函数

有的问题是线性可分的,有的问题不是线性可分的。前面所有的讨论都是事先假设训练集一定线性可分。如果训练集不是线性可分的,个人感觉上一般来说可以大致分为两种情况。一种是有部分样本类似于乱跑的小噪声,但总体上训练集仍然基本上呈现出线性可分的趋势,这部分可以通过软间隔来解决。另一种是,本来训练集就完全不是线性可分的,但使用非线性的曲线(二维时),或者“超曲面”就可以较好地分割,这就需要使用核函数。

核函数使用的场合,西瓜书上的列举的异或是一个典型,这类问题使用超平面无法分割,但是映射到更高维的特征空间,在高维特征空间中使用超平面却可能实现分割。具体例子就不抄写了。

一般使用ϕ(x)ϕ(x)表示样本xx经过某个从低维到高维的映射ϕ()操作后的特征向量。预测函数原来是wTx+bwTx+b,现在是wTϕ(x)+bwTϕ(x)+b,其余一切推导可以照旧,得到的对偶问题是

maxαiαi12i,jαiαjy(i)y(j)ϕ(x(i)),ϕ(x(j))s.t.αi0iαiy(i)=0maxα⁡∑iαi−12∑i,jαiαjy(i)y(j)⟨ϕ(x(i)),ϕ(x(j))⟩s.t.αi⩾0∑iαiy(i)=0
与之前的不同仅在于使用了ϕ(x)ϕ(x)代替xx而已。但是,一般情况下高维空间维数很高,计算内积很麻烦,而且有时候高维空间是无穷维的,所以可以设想有一个函数k(,)可以在原特征空间计算高维空间的内积,即
k(x(i),x(j))=ϕ(x(i)),ϕ(x(j))=ϕT(x(i))ϕ(x(j))k(x(i),x(j))=⟨ϕ(x(i)),ϕ(x(j))⟩=ϕT(x(i))ϕ(x(j))

这个函数就叫做核函数。引入这个记号以后,预测函数就变成
wTϕ(x)+b=(iαiy(i)ϕ(x)(i))Tϕ(x)+b=iαiy(i)k(x(i),x)+bwTϕ(x)+b=(∑iαiy(i)ϕ(x)(i))Tϕ(x)+b=∑iαiy(i)k(x(i),x)+b

有了映射ϕ()ϕ(⋅)就有核函数k(,)k(⋅,⋅),有核函数计算将会很简便而不用管原来的映射到底是什么。实际任务中,往往事先并不知道怎样的映射才是有效的,也就不知道核函数是怎样的,那么任取一个函数作为核函数可行吗? 不可以。满足Mercer定理的函数才可以取为核函数。

Mercer定理(按照西瓜书的版本):设RnRn为特征空间,k(,)k(⋅,⋅)为定义在Rn×RnRn×Rn上的对称函数,则k(,)k(⋅,⋅)是核函数当且仅当对于任意(样本数量为mm的)训练集x(1),,x(m),核矩阵

K=[Ki,j]K=[Ki,j]
总是半正定的。其中矩阵元Kij=k(x(i),x(j)),i,j=1,,mKij=k(x(i),x(j)),i,j=1,⋯,m.

吴恩达PDF上对此有两点简单的解释,首先内积是可以调换次序的,所以核函数必须是对称的。其次解释了在有限维空间中,矩阵KK的正定性是“函数k可以作为核函数”的必要条件(充分性成立但没解释):

zz是有限维任意向量,则

zTKz=ijziϕ(x(i))Tϕ(x(j))zj=kijziϕk(x(i))ϕk(x(j))zj=k(iϕk(x(i))zi)20

满足半正定矩阵的定义。

软间隔

如果训练集不是线性可分的,但是排除掉一些少量的样本以后,基本上仍是线性可分的,这时可以使用软间隔。此外,软间隔也可以用于减弱离群点(outliers)的不良影响,例如下面这张图。这张图说的是,由于离群点的影响,如果非要严格地线性分割就会造成间隔很小,影响预测准确性。
这里写图片描述

软间隔允许一定程度上对训练集分类错误的容忍。使用下面优化问题代替原来的问题:

minγ,β,b12||w||2+Ciξis.t.y(i)(wTx(i)+b)1ξiξi0minγ,β,b⁡12||w||2+C∑iξis.t.y(i)(wTx(i)+b)⩾1−ξiξi⩾0
这样就允许部分样本点的函数间隔小于11,但也要付出相应的代价。参数C控制这两者的权衡。

加入这一个1ℓ1惩罚项以后,得到的对偶问题只是约束条件稍有不同,求出的ww∗bb∗也不同,但预测函数仍然是wTx+bw∗Tx+b∗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值