转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51073885
CSDN−勿在浮沙筑高台
支持向量机(Support Vector Machine)以前在分类、回归问题中非常流行。支持向量机也称为最大间隔分类器,通过分离超平面把原始样本集划分成两部分。
首先考虑最简单的情况:线性可分支持向量机。即存在一个超平面能够把训练样本分开。
1.线性可分支持向量机
1.考虑一个线性二分类的问题;例如以下左图,在二维平面上有两种样本点x,目标值分别标记为{-1,1}。能够作出无数条直线
wTx+b=0
,直线上方的点标记为{+1}的带入直线公式会得到
wTx+b>0
,下方的点。标记为{-1}带入直线公式会得到
wTx+b<0
,因此能够用
wTx+b
的符号决定点的分类,写成决策函数为
f(x,w,b)=sign(wTx+b)
把两类点分开。可是个採用哪个直线最好呢?
2.一般来说,当样本点离直线越远。则分类正确的确信度越大;例如以下右图所看到的,A,B,C三个样本点都被预測分类到‘×’类中。可是对于A的分类正确的确信度比C大。因为点C里分类直线
wTx+b=0
非常近,当直线的斜率稍一点变化,即会导致C被分到还有一类中。
综上。我们想要得到的直线是离样本点最远。同时又能保证正确划分的直线
。


1.1函数间隔与几何间隔
由二维直线
wTx+b=0
扩展到高维被称为超平面
(w,b)
。
一个点距离超平面的远近能够表示分类预測的确信程度。在超平面
wTx+b=0
确定的情况下,
|wTx+b|
能够相对地表示点x距离超平面的远近。并且假设分类正确。则
y(i)
与
wTx(i)+b
的符号一致,即
y(i)(wTx(i)+b)>0
,同一时候表示分类的正确性以及确信度。
函数间隔:超平面
(w,b)
关于样本点
(x(i),y(i))
的函数间隔为
函数间隔:γ^(i)=y(i)(wTx(i)+b)
定义超平面关于样本集S的函数间隔为超平面(w,b)与S中全部样本点的函数间隔的最小值
γ^=mini=1,2,...m γ^(i)
定义
γ^
是为了最大化间隔,
γ^
表示关于超平面与训练集中样本的函数间隔最小值,以下仅仅要最大化
γ^
就可以。
注意到函数间隔实际上并不能表示点到超平面的距离,因为当超平面
(w,b)
參数扩大同样的倍数后,如
(2w,2b)
,超平面的位置并没有改变,可是函数间隔也变大了同样的倍数
2γ^(i)
.
几何间隔:
如上图所看到的:设样本点A坐标为
x(i)
,点A到超平面的垂直距离记为
γ(i)
,分离超平面
wTx(i)+b=0
的单位法向量为
w||w||
,因此点B的坐标为
x(i)−γ(i)w||w||
,且点B在直线上,带入直线公式有:
wT(x(i)−γ(i)w||w||)+b=0;解得:γ(i)=(wTx(i)+b)||w||
假设点被正确分类。
y(i)
与
(wTx(i)+b)||w||
的符号一致,由此
同理定义几何间隔:γ(i)=y(i)(wTx(i)+b||w||)
超平面与样本集S的几何间隔为γ=mini=1,2,...m γ(i)
几何间隔不随着超平面參数的变化而变化,比如超平面參数(w,b)变为(2w,2b)。函数间隔
γ^(i)
变为
2γ^(i)
,而几何间隔
γ(i)
保持不变。
函数间隔与几何间隔的关系:
γ(i)=γ^(i)||w||
;
γ=γ^||w||
,若||w||=1,函数间隔与几何间隔同样。
1.2间隔最大化
如上所述。支持向量机的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。
γ
表示分离超平面与训练集中样本的几何间隔的最小值。为了间隔最大化。仅仅须要最大化
γ
,同一时候全部样本的几何间隔必须满足
γ(i)≥γ,i=1,2,...,m
;
maxw,b γ
s.t. y(i)(wTx(i)+b||w||)≥γ
上述问题,能够转变为一个凸二次规划问题。这是支持向量机的一个重要属性,局部极值即为全局最值。
考虑函数间隔与几何间隔的关系:
上述优化问题中,当超平面參数(w,b)同一时候变为(2w,2b),函数间隔也会变为
2γ^
,目标函数的解并不会变化。即
γ^
的取值不影响优化问题的解。因此令
γ^=1
。目标函数变为最大化
1||w||
,即最小化
||w||2
。为了后面的求解方便,加入因子
12
也不影响目标函数的解;
上述问题为一个凸优化问题,通过某些优化算法能够求解。
以下继续介绍拉格朗日对偶算法,能够更进一步优化上述问题,同一时候自然引入核函数,推广到高维数据。
1.3拉格朗日对偶性
有时考虑解决原始问题的对偶问题会更高效。
原始问题
f(w),gi(w),hi(w)
均为连续可微:
写出拉格朗日函数。当中
αi≥0,β≥0
称为拉格朗日乘子:
定义关于
w
的函数
θP(w)=maxα,βL(w,α,β)
;能够证明假设
w
满足上述约束条件
gi(w)≤0,hi(w)=0
,则有
θP(w)=f(w)
由此原始问题的约束最优化问题变为极小极大问题:
设原始问题的最优解记为
p∗=minwf(w)=minwθp(w)
.
对偶问题
把上述极小极大问题
minw maxα,βL(w,α,β)
,改为极大极小变为对偶问题,即:
定义:
设此极大极小问题的最优解记为
d∗
,能够证明
为了使得对偶问题与原始问题的最优解相等
d∗=p∗
,必须满足下述几个条件。称为KKT条件

