SVM 透彻理解与分析

hit2015spring

欢迎关注我的博客:http://blog.csdn.NET/hit2015spring

支持向量机问题
问题先按照几何间隔最大化的原则引出他的问题为

minw,b12w2
s.t.yi(wTxi+b)1,i=1,2,,m

上面的约束条件就是一个不等式约束,
可以写成
01yi(wTxi+b),i=1,2,,m

这个是SVM的基本型,或者说是原始问题,寻找这个问题的解法就是需要一些数学的理论,当然在寻找这个解法的过程中,就陆续展开了对于SVM中条件的物理含义的一些解释。

解决该问题,用拉格朗日乘子法和KKT条件导出他的对偶问题,通过解决他的对偶问题,从而解决原始问题。这里面包含的知识有:拉格朗日乘子,kkt条件,对偶理论,凸优化,线性代数,高等数学。当然上面这些是理论上的证明解的存在和解的方向,在求解出真正能用的模型还需要数值分析的一些优化方法,如:牛顿法,梯度下降。。。。。。

首先解决引出他的对偶问题:

对它引入拉格朗日乘子,参考KKT条件和拉格朗日乘子法即对上式添加拉格朗日乘子 αi0 该问题的拉格朗日函数可以写成:
L(w,b,α)=12w2+i=1mαi(1yi(wTxi+b))

对偶问题

先定义一个概念:Wolfe对偶:定义问题 (1)(3) 是凸优化问题 (4)(5) 的对偶

maxα,xxL(x,α)(1)

s.t.xL(x,α)=0(2)

α>0(3)

这里的 L(x,α) f(x) 的拉格朗日函数

minf(x)(4)

s.t.ci(x)0,i=1,2,3,p(5)

再定义一个概念:约束规格:
考虑一般约束问题

minf(x)s.t.c(x)=0c(x)0(6)

在式(6)的可行域 D={x|ci(x)0,i=1,,p;ci(x)=0,i=p+1,,p+q} ,在这 p+q 个约束函数 c1(x),,cp+q(x) 都是可微函数,引进下列两种对约束的限制性条件(约束规格)
1、线性条件: p+q 个约束函数都是线性函数
2、梯度无关条件:梯度向量集 {ci(x¯)|iA¯} 线性无关,其中 A¯ x¯ 处的有效集

在这里引入一个定理: Wolfe对偶定理:
考虑连续可微的凸优化问题 (4)(5) ,其中 f 和每一个ci都是连续可微的凸函数,且定义约束规格中的任意一个约束规格成立,则有以下的:
(1)若原始问题 (4)(5) 有解,则它的Wolfe对偶问题 (1)(3) 有解
(2)若原始问题和它的Wolfe对偶问题分别有可行解 x¯α¯ ,则这两个解分别为原始问题和对偶问题最优解的充要条件是它们相应的原始问题和对偶问题的目标函数值相等

对其原始问题引入式 (1)(3) 中的对偶问题(拉格朗日函数的极大极小)
令拉格朗日函数对 w,b 求偏导数,并令他们等于0

w=i=1mαiyixi0=i=1mαiyi(7)

把式(7)中的两个代入原始的拉格朗日函数可得到式:

12w2w2+i=1mαi+i=1mαiyib(8)

故得到了SVM基本型的对偶问题为:

maxαi=1mαi12i=1mj=1mαiαjyiyjxTixjs.t.i=1mαiyi=0αi0,i=1,2,,m(9)

上面的对偶问题,对于它求解是可以做到的,这里面的解法涉及到了数值分析中的一些问题。
由Wolfe定理可以知道,只要解决了这个对偶问题之后,我们便可以得到原始问题的解,因为原始问题的解可以通过对偶问题的解得到,于

求解出 α 后在求出 w b

f(x)=wTx+b=i=1mαiyixTix+b(10)

下面是对于在求解过程中的一些物理含义的解释,可以更加具体的理解一下SVM就是支持向量的含义:

由对偶问题解出的 αi 是拉格朗日乘子,对应着训练样本 (xi,yi) ,而且需要满足KKT条件,于是就有下式,参考KKT条件和拉格朗日乘子法

αi0yif(xi)10αi(yif(xi)1)=0(11)

这里写图片描述

这里解释了支持向量贡献了超平面的计算和非支持向量对超平面没有影响之间的关系

拉格朗日对偶的引入是为求解svm提供途径,kkt条件是svm存在解的充要条件。只要求出解,就得满足kkt条件

线性支持向量机与软间隔

在支持向量机中,解决线性不可分问题主要有两种方法:硬间隔核函数空间映射,线性软间隔,一般作用的时候是两者结合起来。

在线性可分的的情况下,支持向量机要求所有的点都要满足约束条件,但是事情往往没有那么完美的满足,在线性不可分的情况下,并不是所有的点都会满足,为了解决这个问题,就引入了一个惩罚项,这个惩罚项对不满足约束条件 yi(wxi+b)1 进行惩罚处理。这里引入一个松弛变量 ζi ,直观的可以看一下,我们对在分类问题中进行一些调整了,就是把约束条件放宽,原本的约束条件 yi(wxi+b)1 转化为: yi(wxi+b)1ζi .当然引入了松弛条件,这时候付出的代价当然要进行相应的调整了,于是我们对分类错误或者分类的效果不满意的点进行了惩罚处理。
这个惩罚处理就体现在了最终需要优化的目标函数当中:软间隔的svm需要优化的目标函数就是:

