从生活中挖掘数学之美,在实践中体验算法之奇,魅力旅程,从此开始! |
来源:CSDN July
编辑 : Gemini
接着考虑之前得到的目标函数:
由于求
的最大值相当于求
的最小值,所以上述目标函数等价于(w由分母变成分子,从而也有原来的max问题变为min问题,很明显,两者问题等价):
因为现在的目标函数是二次的,约束条件是线性的,所以它是一个凸二次规划问题。这个问题可以用现成的 QP (Quadratic Programming) 优化包进行求解。一言以蔽之:在一定的约束条件下,目标最优,损失最小。
此外,由于这个问题的特殊结构,还可以通过拉格朗日对偶性(Lagrange Duality)变换到对偶变量 (dual variable) 的优化问题,即通过求解与原问题等价的对偶问题(dual problem)得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题。
那什么是拉格朗日对偶性呢?简单来讲,通过给每一个约束条件加上一个拉格朗日乘子(Lagrange multiplier)
,定义拉格朗日函数(通过拉格朗日函数将约束条件融合到目标函数里去,从而
只用一个函数表达式便能清楚的表达出我们的问题
)
:
然后令
容易验证,当某个约束条件不满足时,例如
,那么显然有
(只要令
即可)。而当所有约束条件都满足时,则最优值为
,亦即最初要最小化的量。
因此,在要求约束条件得到满足的情况下最小化
,
实际上等价于直接最小化
(当然,这里也有约束条件,就是
会等于无穷大,自然不会是我们所要求的最小值。
表示这个问题的最优值,且和最初的问题是等价的。如果直接求解,那么一上来便得面对w和b两个参数,而
又是不等式约束,这个求解过程不好做。不妨把最小和最大的位置交换一下,变成:
来表示。而且有
≤
,在满足某些条件的情况下,这两者相等,这个时候就可以通过求解对偶问题来间接地求解原始问题。
,转化为maxmin的对偶问题
,一者因为
是
的近似解,二者,转化为对偶问题后,更容易求解。
的极大。
≤
在满足某些条件的情况下,两者等价”,
这所谓的“满足某些条件”就是要满足KKT条件
。
为一凸集
,
为一凸函数。凸优化就是要找出一点
,
使得每一
满足
的极大,最后利用SMO算法求解对偶问题中的拉格朗日乘子。
,
要让
(求出了
便能求出w,和b,由此可见,上文第1.2节提出来的核心问题:分类函数
也就可以轻而易举的求出来了)。
的极大
,
即是关于对偶问题的最
优化问题。经过上面第一个步骤的求w和b,得到的拉
格朗日函数式子已经没有了变量w,b,只有
。从上面的式子得到:
,根据
,
即可求出w,然后通过
的极大之后,最后一步则可以利用SMO算法求解对偶问题中的拉格朗日乘子
。
上求最大值W的问题,至于
和
都是已知数
。要了解这个SMO算法是如何推导的,请跳到下文第3.5节、SMO算法。
算出结果然后根据其正负号来进行类别划分的。而前面的推导中我们得到
表示向量内积),这一点至关重要,是之后使用 Kernel 进行非线性推广的基本前提。此外,所谓 Supporting Vector 也在这里显示出来——事实上,所有非Supporting Vector 所对应的系数
都是等于零的,因此对于新点的内积计算实际上只要针对少量的“支持向量”而不是所有的训练数据即可。
等于零呢?直观上来理解的话,就是这些“后方”的点——正如我们之前分析过的一样,对超平面是没有影响的,由于分类完全有超平面决定,所以这些无关的点并不会参与分类问题的计算,因而也就不会产生任何影响了。
是支持向量的话,上式中红颜色的部分是等于 0 的(因为支持向量的 functional margin 等于 1 ),而对于非支持向量来说,functional margin 会大于 1 ,因此红颜色部分是大于零的,而
又是非负的,为了满足最大化,
必须等于 0 。这也就是这些非Supporting Vector 的点的局限性。
这样一个三维空间中即可,下图即是映射之后的结果,将坐标轴经过适当的旋转,就可以很明显地看出,数据是可以通过一个平面来分开的(pluskid:下面的
gif 动画,
先用 Matlab 画出一张张图片,再用 Imagemagick 拼贴成):
可以通过求解如下 dual 问题而得到的:
,然后一股脑把原来的数据映射到新空间中,再做线性 SVM 即可。不过事实上没有这么简单!其实刚才的方法稍想一下就会发现有问题:在最初的例子里,我们对一个二维空间做映射,选择的新空间是原始空间的所有一阶和二阶的组合,得到了五个维度;如果原始空间是三维,那么我们会得到 19 维的新空间,这个数目是呈爆炸性增长的,这给
的计算带来了非常大的困难,而且如果遇到无穷维的情况,就根本无从计算了。所以就需要 Kernel 出马了。
和
,而
即是到前面说的五维空间的映射,因此映射过后的内积为:
的结果是相等的,那么区别在于什么地方呢?
的核函数出来,如果对于任意一个映射,想要构造出对应的核函数就很困难了。
,其中
是原始空间的维度。
,这个核就是最开始提到过的会将原始空间映射为无穷维空间的那个家伙。不过,如果
选得很大的话,高次特征上的权重实际上衰减得非常快,所以实际上(数值上近似一下)相当于一个低维的子空间;反过来,如果
选得很小,则可以将任意的数据映射为线性可分——当然,这并不一定是好事,因为随之而来的可能是非常严重的过拟合问题。不过,总的来说,通过调控参数
,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。下图所示的例子便是把低维线性不可分的数据通过高斯核函数映射到了高维空间:
,这实际上就是原始空间中的内积。这个核存在的主要目的是使得“映射后空间中的问题”和“映射前空间中的问题”两者在形式上统一起来了(
意思是说,咱们有的时候,写代码,或写公式的时候,只要写个模板或通用表达式,然后再代入不同的核,便可以了,于此,便在形式上统一了起来,不用再分别写一个线性的,和一个非线性的)
。
将原始数据映射到高维空间之后,能够线性分隔的概率大大增加,但是对于某些情况还是很难处理。
称为松弛变量 (slack variable) ,对应数据点
允许偏离的 functional margin 的量。当然,如果我们运行
任意大的话,那任意的超平面都是符合条件的了。所以,我们在原来的目标函数后面加上一项,使得这些
的总和也要最小:
是需要优化的变量(之一),而
是一个事先确定好的常量。完整地写出来是这个样子:
针对
、
和
最小化
:
带回
并化简,得到和原来一样的目标函数
:
而又有
(作为 Lagrange multiplier 的条件),因此有
,所以整个 dual 问题现在写作:
多了一个上限
。而 Kernel 化的非线性形式也是一样的,只要把
换成
即可。这样一来,一个完整的,可以处理线性和非线性并能容忍噪音和 outliers 的支持向量机才终于介绍完毕了。
|
YOHO潮流志 · 女生这些私密部位的纹身,性感得让人窒息呀! 7 年前 |
|
中国企业家杂志 · 花400元,芝麻信用就能超过750分,变成人生赢家?真相是这样的…… 7 年前 |
|
考研军火库 · 蒋小师妹透露政治新大纲新增考点!报考院校&专业热度排行榜!黄大年事迹命题角度分析! 7 年前 |
|
经典人生感悟 · 看淡一切!(深度好文) 7 年前 |
|
Excel技巧网 · 50条知乎点赞最高的段子,已笑喷! 7 年前 |