1.4最优间隔分类器
回想原始问题:
写成拉格朗日函数。因为仅仅有不等式约束
所以仅仅包括拉格朗日乘子
αi
:
原始问题最优解
p∗=minw,b maxαL(w,b,α)
;对偶问题的最优解
d∗=maxα minw,bL(w,b,α)
对偶问题先求关于參数w,b的最小值,再求关于參数
α
的最大值。
首先,分别对w,b求偏导数并令为0。得:
把上述结果带入拉格朗日函数
L(w,b,α)
注意到上述是仅仅关于參数
α
的函数,记为
W(α)
,由对偶函数。下一步即最大化
W(α)
以下的目的是解决上述优化问题。通常採用SMO算法,本篇文章暂不做介绍。假如已经得到最优解
α=(α1,α2,...,αm)
,带回到上面对w求偏导得到的公式,能够得到
w
的值。以下要求得b得值,考虑KKT条件有:
αi[y(i)(wTx(i)+b)−1]=0。i=1,2..m
,当中必定存在一个
αj≠0
,(否则
w=0
,不是原始解)。
当
αj≠0
时
y(i)(wTx(i)+b)=1
,能够解出
b
的代数式。
b=y(j)−∑mi=1αiy(i)(x(i),x(j))
,也能够对全部採用满足条件的
b
加和求平均;然后就可以得到最佳分类超平面:
依据KKT条件有
αi[y(i)(wTx(i)+b)−1]=0,i=1,2..m
,当
αi>0
时,必定有
y(i)(wTx(i)+b)=1
,即该样本点的函数间隔为1。例如以下图所看到的,落在直线
wTx+b=±1
上。此向量即称为支持向量。对于落在直线
wTx+b=±1
以内的点,函数间隔
y(j)(wTx(j)+b)>1
,必定有
αj=0
,当计算函数最优切割超平面參数w,b时。这些点相应的
αj=0
。所以对參数没有影响。仅仅有支持向量,即落在
wTx+b=±1
上数据影响着最优超平面的计算。

2.线性支持向量机
以上讨论的内容是建立在数据是线性可分的情况。即存在一个分离超平面能够把训练数据分为两部分。实际上数据并不会这么理想,例如以下图所看到的。即存在某些样本点不能满足函数间隔大于等于1这个条件。

这时能够为每一个数据点设置一个松弛因子
ξi≥0
,使得函数间隔
γi
加上松弛因子
ξi
大于等于1.即
y(i)(wTx(i)+w0)≥1−ξi
,同一时候对每一个松弛因子
ξi
支付一个代价
ξi
。由此原始问题变为:
C称为惩处參数(C>0)。C值越大对误分类的惩处越大。因为当C为无穷大时,即成为了线性可分问题。
採用与线性可分同样的过程。建立拉格朗日函数:



由对偶函数得。首先分别对
w,b,ξi
求偏倒数,并令为0,能够得到上面右式,带回到拉格朗日函数中,因为
μi≥0
,且
αi=C−μi
,所以有:
由上述KKT条件能够得到:


