理解LIBSVM: A Library for Support Vector Machines

来源:互联网 发布:云盘 php源码 编辑:程序博客网 时间:2024/06/05 04:55

为了更好的利用由 Chih-Chung Chang and Chih-Jen Lin 提供的libsvm库,该博文主要理解其提供的《LIBSVM: A Library for Support Vector Machines》文档。在理解该文档之前,简单梳理支持向量机(Support Vector Machines: SVM)

1. SVM基础知识
1.1基础的SVM是用来处理二分类问题,分类器的目标是找到一个超平面

wTx+b=0
其中x为训练数据集,{w,b}为训练参数。对于二分类问题,label:y={-1,1}.
由分界面定义分类函数f(x)
f(x)=wTx+b
f(x)<0,f(x)=0(),f(x)>0
数据样本到超平面的距离:
               这里写图片描述
            (图片来源:http://eric-gcm.iteye.com/blog/1981771)
γ=wTx+bw=f(x)w

目标优化函数(详细解释分析见http://eric-gcm.iteye.com/blog/1981771):
max1w, s.t.,yi(wTxi+b)1, i=1,...,n
问题等价于在约束不变下
min12w2
(w2=wTw)在该问题下,求解算法的复杂度与样本维度有关,通过求原问题的对偶问题优化求解过程。针对SVM求解这样做的优点:优化求解;方便SVM引入核函数解决非线性分类问题。
对带约束条件的问题,通过引入拉格朗日乘子将约束问题转换为非约束问题,优化函数如下:
L(w,b,α)=12w2i=1nαi(yi(wTxi+b)1)

原问题等价为:
minw,bmaxαi0L(w,b,α)

对偶形式:
maxαi0minw,bL(w,b,α)

通过对对偶优化函数求偏导:
Lw=0w=i=1nαiyixi
Lb=0i=1nαiyi=0

推出:
L(w,b,a)=i=1nαi12i,j=1nαiαjyiyjxTixj

接下来对偶问题成为函数对α求极大,并且在前面的推到中,有与α的等式与不等式,这些式子中含有原问题的目标变量:
L(w,b,a)=12i=1nαi12i,j=1nαiαjyiyjxTixj
s.t. i=1nαiyi=0
αi0, i=1,2,...,n

构造拉格朗日函数求极值,对α求导(令求导=0),算出α,从而得出{w,b}
由于w=ni=1αiyixi,分类函数表示为:
f(x)=i=1nαiyixi,x+b

1.2对于线性不可分(噪声)
加入松弛变量ξ,使得原约束成为y(wTw+b)1ξ(ξ为松弛变量)。对加入松弛变量的SVM,
minw,b12w2+Ci=1nξi  (C)
yi(wTxi+b)1ξi
ξi0
i=1,2,...,n

Cni=1ξi为“惩罚项”,松弛变量越大,对目标函数的惩罚力度越大。
将约束求解转换为非约束:
L(w,b,ξ,α,r)=12w2+Ci=1nξii=1nαi(yi(wTxi+b)1+ξi)i=1nriξi
求偏导:
Lw=wi=1nαiyixi=0w=i=1nαiyixi
Lb=i=1nαiyi=0
Lξi=Cαiri=0
将值带入函数,且(w2=wTw),故对偶形式为:
maxαi=1nαi12i,j=1nαiαjyiyjxTixj (xTixj=xixj)
s.t.i=1nαiyj=0
0αiC,i=1,2,...,n

1.3对于线性不可分(数据非线性性)
SVM处理非线性数据通过引入核函数K(,)将数据映射(map)到高维,解决二分类中数据线性不可分问题。由于对偶求解中保证了(xTixj=xixj)将线性可分通过()核函数映射,记为K(xi,xj).(为了避免映射的维度灾难,,数据的映射计算是先直接在原来的低维空间计算,然后进行映射),从而,分类函数为:
f(x)=i=1nαiyiK(xi,xj)+b

原问题的对偶问题:
maxαi=1nαi12i=i,jnαiαjyiyjK(xi,xj)
s.t. i=1nαiyi=0
αi0, i=1,2,...,n

2. Libsvm: a library for support vector machines
- SVC: support vector classification (two-class and multi-class)
- SVR: support vector regression
- One-class SVM.
2.1.1 C-Sopport Vector Classification 松弛+核函数
2分类,label:yi{1,1}
原优化问题:
minw,b,ξ12wTw+Ci=1lξi
s.t. yi(wT(xi)+b)1ξi,
0αiC,  i=1,...,l

将带约束的原问题转换为非约束优化问题:
L(w,b,ξ,α,r)=12wTw+Ci=1lξii=1lαi(yi(wT(xi)+b)1+ξi)i=1lriξi

原问题等价为(最大参考KKT):
minw,bmaxαi,ξiL(w,b,α)

对偶问题:
maxαi,ξiminw,bL(w,b,α)

求导:
Lw=wi=1lαiyi(xi)=0w=i=1lαiyi(xi)
Lb=i=1lαiyi=0i=1lαiyi=0
Lξi=Cαiri=0
带入计算:

maxαL(α)=12wT(li=1αiyi(xi))+Cli=1ξili=1αi(yi(wT(xi)+b)1+ξi)li=1(Cαi)ξi=wT(12li=1αiyi(xi))+Cli=1ξili=1Cξili=1αiyib+li=1αili=1αiξi+li=1αiξi=li=1αi12wTli=1αiyi(xi)=li=1αi12li,j=1αiyi(xi)Tαjyj(xj)=li=1αi12li,j=1αiyiyj(xi)T(xj)αj=eTα12αTQα
其中: e=[1,...,1]T,Qi,jyiyjK(xi,xj),K(xi,xj)(xi)T(xj)
对偶问题:

minα12αTQαeTα

前面的推导中有对偶优化问题的约束,约束条件:
s.t.  yTα=0
0αiC,i=1,...,l

构造拉格朗日函数求极值,对α求导(令求导 = 0),算出α,从而得出{w,b}
由于w=li=1αiyi(xi),分类函数表示为:
f(x)=i=1lαiyiK(xi,xj)+b

由于y{1,1},正类(1)与负类(-1),利用符号函数(sgn):
sgn(wT(x)+b)=sgn(i=1lyiαiK(xi,x)+b)

—-(未完)—–