minw,b,ζ12w2+Ci=1mζi(12)

这里的C就是权衡一下坏点所占有的比重,当 C 时,那时候就强制要求所有的样例点都要满足约束条件,于是上面的问题就转化为一个硬间隔的svm。对式(12)进行优化,代表着两层含义:使得间隔尽量大,同时使得分类点的个数尽量少。

于是软间隔的SVM的原始问题可以描述成下式

minw,b,ζ12w2+Ci=1mζis.t.yi(wxi+b)1ζiζi0,i=1,2,,m(13)

式(13)是一个凸二次规划问题,在这里面可以证明得到 w 的解是唯一的,而b的解是不唯一的, b 的解存在于一个区间中,具体证明见书《数据挖掘中的新方法——支持向量机》,当然为了求解式(13)的问题,我们同样要通过求解其对偶问题,从而得到该问题的解。
同样引入拉格朗日函数

L(w,b,ζ,α,μ)=12w2+Ci=1mζii=1mαi(yi(wTxi+b)1+ζi)i=1mμiζi(14)

对偶问题是拉格朗日的极大极小问题,同样先要求关于 w,b,ζ 的极小

wL(w,b,ζ,α,μ)=wi=1mαiyixi=0
bL(w,b,ζ,α,μ)=i=1mαiyi=0
ζiL(w,b,ζ,α,μ)=Cαiμi=0

可得到

w=i=1mαiyixi(15)

i=1mαiyi=0(16)

Cαiμi=0(17)

上面三个式子代入(14)可得到

minw,b,ζL(w,b,ζ,α,μ)=i=1mαi12i=1mj=1mαiαjyiyjxTixj(18)

再对 minw,b,ζL(w,b,ζ,α,μ) α 的极大,即可得到对偶问题

maxαi=1mαi12i=1mj=1mαiαjyiyjxTixjs.t.i=1mαiyi=0Cαiμi=0αi0μi0,i=1,2,,m(19)

对约束条件进行转换,消去 μi 从而只留下 αi ,即后面三个约束条件变为
0αIC
对偶问题就转为:

maxαi=1mαi12i=1mj=1mαiαjyiyjxTixjs.t.i=1mαiyi=00αiCi=1,2,,m(20)

这里继续讨论软间隔的SVM的kkt条件,该优化问题具体的kkt条件和原始的KKT条件进行比对理解

KKT条件对比理解

损失函数

在软间隔的SVM中引入惩罚项对间隔进行软化,其实惩罚项的系数C含义是权衡惩罚项的比重,但是后面具体的惩罚项只是用一个 ζ 来表示,却要经过选取,具体的定义就是损失函数

损失函数是评价预测准确度的一种度量,预测:某个假设推断出的结果,损失函数是与假设密切相关的。
常见的损失函数:

0-1损失函数:这里写图片描述
此时软间隔的优化函数为:

minw,b,ζ12w2+Ci=1ml0/1(yi(wTxi+b)1)(21)

ϵ 不敏感损失函数
hinge损失函数 : l(z)=max[0,1z] ,此时的优化函数为:
minw,b,ζ12w2+Ci=1mmax[0,1yi(wTxi+b)](22)

指数损失函数: l(z)=ez
对率损失函数: l(z)=log(1+ez)

在这里证明一下如果在软间隔的SVM中,该原始问题采用的是式(23)的话,

minw,b,ζ12w2+Ci=1mζis.t.yi(wxi+b)1ζiζi0,i=1,2,,m(23)

那么其实他的损失函数就是用hinge函数,该函数的作用后面会提,先来证明一下:参考《统计学习方法》李航P114

证明:线性支持向量机原始最优化问题式(23)等价于最优化问题 minw,bλw2+i=1mmax[0,1yi(wTxi+b)]

证明:令 ζi=max[0,1yi(wTxi+b)]
1yi(wTxi+b)>0
1yi(wTxi+b)=ζi
1yi(wTxi+b)0
ζi=0
1yi(wTxi+b)ζi
yi(wTxi+b)1ζi
故满足式(23)的约束条件:
s.t.yi(wxi+b)1ζi ζi0,i=1,2,,m
最优化问题 minw,bλw2+i=1mmax[0,1yi(wTxi+b)] 可以写成:

minw,bλw2+i=1mζi
λ=12C 可以得到:
minw,b1C(12w2+Ci=1mζi)
命题得证

所以在用线性支持向量机的时候,我们其实默认的损失函数就是hinge损失函数,它和其他损失函数的图像如下图所示

几种损失函数的图像

支持向量
这里又要说到支持向量的概念了,在求解线性支持向量中我们需要满足KKT条件下对问题进行优化,在上述我们给过那个图

KKT条件对比理解

软间隔zhi支持向量图示