3.非线性支持向量机
3.1 概念
如上图所看到的,原始样本数据线性不可分,即无法用一条直线或分离超平面将两类分开。
可是对原始数据採用非线性变换
ϕ(x)
,非线性变换将原始数据从低维映射到高维,高维上数据就可能变得线性可分。
步骤:首先使用非线性变换将原始数据集映射到新空间中。称为特征空间,在特征空间中数据将变的线性可分,然后採用线性支持向量机的方法训练分离超平面參数。
但在高维上计算量会急剧增大。会造成维数灾难,自然引入核技巧(kernal trick)。
3.2 核技巧
观察线性支持向量机的对偶问题为:
上述目标函数中。仅仅包括原始数据的内积形式
<x(i),x(j)>=(x(i))T(x(j))
。
由上述分析,仅仅须要找到一个合适的非线性变换
ϕ(x)
,将原始数据
x(i)
映射到高维特征空间
ϕ(x(i))
中。内积形式变为为
<ϕ(x(i)),ϕ(x(j))>
。
定义核函数
K(x,z)=ϕ(x)Tϕ(z)
。表示两个原始数据
x,z
分别变换到特征空间中的内积值。
核技巧的方法即不用构造非线性映射
ϕ(x)
而直接给定一个核函数
K(x,z)
,降低了计算量。如以下样例一个核函数等于两个非线性变换的内积:
Eg:x,z∈Rn, K(x,z)=(xTz)2=∑i,j=1n(xixj)(zizj),对应ϕ(x)=(x1x1,x1x2...,x1xn,x2x1,...xnxn)T
经常使用几个核函数:
多项式核函数:K(x,z)=(xTz+1)q,q>0
高斯核函数:K(x,z)=exp(−||x−z||22σ2),称为高斯径向基函数分类器,即上面图中採用方法
双曲正切函数:K(x,z)=tanh(βxTz+γ)。为满足Mercer定理,一组可能的參数β=2,γ=1
4.SVM后验概率输出
SVM分类器中判决函数
y^=sign(f(x))=sign(wTx+b)
。能够採用f(x)与sigmoid函数结合。把
f(x)=wTx+b
解释成
y=1
的对数几率,SVM分类器概率输出(Platt 2000):
p(y^=1|x)=σ(Af(x)+B)
參数A,B通过最大释然的方法求解,为防止过拟合。求解A,B參数的样本数据应独立于训练分类的样本。因为在训练分类器阶段,没有考虑后验概率的问题,因此SVM后验概率结果不可靠。
5.几种损失函数的比較
如图:0-1损失是二分类问题的真正损失函数,合页损失与logistic损失是对0-1的损失函数的近似。最小二乘损失强化了分类点在正确分类边界处。
5.1合页损失函数
对于线性支持向量机。目标函数是最小化
12||w||2+C∑mi=1ξi
,当中
ξi
为每一个样本支付的代价;能够定义
ξi=[1−y(i)(wTx(i)+b)]+
;下标’+’表示取正值函数。假设
z>0,[z]+=z;否则[z]+=0
,因此目标函数能够定义为:
minw,b ∑i=1m[1−y(i)(wTx(i)+b)]++λ||w||2
第一项关于被称为经验损失,定义
z=y(i)(wTx(i)+b)
;损失函数为
E(z)=[1−z]+
。如上图所看到的,因为图形像一个合页,被称为合页损失。
上述目标函数中。当λ=12C时。等价于原目标函数12||w||2+C∑i=1mξi
5.2logistic回归损失
为了方便叙述,改变一下标记方法。记原始样本数据为
(xi,ti)。t∈[1,−1]
,模型预測值为
y(xi)=wTxi+b
。结合sigmoid函数。能够把
y(xi)
带入sigmoid函数中,后验概率输出。
即
p(t=1|y)=σ(y)
,则
p(t=−1|y)=1−σ(y)=σ(−y)
。综上两种情况
p(t|y)=σ(ty)
。
採用最大似然函数:
目标函数能够定义为对数似然的负数。同一时候加上一个二次正则化因子。
∑i=1mln[1+exp(−yiti)]+λ||w||2
第一项即为logistic回归损失函数
ELR(yt)=ln[1+exp(−yt)]
5.3最小二乘损失
与线下回归相似,能够採用最小二乘损失作为目标函数:
∑i=1m(yi−ti)2+λ||w||2
6.SVM多分类问题

1.one-versus-the-rest
对于K个类别的问题。在训练样本上,採用SVM训练出K个分类器。每一个分类器将训练样本分成
Ki
类与非
Ki
类,然后採用SVM训练出模型。如上图所看到的,每一个分类器仅仅能回答是否属于
Ki
的答案。此种方法会造成一个样本数据属于多个类别的情况,上左图阴影部分。
也能够採用:
y(x)=maxk yk(x)
,即採用最大的函数间隔的那个类别。但不同的分类器有可能尺度不同样,函数距离自然不能作为推断标准。
同一时候,训练样本的不平衡也可能造成分类器有误差。
2.one-versus-one
在K分类的情况下,训练出
K(K−1)2
个分类器,即每两个类别训练出一个分类器,然后依据
K(K−1)2
个分类器的结果,採用投票方法给出预測结果。
此种方法依旧造成部分数据不属于不论什么类的问题,上右图阴影部分所看到的。
3.其它方法
1.一次训练K分类的SVM。
參数多。复杂度高;(Weston and Watkins 1999)
2.DAGSVM ;(Platt 2000)
參考:
1. PRML
2. MLAPP
3. CS 229-Andrew Ng