SVM支持向量机

来源:互联网 发布:文华源码函数 编辑:程序博客网 时间:2024/06/05 07:56

SVM支持向量机

“支持向量”:指的是训练集中最靠近分类决策面,最难分类的数据点。
“机”:即机器machine,实际上是一个算法。在机器学习领域常把一些算法看做一个机器(或学习机器、预测函数、学习函数等)。

SVM是一种有监督的学习方法,即已知训练点的类别,求训练点与类别之间的对应关系。
SVM主要针对小样本数据进行学习、分类和预测(回归),类似的根据样本学习的方法还有基于案例的推理(case-based reasoning),决策树归纳算法等。

  • 1.1 支持向量机的理论基础
    1.1.1 经验风险最优ERM
    1.1.2 关键定理与VC维
    1.1.3 结构风险最优SRM
  • 1.2 SVM的数学推导
    1.2.1 最大间隔超平面
    1.2.2 拉格朗日乘子法
    1.2.3 KKT条件与对偶变换
    1.2.4 分类器函数
    1.2.5 映射到高维空间
    1.2.6 核函数法
    1.2.7 离群点的松弛变量
  • 1.3 SMO算法

1.1 支持向量机的理论基础

支持向量机以统计学习为理论基础,解决了第二代神经网络的结构选择和局部最小值(过拟合、欠拟合)等问题。

统计学习理论从统计学的角度证明了有限样本的经验风险与真实风险之间的差异,并首次引入了置信区间的概念,创建了结构风险最优理论,为各类机器学习算法提供了统一的评估框架。

1.1.1 经验风险最优ERM

首先我们可以从总体样本的概念出发,我们将总体引申理解为客观事物(系统)本身,在统计学中我们可以把总体理解为一个概率分布,我们要了解这个真实分布是困难的(实际是不可能的),所以我们从总体中抽取具有代表性的对象,成为总体的样本

我们将样本的分布作为事物总体的近似模型或经验模型。用风险代表经验模型与真实模型之间的误差。
如果一个分类器将经验模型的分布作为总体的分布,我们就称这个分类器的误差为经验风险
为了方便,我们用损失函数(Loss Function)来进行评估。
假设样本:(x1,y1),...,(xn,yn)Rn×R,对于离散样本的经验函数可以写作:

Remp(α)=1ni=1nL(yi,f(xi,α))

其中Remp(α)就是所谓的经验风险。f(xi,α)是用来最小化经验风险的目标函数,L(yi,f(xi,α))就是损失函数,它代表对于每个xi,其标签yi与目标函数之间的偏差。
例如BP神经网络中的全局误差函数,梯度下降法中的斜率与截距的变化等。

在第二代神经网络中,我们用最小经验风险来表示真实风险,这就是经验风险最小原则ERM,神经网络将经验风险最小化作为衡量算法准确性的主要依据。我们发现这样并不能达到全局最优的分类效果,容易造成过拟合现象(原因有二:一样本代表性不强;二学习算法理论不完备,即评估真实风险的方法不完备)。

– 过拟合/过学习问题:训练误差过小导致推广能力下降,即真实风险的增加。
– 推广能力/泛化能力:就是对未知样本进行预测时的精确度。

为了解决这些问题——>统计学方法——>学习一致性问题。

1.1.2 关键定理和VC维

学习一致性问题:解决经验风险与真实风险的衡量问题。
统计学习的第一定义/学习一致性的定义
如果一个ERM算法能够提供一个函数集Q(x,α)能够是的真实风险和经验风险都收敛于R(α)的下确界,则这个ERM算法符合学习一致性。
真实风险与经验风险
ps:类似上图

学习理论的关键定理

关键定理将学习一致性问题转化为一个收敛问题。通过经验风险最小化函数来逼近真实(期望)风险的最小化函数。即,经验风险最小化原则符合学习过程一致性的条件是,Q(x,α)函数集中最差的那个函数。
用来度量的方法就是VC维


VC维的定义:假设存在一个有h个样本的样本集能被一个函数集中的函数按照所有可能的2h种形式分为两类,则此函数集能够把样本数为h的样本集打散。也就是说,如果存在h个样本的样本集能够被函数集打散,但是不存在h+1个样本能被打散,则函数集的VC维就是h。

VC维的重要性在于为判定线性可分和线性不可分问题提供了衡量依据。
一个数据集如果线性可分,则维度为样本空间维度d;
如果线性不可分,对于线性分类器(含指示函数),它的维度至少等于其VC维h=d+1。

因此,VC维度越大,非线性程度越高,学习机器的复杂度越高。

1.1.3 结构风险最优SRM

