机器学习教程 之 支持向量机:模型篇5–向量机的软间隔拓展

支持向量机是机器学习领域里最强的几种分类器之一,被广泛的运用于各种分类回归问题,如果不考虑集成学习算法以及近几年出现的深度学习算法,支持向量机的性能可以说是在学习领域具有统治地位,在一些中小型的数据集上它的性能甚至能够超过一些深度学习网络。其基本原理相当简单,但是模型的求解和优化却十分复杂,很难描述清楚,这里我会一步一步,尽我所能分章节的将它总结完善


模型篇

· 支持向量机:模型篇1–支持向量与间隔
· 支持向量机:模型篇2–支持向量的拉格朗日对偶
· 支持向量机:模型篇3–对偶问题的求解: SMO算法
· 支持向量机:模型篇4–核函数与非线性优化
· 支持向量机:模型篇5–向量机的软间隔拓展

代码篇

· 支持向量机:代码篇1-基于CVXPT优化函数求解
· 支持向量机:代码篇2-基于SMO算法求解


在前面几篇博客的讨论中,我们将向量机从原始问题转换到了对偶问题,再使用高效的SMO算法求解,还引入了核函数将模型拓展到了非线性的情况。
在上一篇博客的结尾处,提到了一个问题,那就是核函数的具体形式我们其实是无法得知的,只能尝试一些备选的核函数,从中挑出相对较好的一个。其实,在现实任务中,就算选择了一个相对较好的核函数,也很难使得训练样本在特征空间中是完全线性可分的。缓解该问题的一个办法就是允许支持向量机在一些训练样本上出错,从而达到在测试样本上性能提升的目的。在训练集上,未引入软间隔到引入软间隔的训练集分类变化如下

机器学习教程 之 支持向量机:模型篇5–向量机的软间隔拓展

第一篇博客中所说的,支持向量机的形式是要求所有训练样本均满足 yi(wTx+b)>=1 ,即在训练时,所有的样本都必须划分正确,这称为“硬间隔“。而所谓的“软间隔“,就是允许训练样本在训练时某些样本不满足约束 yi(wTx+b)>=1,当然,在最大化间隔时,不满足约束的样本应该尽可能的少,于是,支持向量机的原始优化目标可以重写为

minw,b12||w||2+Cmi=1l0/1(yi(wTxi+b)1)

上式中 C 是一个常数,l0/1 是 “0/1损失函数“

l0/1(z)={10ifz<0otherwise

显然,当C无穷大时,为了达到最小化的目标会迫使所有样本均满足约束,则此时软间隔等同于硬间隔。当C取有限值时,则允许一些样本不满足约束。


这里我们提到的 l0/1 “0/1损失函数“ ,一般情况下我们并不会使用这一函数,因为它的数学性质不太好存在非凸、不连续等因素,人们通常使用其它一些函数来代替 l0/1,比如

· hinge损失 lhinge(z)=max(0,1z)
· 指数损失 lexp(z)=exp(z)
· 对率损失 llog(z)=log(1+exp(z))


我们可以将引入松弛变量的优化目标简写为

objminw,b12||w||2+Cmi=1ξis.tyi(wTx+b)>=1ξiξi>=0,i=1,2,...,m

这就是常用的软间隔支持向量机,它的拉格朗日对偶形式为

maxani=1ai12ni,j=1aiajyiyjxTixj

s.t.C>=ai>=0,i=1,...,n

ni=1aiyi=0

对比原先的对偶问题我们可以看出,两者唯一的差别就在于对偶变量的约束不同:前者是 C>=ai>=0 ,后者是 ai>=0。我们在第三篇博客中用SMO算法所求解的模型就是软间隔支持向量机。
到此为止,我们就分五个章节介绍完了基本支持向量机的全部内容,当然在论文中还有很多关于向量机的拓展和改进,笔者学识有限,博文中难免会有错误和不当,欢迎大家的交流与指正