机器学习系列-支持向量机

支持向量机

支持向量机(SVM)是基于统计学习理论的一种机器学习方法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的。通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。

给定训练样本集\(D={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)},y_i\in{-1,1}\)。分类就是在样本空间找到一个划分超平面\(w^Tx+b=0\),将不同类别的样本分开。但这样的平面可能有很多,我们应该努力的找到哪一个?
这里写图片描述
位于两类训练样本正中间的划分超平面,因为该划分超平面对训练样本局部扰动的容忍性最好。所以样本空间的任意点\(x\)到超平面\((w,b)\)的距离为:\(r = \frac{| w^Tx+b |}{||w||}\)假设超平面能够将训练样本正确分类。

\[ \left \{\begin{array}{lr} w^Tx+b\geq1, y_i=1;\\ w^Tx+b\leq -1, y_i=-1;\ \end{array} \right.\]

这里写图片描述

距离超平面最近的几个训练样本使上面式子成立。它们被称为支持向量,两个异类支持向量到超平面的和为\(\gamma=\frac{2}{||w||}\)

想找到最大间隔的划分超平面,也就是找到

\[max_{w,b} \frac{2}{||w||}$$ $$s.t. y_i(w^Tx_i+b)\geq1,i=1,2,...,m \]

再转化\(min_{w,b} \frac{1}{2}||w||^2\),\(s.t. y_i(w^Tx_i+b)\geq1,i=1,2,...,m\)

转化到这个形式后,我们的问题成为了一个凸优化问题,或者更具体的说,因为现在的目标函数是二次的,约束条件是线性的,所以它是一个凸二次规划问题。这个问题可以用任何现成的 QP (Quadratic Programming) 的优化包进行求解,归结为一句话即是:在一定的约束条件下,目标最优,损失最小;但虽然这个问题确实是一个标准的 QP 问题,但是它也有它的特殊结构,通过 Lagrange Duality 变换到对偶变量 (dual variable) 的优化问题之后,可以找到一种更加有效的方法来进行求解,而且通常情况下这种方法比直接使用通用的 QP 优化包进行优化要高效得多。通过给每一个约束条件加上一个 Lagrange multiplier(拉格朗日乘值),即引入拉格朗日乘子,如此我们便可以通过拉格朗日函数将约束条件融和到目标函数里去:

\[\theta(w)=max_{\alpha \geq 0} \zeta(w,b,\alpha)=\frac{1}{2}||w||^2-\sum_{i=1}^m\alpha_i(y_i(w^T x_i+b)-1)$$ 因此对偶函数的目标函数就变成了: $$min{w,b}\theta(w) = max_{\alpha \geq 0} min{w,b} \zeta(w,b,\alpha) \]

利用求导获取得到

\[max_\alpha \sum_{i=1}^m\alpha_i-\frac{1}{2} \sum_{i,j=1}^my^{(i)}y^{(j)}\alpha_i\alpha_jx^{(i)} \]

\[s.t. 0\leq \alpha_i \leq C,i=1,2,...,m \]

\[\sum_{i}^m\alpha_iy^{(i)}=0 \]

实际上,关于的求解可以用一种快速学习算法即SMO算法.到目前为止,我们的 SVM 还比较弱,只能处理线性的情况。

我们已经了解到了SVM处理线性可分的情况,而对于非线性的情况,SVM 的处理方法是选择一个核函数 \(K(.,.)\),通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题。由于核函数的优良品质,这样的非线性扩展在计算量上并没有比原来复杂多少,这一点是非常难得的。当然,这要归功于核方法——除了 SVM 之外,任何将计算表示为数据点的内积的方法,都可以使用核方法进行非线性扩展。在线性不可分的情况下,支持向量机通过某种事先选择的非线性映射(核函数)将输入变量映射到一个高维特征空间,在这个空间中构造最优分类超平面。我们使用SVM进行数据集分类工作的过程首先是同预先选定的一些非线性映射将输入空间映射到高维特征空间。
这里写图片描述
由前面可得参数\(w= \sum_{i}^m \alpha_i y_i x_i\)。因此分类函数为\(f(x)=(\sum_{i}^m \alpha_i y_i x_i)^T x+b=\sum_{i}^m \alpha_i y_i <x_i,x>+b\)。事实上,所有不是支持向量的点所对应的系数\(\alpha\)都是等于零,因此对于新点的内积计算实际上只要针对少量的“支持向量”而不是所有的训练数据即可。核函数之前,如果用原始的方法,那么在用线性学习器学习一个非线性关系,需要选择一个非线性特征集,并且将数据写成新的表达形式,这等价于应用一个固定的非线性映射,将数据映射到特征空间,在特征空间中使用线性学习器,因此,考虑的假设集是这种类型的函数:

\[f(x)=(w)^T Φ_i(x)+b$$ 这里$ϕ:X->F$是从输入空间到某个特征空间的映射,这意味着建立非线性学习器分为两步:首先使用一个非线性映射将数据变换到一个特征空间F,然后在特征空间使用线性学习器分类。因此决策规则就改变为$f(x)=\sum_{i}^m \alpha_i y_i <Φ(x_i),Φ(x)>+b$核是一个函数$K$,对所有$x$,$z$满足 $$K(x,z)= <Φ(x),Φ(z)>\]

这里\(Φ\)是从\(X\)到内积特征空间\(F\)的映射。

SVM的优缺点

SVM的优点

  1. 非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高维空间的非线性映射;
  2. 对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方法的核心;
  3. 支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支持向量。
  4. SVM 是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度及大数定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的“转导推理”,大大简化了通常的分类和回归等问题。
  5. SVM 的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。
  6. 少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。

SVM的缺点

  1. SVM算法对大规模训练样本难以实施,由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。针对以上问题的主要改进有有J.Platt的SMO算法、T.Joachims的SVM、C.J.C.Burges等的PCGC、张学工的CSVM以及O.L.Mangasarian等的SOR算法。
  2. 用SVM解决多分类问题存在困难。经典的支持向量机算法只给出了二类分类的算法,而在数据挖掘的实际应用中,一般要解决多类的分类问题。可以通过多个二类支持向量机的组合来解决。主要有一对多组合模式、一对一组合模式和SVM决策树;再就是通过构造多个分类器的组合来解决。主要原理是克服SVM固有的缺点,结合其他算法的优势,解决多类问题的分类精度。如:与粗集理论结合,形成一种优势互补的多类问题的组合分类器。
posted @ 2018-01-03 11:07  bubingy  阅读(318)  评论(0编辑  收藏  举报