机器学习系列算法(三)

支持向量机

 

1、与Logistic回归做比较

Logistic回归下,模型的优劣准则即是的值;而该值正相关于“样本离的距离”,我们期望距离尽可能大。

如图所示。距离已经很远的样本,它们离直线是否再远一点已经meaningless(例如几乎没区别),而本身距离就很小的样本,使它们离直线再远一点就很有价值。

而Logistic回归是简单的将所有样本与的距离相加。这样便可能发生,以很近的样本减小距离为代价,换取远处的样本增加距离。这不科学。

支持向量机(SVM)就是因此引出的,它只考虑离分界面(即分界线,高维情况下这是个超平面)最近的样本;如果该样本都可以表现良好,那其它样本更不用说,这样便有理由认为模型很赞。

2、Lagrange乘子法求解等式约束的极值问题的原理

等式约束的极值问题如下:

Lagrange乘子法的步骤为:

①定义Lagrange函数

②对向量x的每一维&参数求偏导数,令偏导数为0。这样便求得了x的目标值,然后带入f(x)中便得到最大值。注意这里共有n+1个未知数(向量x有n个维度,还有)和n+1个"偏导数=0"的方程,正常情况下可以求解。

 

这里想说明的是,为什么这个方法可以求极值。

对f(x)做全微分得到:

当df(x)不能变动时,函数f(x)便取到极值。影响变动的因素有两个:梯度向量和微分向量dx。

微分向量dx代表在当前位置,函数将要移动的方向。无约束极值问题时,dx可以是任意方向;但有了约束就不一样,例如有这个约束:

那么就有:

此时函数的移动方向受到限制,只能沿这条直线移动。

梯度向量指示在当前位置,函数增加最快的方向及增加的量(就是),这个就不解释了。

在当前位置处,除非和微分dx垂直(若两者至少一个为0向量,也看做垂直);否则便不等于0,函数便没有达到极值。

因此f(x)的极值点处,必定有和dx垂直。

另一方面,考察约束G(x)=c,对其求全微分有:

因为G(x)=const,所以始终有。即任意点都有与dx垂直。

综合来看,极值点处,必定有:

刚好就是是Lagrange函数对向量的一阶导数为0的条件:

【Lagrange乘子法写作的形式并且令的依据就在于:极值点处平行】

 

3、Lagrange乘子法的扩展

一是扩展到多个等式约束。

在m个等式约束下,每个约束的梯度依旧与dx处处垂直,不解释;而目标函数f(x)也还是在极值点处与dx垂直。所以极值点处,与每个都平行,即存在线性关系。

因此,Lagrange函数写作:

二是扩展到不等式约束,如下:

此时,Lagrange函数不变,只是一阶条件有变化:

条件是想说,若为正数(内部点)时应当为0,这和等式约束是一样的;而为0(角点)时应当≤0。这称为互补松弛条件。

这个也是类似。为正时约束取等号,称为“紧约束”;为0时约束取不等号,称为“松约束”。

 

4、支持向量机的原始描述

Logistic回归的形式化描述如下:

注意这里的等价于

现在改用SVM了。首先,结果记作1&-1(不再是1&0);其次,改写为:

因此形式化描述为:

如前所述,我们期望的值尽可能是个大正数OR大负数,这样预测的置信度才高。

任一样本到分界面(即的超平面)的几何距离为:

这里根据样本是正类还是负类分别取1和-1;显见始终都是正值。

讲到SVM必然得提到“函数间隔”的概念。这也是人为定义的:

用它来衡量预测的置信度。之所以提出它,大概是因为这是最直观的衡量标准,不像集合间隔还得除以向量w的模。但是它带来一个问题是,w和b成倍增长的话,直线还是那个直线,但是函数间隔统统增大了,显得貌似训练效果提升了一样。这不科学。

已经得到了任一样本到分界面的几何间隔;因为SVM考察的是最小的那个间隔,因此可以描述为:

这里涉及凸优化,总之这个形式难以直接计算,需要做转换。首先用函数间隔改写;然后,因为计算出的w和b都是关于的表达式,而我们只需要确定的值,所以将其置1:

也就是将最靠近分界面的那个点与分界面的距离定义为。再做改写:

这样就是典型的二次规划问题了,可以方便的求解。

 

5、为什么叫“支持向量机”

分类模型的目标是找出不同类别的分界面。因为“支持向量”在确定分界面中起决定性作用,所以这种分类模型叫做“支持向量机”。

“支持向量”定义为“离分界面最近的样本点”,也就是使约束的等号成立的点,亦即对支持向量有:

图中位于虚线上的点就是“支持向量”。它们到分界面的几何间隔分别是

注意到非“支持向量”样本对分界面的确定不起丝毫作用,即移动甚至抹去这些点,最终训练出来的模型仍旧不变。因此说“支持向量”在确定分界面中起决定性作用。

一般来说,“支持向量”的个数很少,所以SVM由少量的重要样本决定(作为对比,Logistic回归则由全部样本参与决策)。

 

6、支持向量机求解 step (1)

Lagrange函数如下:

注意到并且,所以最大可能值就是;并且肯定可以取到(只需令全体即可)。

因此原目标函数等价于:

根据Lagrange对偶性(这里的对偶问题更好解决),对偶问题是:

针对对偶问题,首先求解

将这两个式子带入初始的表达式,化简可得:

因此有:

至此,原始的SVM最优化问题:

已经转化为:

 

7、支持向量机求解 step (1) 补充说明

(a)

此时,“支持向量”可以被准确定义为:使得的样本点

因为,由KKT互补条件可知:

前面的感性定义已经说了,支持向量就是离分界面最近的点,它们使得约束的等号成立;从这里看,对于的样本点,必定有,所以是支持向量(但是《统计学习方法》上并未解释,为什么支持向量就一定是)。

(b)

只需要求解出就等于确定了分类模型(w,b)。因为前面已经推导过:

再由支持向量使约束的等号成立;假设是一个支持向量,那么有:

(c)

分类决策函数仅依赖于新样本的输入(即向量x)和训练样本的输入的内积。

这是后面将要提到的“核函数”方法的基础。

 

8、支持向量机求解 step (2)

也就是SMO算法。

数据不线性可分时,将硬间隔最大化变为软间隔最大化,称为“线性支持向量机”(后文会详细讲)。此时待优化的问题为:

SMO算法就是用来求解线性支持向量机,这等价于求解向量;因为只要知道,分界面表达式立即可得。上述问题有精确解,但是数据量大时效率太低,因此SMO算法只求一个近似解

总体思路如下:

①取初始值

②按某种规则选出的两个分量(不妨记作),并将其余m-2个分量看做常量,在此场景下求解最优化问题,得到

③按照上一步计算结果,更新;同时更新b和(表达式后文有);

④如果此时的已经在精度内满足KKT条件,则退出;否则转②步骤。

以下分三个部分讨论:

 

PART ONE:迭代退出的条件。

(的每个分量都)满足KKT条件,则是该最优化问题的解(后面详细讲),所以将KKT条件作为退出迭代的准则。

具体到本例,KKT条件形式化描述为:

在SMO的迭代中,若的所有分量都在一定精度内满足该条件,就可以认为它是近似最优解。

PART TWO:如何由计算出

原始待优化表达式的另一种写法为:

由于把向量的分量均看做常量,上述表达式省略了常量。

约束写作:

这里包含一个等式约束(两者相互关系)和一个不等式约束(各自的取值范围)。

 

为求解;先计算不考虑取值范围(即不等式约束)时的最优解。将表示为:

这样就把化为仅含的表达式,显见它是二次函数;求解如下:

其中:

但实际上未必能取到这个最优值,因为的取值范围是有限制的。如下图所示:

可知,只能沿着某条直线运动:在符号相反时是45°直线;否则是135°直线。又因为的限制,直线变身线段。

图示的是45°直线的情况。细分为两种:①时,的最小值0、最大值;②时,的最小值、最大值C。

可以如下形式将两种情况综合起来:

若是135°线段,类似有:

因为的取值只能介于L和H之间,所以有:

计算出的表达式,便立刻得到的值,于是本阶段OK。

PART THREE:选择哪两个变量做迭代。

首先,至少有一个变量违反了KKT条件(否则已经退出迭代),因此样本1就选择违反KKT条件最严重的那个。

KKT条件前已列出:

(注意到的意义是该样本点到分界面的函数间隔;因此KKT条件的含义可理解为:间隔线外面的样本,其系数;间隔线之间的样本,其系数;刚好位于间隔线之上的,系数

选定了样本1之后,由的式子,我们期望尽可能大,因此选择使得最大的样本为样本2。

注意:每次迭代之后,都要更新更新向量b和向量E,这里不详细写了。

 

9、线性支持向量机

样本线性不可分时的支持向量机。

此时不存在分界面,使任意样本都被正确分类,并且离分界面的函数间隔至少是1(称为硬间隔,对应几何间隔);因此,我们为每个样本增加一个误差,即任意样本距离分界面的距离至少为(称为软间隔)。

此前讨论过样本线性可分时SVM的最优化问题。引入松弛变量向量后,最优化问题如下:

这个式子本身没什么好解释的,目标函数里的明显是惩罚项。

下面求解该最优化问题。首先构建Lagrange函数:

原始目标函数等价于:

其对偶问题为:

令偏导为0可得:

注意三者联合,可以消去变量。带入原始Lagrange函数得:

再对该式求关于的极大即可。

因此,样本点不能线性分隔时,SVM的最优化函数的对偶问题是:

对于该对偶问题的求解,参见SMO算法。

在已经求得一个近似解后,据此可求解w、b。这样就确定了分界面,亦即确定了支持向量机模型;注意分界面不唯一,因为b的近似解不唯一。

w的近似解是唯一的:

然后选择一个的样本点,记作。那么有:

在此前讨论线性可分情况时,“支持向量”感性理解就是位于间隔线上(距分界面函数间隔为1)的样本,并且给出了准确定义:系数的样本点

posted @ 2013-04-25 20:35  Sunshine1991  阅读(303)  评论(0)    收藏  举报