结构风险最小化SRM(structured risk minimize)就是同时考虑经验风险与结构风险。在小样本情况下,取得比较好的分类效果。保证分类精度(经验风险)的同时,降低学习机器的 VC 维,可以使学习机器在整个样本集上的期望风险得到控制,这应该就是SRM的原则。

当训练样本给定时,分类间隔越大,则对应的分类超平面集合的 VC 维就越小。(分类间隔的要求,对VC维的影响)

结构风险:经验风险 + 置信风险

R(α)Remp(α)+ϕ(n/h)

根据结构风险最小化原则,前者是保证经验风险(经验风险和期望风险依赖于学习机器函数集的选择)最小,而后者使分类间隔最大,导致 VC 维最小,实际上就是使推广能力的界(根据经验风险最小化原则得到的学习机器的推广能力)中的置信范围最小,从而达到使真实风险最小。

结构风险最小化原则即,在经验风险与置信区间之和最小的子集中选择经验风险最小的函数。

这个原则的难点在于如何构造函数子集的结构。

1.2 SVM的数学推导

1.2.1 最大间隔超平面

SVM最基本的应用是分类。 求解最优的分类面,然后用于分类。

最优分类面的定义:
对于SVM,存在一个分类面,两个点集到此平面的最小距离最大,两个点集中的边缘点到此平面的距离最大。——即,找到最大间隔超平面,从而对分类问题提供良好的泛化能力。

从直观上来看,下图左边的,肯定不是最优分类面;而右边的能让人感觉到其距离更大,使用的支撑点更多,至少使用了三个分类面,应该是最优分类面。
最大间隔超平面

因此,求解目标为找到一个超平面,距离两类数据间隔最大。
设训练数据:x1,x2,...xnRn。分类超平面表示为:

wTx+b=0

点到面的距离可以表示为:
wTx+b||w||

其中,wxb都为向量。||w||w的范数。
从而判别函数为
g(x)=r||w0||=wT0x+b0

可以转换表达如下:
考虑P个线性可分样本{(x1,y1),(x2,y2),...,(xp,yp),...(xP,yP)},对于任一输入样本xp,期望输出为yp=±1(代表两类类别标识)。
激活(传递)函数\预测函数:y=f(x)=sgn(wTx+b)
wTx+b>0yp=+1
wTx+b<0yp=1

wTx+b=0,即为要寻找的最大间隔超平面。
最佳分类超平面

H1y(wTx+b)=+1H2y(wTx+b)=1上面的点即为支持向量。
最大间隔即求H1H2之间的间隔最大:

|b1(b+1)||w|=2||w||

因此,分离边缘最大化也就是权值向量的范数||w||最小化。其中x的范数:||x||=|x1|+|x2|+...+|xn|

最终,可以将问题写成如下最优化的形式:

max2||w||
s.t.y(wTx+b1)

1.2.2 拉格朗日乘子法

为了求解方便,我们将最优化形式进行转化:

max2||w||=>min||w||=>min||w||22=>min12wTw

由于范数和指数函数都是凸函数,因此,这个优化问题是一个凸优化问题,局部最优就是全局最优。
经过转化,原问题转化为:

min||w||22
s.t.y(wTx+b)1

该约束优化问题,代价函数是w的凸函数,并且关于w的约束条件是线性的,因此,可以用拉格朗日乘子法求解。
minL(w,λ,b)=12wTwi=1nλi(yi(wTxi+b)1)()

其中变量为w,b,λ。其中λ为拉格朗日乘子,x为训练样本。

上式中,第一项为代价函数,第二项非负,因此最小化代价函数,也就是求拉格朗日函数的最小值。也就是第一项,第二项

1.2.3 KKT条件与对偶变换

为了使第一项最小化,将(*)式对w和b求偏导,使其结果为0.

L(w,λ,b)b=i=1nλiyi=0
L(w,λ,b)w=wi=1nλiyixi=0

将上面两个式子带入(*)式中,可以得到

L(w,λ,b)=i=1nλi12(i,j=1nλiλjyiyjxTixj)

成功将最小化L(w,λ,b)问题转化为一个最大化函数Q(λ)的对偶问题。即,
给定{(x1,y1),(x2,y2),...,(xp,yp),...(xP,yP)},使Q(λ)为最大值的拉格朗日系数λ1,λ2,...,λp,并满足约束条件
p=1pλpyp=0λp>0

以上为不等式约束的二次函数极值问题(QP)。
由Kuhn Tucher定理知,Q(λ)的最优解必须满足以下最优化条件(KKT条件):

λp[(wTxp+b)yp1]=0,p=1,2,...,P

上式等号成立的两种情况:
一是λp为零;
另一种是(wTxp+b)yp=1
第二种情况仅对应于样本为支持向量。

1.2.4 分类器函数

