【七】最优间隔分类器问题

来源:互联网 发布:mysql是大型数据库吗 编辑:程序博客网 时间:2024/04/27 17:37

最优间隔分类器 the Optimal Margin Classifier

在上一讲内容中,我们介绍了函数间隔和几何间隔,我们也对比了这两种间隔的差异。我们希望可以得到更小的几何间隔。一个直观的优化方程是


上述方程中γ即为几何间隔,注意到我们限定了||ω||=1,这表明几何间隔和函数间隔是相同的。但这一优化问题很难求解,因为它是非凸的,我们不能利用已有的优化程序进行求解。所以我们将优化问题转化为另一种方程,如下


此时我们将对||ω||的限制移入目标方程中,这是我们的目标方程实际上就是几何间隔,除以||ω||起到了归一化的作用。此时我们已经可以使用现成的程序求解,但这一优化问题包含了两个参数,γ和ω。显然参数越少求解越方便,我们希望有一种方法可以减少参数。由于我们几何间隔是我们希望得到的最小间隔,因此我们可以令其为1,显然我们也可以给出其他自己喜欢的定义,只需要预先说明即可。此时我们得到第三种公式(在几何间隔为1的条件下)


注意到我们从求目标函数的最大值转为求最小值,这是因为在原方程中ω位于分母的位置;同时我们求的值为1/2||ω||^2,这与||ω||的增减性相同,使用平方项是为了方便求导。此时的方程已经可以通过任意一种求解优化问题的算法解出,如二次规划算法。这一优化为题的解成为最优间隔分类器。


拉格朗日对偶 Lagrange Duality

假如我们要求解如下优化问题(注意到此时约束条件均为等式)

则我们可定义拉格朗日方程为,其中βi称为拉格朗日乘子(Lagrange Multipliers)

我们可以通过设定导数为零的方式求得ω和β

下面我们将拉格朗日算法应用到最优间隔分类器中,我们称如下问题为原始(Primal )问题

为了利用拉格朗日算法解决上述问题,我们定义生成拉格朗日方程(Generalized Lagrangian)为

其中α和β都称为拉格朗日乘子,这时我们定义下列方程(其下标p表示原始primal)

可以得出当其不满足约束条件时,其可取到无穷大

因此我们可以得出下列方程

因此最优间隔分类器的目标函数为

因此,我们使用代表原始问题的目标函数

这时我们定义方程其中的D表示对偶Dual

注意到原始方程是对α和β进行优化得到最大的L方程值,而此方程是取使L最小的ω,因此我们可以定义对偶优化问题

这与我们之前定义的原始优化方程只有求最大值和最小值的顺序不同,我们定义

我们可以得出d*和p*的关系如下(注意L为一个凸函数)

在某一条件下,我们可以取到d*=p*,下面我们将讨论这一情况具体是什么。


KKT条件 Karush-Kuhn-Tucker Conditions

假设方程f和gi均为凸函数,并且hi为一个映射,假设存在一ω对于任意i使gi(ω)<0。

在上述假设中,假设存在ω*为原式方程的最优解,α*、β*为对偶问题的最优解,并且若有,则ω*、α*、β*必满足如下条件,称之为KKT条件(Karush-Kuhn-Tucker Conditions)

这表明,只要存在ω*、α*、β*满足KKT条件,则一定存在d*和p*的解。我们需要特别注意的是,上述第三个方程称为KKT对偶互补条件 KKT Dual Complementarity Condition。这一条件指出,αi和gi至少有一项取值为0。考虑到实际意义,当gi(ω)=0时表示这一点位于距离分界超平面几何间隔为1的位置上(详细见下文推导)。


将上述拓展至支持向量机中,我们可以将约束条件写为,注意到我们只对函数间隔为1的训练数据可能有αi.>0。如下图所示


距离分界面最近的点为1,即有三个点(两个正值,一个负值)位于平行于分界面的虚线上。这三个点称为支持向量 Support Vectors。在实际使用中,支持向量的个数一般会比训练集的规模小很多。

我们将拉格朗日算法应用到SVM中,可得拉格朗日方程为


为了通过对偶问题求解,我们需要首先计算L的最小值,为此我们需要先对ω和β求导,并令导数为零

对ω有,我们可解得

同理我们对β求导得

将上述两个等式代入拉格朗日方程中并化简为

我们推导上述方程是通过选择ω和β取得L最小值求得的,为了完成对偶问题,我们定义下列优化问题


已知可证明SVM问题满足KKT条件,因此解决了上述优化问题可得到α的值,至此我们已求得ω*、α*、β*的值,b在SVM中可视为一个常量,它可通过以下等式计算出

此时我们已解决了对偶问题,即等价的解决了原始问题。

因此当给定一个测试数据x时,我们将上述求出的ω和b代入SVM的计算函数,如下


由之前的推导我们已经知道,对于大多数训练集数据,其对应的αi为0,因此期第一项为0,我们只需考虑少数αi不为零的训练向量(即支持向量)即可,此时影响计算的只有测试数据x和支持向量的内积。


//这里是分割线~
//顺便给自己的公众号打个广告,希望大家多多关注~
//关注我的公众号可以看到更多有意思的东西哦~


0 0
原创粉丝点击