对于任意的训练样本 (xi,yi) 总有 αi=0 或者 yif(xi)=1ζi .当 αi=0 时,则该样本不会对结果 f(x) 产生影响;当 0<αiC 时,则 yif(xi)=1ζi ,这时候的样本会对结果产生影响,即样本就是支持向量。此时分为两种情况看
1 ,当 0<αi<C 时,此时由约束条件 C=αi+μi 得到, μi>0 , ζi=0 此时样本落在间隔的边界上面。这时候损失函数是0

2 ,当 αi=C 时,此时由约束条件 C=αi+μi 得到, μi=0 , ζi1 时,此时样本落在间隔的内部,即两个间隔之间。当 ζi>1 时,此时样本错误分类。这时候损失函数起作用,根据样本点的分类情况而定。

所以从上述可以看出对于最终结果的影响是支持向量在起作用,当然这个作用的大小主要看的是该点被分类的效果,因为从合页损失函数的图像来看,只有当分类的效果即 ζileq0 的时候,此时的分类效果正好,不被惩罚即损失为0,在分类的效果不好的时候此时的惩罚项起作用,即损失不为0.所以合页函数不仅要分的正确,还要分的具有足够高的置信度,还有因为合页函数在 yi(wTxi+b)>1 上面为0了,就保证了svm解的稀疏性,就是在分类很正确的情况下,该样本是不会对决策函数产生影响的。大于1的时候损失为0,退化为硬间隔的情况,硬间隔的情况下又因为分类正确,且不是在边界上的点,于是就不起作用了。

合页损失函数
当然我们可以把合页损失函数用另外的损失来替换,例如把he页函数替换为对率的时候,这时候由于对率函数连续光滑,这样就算是在后面分类正确的情况下,还是会产生损失,由此这样的点还是会对模型的构建产生影响,于是就是得不到关于支持向量概念的东西。其实这时候的模型会变为一个对率回归的模型。
正如上述,损失函数的性质直接对模型的性质产生影响,由此我们可以用一个更加简洁的方式来表达一下目标函数:

minfΩ(f)+Ci=1ml(f(xi),yi)(24)

式24的第一项表示这个模型的一些属性,固有属性,是根据先验知识得到的,第二项是这个模型在这个训练集上面的误差项,这里的误差项表示着经验风险,当然我们希望在训练集上面的误差很小,有一种办法就是构造出很完美的第一项出来,它对数据的描述很精确,但是又不希望模型对于这个训练集过度精确的描述,以至于把一些不是通用的特征都学进去。所以我们需要优化的是这两个矛盾的一种同一。所以很多的学习任务,能把优化的目标函数写出来,那才是王道。具体见描述20 万、50 万、100 万年薪的算法工程师在能力素质模型上有哪些差距?

VC维概念的理解

VC维

我们在对一个问题进行学习的时候,会得到一些问题的决策函数 f(x) ,但是决策函数是不唯一的,这些决策函数构成的集合就叫做假设集,用 F 来表示。我们通常是从这个假设集里面找一个使得经验风险最小的 f(x) 来作为决策函数。
vc维是度量一个假设集 F 的表达能力的,对于VC维的定义:

先定义几个概念:
(1) N(F,Zm) :这个概念是表示:
设:

1、 F 是一个假设集,理解为决策函数的集合,它们在 XR 上取值为-1或者+1
2、 Zm=x1,,xm 就是 X 空间里面的m个点构成的集合

Zm 中的每一个点代入 F 中的一个函数 fm(x) ,得到一个m维的向量(f(x_1,\cdots,f(x_m))),其实这个向量就是-1和+1构成的向量,当把 F 里面的所有的 f 都取到后,所得到的不同的m维向量的个数就是N(F,Zm)

打散:还是上面的 F Zm ,如果 N(F,Zm)=2m 就称为 Zm F 打散

打散其实可以这样理解:
![enter description here][2]

看上面的图,上面的 F 是二维空间上的线性指示函数
F=f(x,α)=sgn(α2[x]2+α1[x]1+α0)

Z3=x1,x2,x3 ,上面的图中, Z3 F 打散,就是如上图所示,当取不同的 f 的时候,那三个点的决策值是不一样的值,可以取编23=8种情况,这样就能说明, Zm F 打散

增长函数 N(F,m) :
N(F,m)=maxN(F,Zm)|ZmX

VC维表示的是在空间 X 中能打散的最多的点数。这里的最多是存在性问题。

其实有一个结论:在 n 维空间中x=([x]1,[x]2,,[x]n)T中的线性指示函数集合,它的VC维是 n+1 (反正在求职过程中考过这个问题(某互联网大厂))

支持向量机的总体理解

支持向量机的理论基础是统计学习理论,其实它就是一个结构风险最小化的近似实现,结构风险相当于期望风险的一个上界,它是经验风险和置信区间的和,经验风险依赖于决策函数 f 的选取,但是置信区间是,F的VC维的增函数,两者是矛盾的。矛盾体现在:当VC维数变大的时候可以选到更好的 f <script type="math/tex" id="MathJax-Element-151">f</script>使得经验风险比较小,但是此时的置信区间比较大

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页