Q(λ)的最优解为{λ01,λ02,...,λ0p},其中多数样本的拉格朗日系数为零,因此,可以得到最优权值向量为:

w0=p=1Pλ0pypxp=λ0pysxs

即,最优超平面的权向量是训练样本向量的线性组合,且只有支持向量影响最终的划分结果,如果去掉其他训练样本重新训练,得到的分类超平面相同。
最优偏置:

b0=1wT0xs

求解线性可分问题得到的最优分类判别函数(分类器函数)为:
f(x)=sgn[p=1Pλ0pyp(xp)Tx+b0]

由于P个输入向量中,只有若干个支持向量的拉格朗日系数不为0,因此计算复杂度取决于支持向量的个数。

对于线性可分数据,该判别函数对训练样本的分类误差为0,而对于非训练样本具有最佳泛化性能。

1.2.5 映射到高维空间

映射图

根据cover定理:将复杂的模式分类问题非线性地投射到高维特征空间可能是线性可分的,因此只要特征空间维度足够高,则原始模式空间能变换为一个新的高维特征空间,使得在特征空间中模式以较高的概率为线性可分的。就可以在该特征空间构造最优超平面进行模式分类,这个构造与内积核相关。

支持向量机算法就是以此为基础解决非线性可分的模式识别问题。
原分类器函数经过变换可以写为:

f(x)=p=1PλpypϕT(xp)ϕ(x)+b

ϕT(xp)ϕ(x)表示第p个输入向量xp在特征空间的像ϕ(xp)与输入向量x在特征空间的像ϕ(x)的内积。

这个映射过程的维度增长是呈爆炸性的,这对于ϕ()的计算是非常困难的。因此,若能找到一个函数K(),使得可以在特征空间中直接计算内积,这样就可以在特征空间建立超平面的时候无需进行高维映射变换。这种方法叫做核函数法

1.2.6 核函数法

我们把计算两个向量在隐式映射空间中的内积函数叫做核函数(Kernel Function)

f(x)=p=1Pλpypk(xp,x)+b

常用的核函数:
1.高斯核函数Gauss

k(x,xp)=exp(|xxp|22σ2)

采用该核函数的支持向量机是一种径向积函数分类器。
其中对σ参数的调控,过大,会导致高次特征上的权重衰减过快,核函数会蜕变为一个地维子空间;而过小,又容易导致过拟合问题。
2.多项式核函数
k(x,xp)=[(xxp)+1]q

采用该函数的支持向量机是一个q阶多项式分类器,其中q由用户决定。
3.线性核函数
k(x,xp)=<x,xp>

4.sigmoid核函数
k(x,xp)=tanh(k(xxp)+c

其中,tanh(x)=(exex)/(ex+ex)(双曲正切函数)
采用该函数的支持向量机实现的是一个单隐层感知器神经网络。

1.2.7 离群点的松弛变量

在进行非线性可分模式的分类时,会存在一些样本不能满足yp(wTxp+b)1的约束,从而会出现分类误差。
因此,这里引入松弛变量,适当放宽该约束:

yp(wTxp+b)1ξp

其中松弛变量ξp0,用于度量一个数据点对线性可分理想条件的偏离程度。数值越大,偏离正确的类别就越远。
因此,我们的新目标要满足,ξp的和最小,所以可以表示为以下形式
Cp=1Pξp+12||w||2

惩罚因子C表示离群点对目标函数的损失。无离群点时,C=0,C越大,对目标函数的损失越大。

同时,C的引入,也可以有效地解决数据偏斜问题。数据偏斜是指参与分类的两个类别的样本数量差异很大,这样会使得数量多的一侧把分类面想数量少的一侧推,这样会影响结果的准确性。而我们可以通过增大数量少的负类的惩罚因子来解决这个问题。

我们引入拉格朗日函数后,发现目标函数的表达式与线性可分的目标函数的表达式完全相同。

只是约束条件不同,线性可分情况下为λp0,而非线性可分情况下为0λpC

同时,满足Kuhn Tucher最优化条件为:

λp[(wTxp+b)yp1+ξp]=0

最终推导得到的w和b的最优解计算式及最优分类判别函数与线性可分情况完全相同。

1.3 SMO算法

SVM算法复杂导致训练速度较慢,其中的主要原因是在算法寻优过程中涉及大量的矩阵运算。
目前的改进算法都是基于循环迭代的思想,主要有3类改进算法。

  • 1.Vapnik等提出的块算法

  • 2.Qsuna等提出的分解算法

  • 3.Platt的SMO算法——应用最广!!

参考

  • http://blog.csdn.net/win_in_action/article/details/50716865

  • http://blog.csdn.net/u010159842/article/details/46493815

  • http://blog.csdn.net/alvine008/article/details/9097105

原创粉丝点击