优化的边界分类器

上一讲里我们介绍了函数边界和几何边界的概念,给定一组训练样本,如果能够找到一条决策边界,能够使得几何边界尽可能地大,这将使分类器可以很可靠地预测训练样本,特别地,这可以让分类器用一个“间隔”将正负样本分开。

现在,我们假设给定的一组训练样本是线性可分的,即有可能找到这样一条分界面,将正负样本分开。如何找到这样一个分界面可以使得几何边界最大?我们将这个优化问题用如下的表达式给出:

maxγ,w,bs.t.γy(i)(wTx(i)+b)⩾γ,i=1,...m∥w∥=1

我们要使γ最大化,第一个约束条件保证训练集里的每个训练样本的函数边界都大于γ,而另外一个约束条件∥w∥=1保证目标函数的几何边界和函数边界相等,所以目标函数的几何边界的最小值为γ,如果找到合适的参数w,b使得目标函数成立,那么可以找到训练集的最大的几何边界。不过可以看到,约束条件∥w∥=1使得目标函数无解,所以我们将目标函数做一个简单的变换,如下所示:

maxγ,w,bs.t.γ^∥w∥y(i)(wTx(i)+b)⩾γ^,i=1,...m

这里,我们想要最大化的是γ^/∥w∥,约束条件保证目标函数的函数边界最小为γ^,既然函数边界γ^与几何边界γ存在如下关系:γ=γ^/∥w∥,所以这个目标函数与我们之前的目标函数是一致的,通过这种替换,我们避免了约束条件∥w∥=1,但是发现新的目标函数γ^/∥w∥依然无法解决。

所以我们要继续变换,记得之前讨论函数边界的时候,提到w,b具有尺度不变性,就是对w,b乘以一个常数,不会改变函数边界的性质,这里我们将对w,b引入常数因子使得训练集的函数边界为1,即:

γ^=1

因为对w,b乘以常数,相当于对函数边界乘以一个同样的常数,所以可以通过改变w,b的尺度保证函数边界为1,将这一点引入优化函数,并且注意到对γ^/∥w∥=1/∥w∥最大化相当于对∥w∥2最小化。因此我们可以建立如下的优化问题:

minγ,w,bs.t.12∥w∥2y(i)(wTx(i)+b)⩾1,i=1,...m

现在,这个优化问题是一个凸的二次优化问题,而约束条件也是线性约束,因此可以很容易地得到解决。一旦得到w,b,可以建立优化边界分类器

虽然到这里为止,我们已经解决了SVM的大部分问题,也可以找到一条最优的决策边界。不过接下来我们要探讨Lagrange duality,这将引出这个优化问题的对偶形式,并且可以让我们引入kernel的概念以处理高维的特征向量,并且这个对偶形式可以演化出一个更高效的算法。

Lagrange duality

我们先将SVM搁置一旁,先来探讨一些含约束条件的优化问题。

考虑如下一个优化问题:

minws.t.f(w)hi(w)=0,i=1,...l

利用拉格朗日数乘法,我们可以将上式写成:

L(w,β)=f(w)+∑i=1lβihi(w)

其中,βi称为拉格朗日乘数,我们可以得到L的偏导数为:

∂L∂wi=0,∂L∂βi=0

进而可以求出参数w,β

上面讨论的优化问题含有等式的约束条件,接下来,我们要看看同时含有等式与不等式约束条件的优化问题,考虑如下的优化问题,我们一般称为primal 优化问题:

minws.t.f(w)hi(w)=0,i=1,...lgi(w)⩽0,i=1,...k

为了解决这个问题,我们先建立一般的拉格朗日表达式:

L(w,α,β)=f(w)+∑i=1kαigi(w)+∑i=1lβihi(w)

αi,βi称为拉格朗日乘数。考虑如下的式子:

θP(w)=maxα,β:αi⩾0L(w,α,β)

其中,”P”表示”primal”(原始的),假设我们求出w,如果w不满足所有的约束条件(例如存在gi(w)⩾0或者hi(w)≠0),那么我们可以知道:

θP(w)=maxα,β:αi⩾0f(w)+∑i=1kαigi(w)+∑i=1lβihi(w)=∞

反之,如果w满足所有的约束条件,那么θP(w)=f(w),因此,我们可以得知:

θP(w)={f(w)∞如果w满足约束条件otherwise

可以看出,当w满足所有的约束条件时,θP(w)的值与我们建立的目标函数的值是一样的,如果不满足约束条件,那么θP(w)将会趋于正无穷。

因此,当我们考虑如下的最小化问题:

minwθP(w)=minwmaxα,β:αi⩾0L(w,α,β)

可以看到,这与我们最初的原始的优化问题是同一个问题,我们也定义这个优化问题的优化解为:p∗=minwθP(w),我们称这个为原始问题的\textbf{解}。我们稍后将会用到这个定义。

现在,我们先来看一个稍微不同的问题,我们定义:

θD(α,β)=minwL(w,α,β)

这里,”D”表示”dual”(对偶的),要注意,在θP我们要求的是关于α,β的优化问题,这里,我们要求的是关于w的优化问题。下面,我们可以给出对偶优化问题的形式:

maxα,β:αi⩾0θD(α,β)=maxα,β:αi⩾0minwL(w,α,β)

可以看到,这个形式和我们上面讨论的原始优化问题的形式很相似,唯一的区别在于”max”和”min”的顺序调换了一下,我们同样定义对偶优化问题的目标值为:

d∗=maxα,β:αi⩾0θD(α,β)

那么原始优化问题与对偶优化问题满足什么关系呢?容易看出:

d∗=maxα,β:αi⩾0minwL(w,α,β)⩽minwmaxα,β:αi⩾0L(w,α,β)=p∗

很显然,函数最小值的最大值要小于等于最大值的最小值,这个看起来有点绕,不过应该很容易验证。不过,在某些约束条件下,可以让两个值相等,即:

d∗=p∗

下面,我们探讨一下这些条件:

假设f和g是凸函数,h是仿射函数,进一步假设函数g是严格可行的,意味着存在w使得对所有的i满足gi(w)<0。

基于上述假设,那么一定存在w∗,α∗,β∗,其中,w∗是原始优化问题的解,而α∗,β∗是对偶优化问题的解,更进一步,我们有:d∗=p∗=L(w∗,α∗,β∗),而且w∗,α∗,β∗满足Karush-Kuhn-Tucker (KKT)条件,即如下所示:

∂∂wiL(w∗,α∗,β∗)∂∂βiL(w∗,α∗,β∗)α∗gi(w∗)gi(w∗)α∗=0,i=1,2,...n=0,i=1,2,...l=0,i=1,2,...k⩽0,i=1,2,...k⩾0,i=1,2,...k

第三个表达式,称为KKT**dual complementarity**条件,这个条件暗示着如果α∗>0,那么可以推出 gi(w∗)=0,这个条件是关键的一点。在后面可以看到,正因为这一点,说明SVM中的”支持向量”只占训练样本的一小部分。

参考文献

Andrew Ng, “Machine Learning”, Stanford University.

机器学习 Support Vector Machines 2的更多相关文章

  1. 机器学习 Support Vector Machines 1

    引言 这一讲及接下来的几讲,我们要介绍supervised learning 算法中最好的算法之一:Support Vector Machines (SVM,支持向量机).为了介绍支持向量机,我们先讨 ...

  2. 机器学习 Support Vector Machines 3

    Optimal margin classifiers 前面我们讲过,对如下的原始的优化问题我们希望找到一个优化的边界分类器. minγ,w,bs.t.12∥w∥2y(i)(wTx(i)+b)⩾1,i= ...

  3. Coursera 机器学习 第7章 Support Vector Machines 学习笔记

    7 Support Vector Machines7.1 Large Margin Classification7.1.1 Optimization Objective支持向量机(SVM)代价函数在数 ...

  4. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 12—Support Vector Machines 支持向量机

    Lecture 12 支持向量机 Support Vector Machines 12.1 优化目标 Optimization Objective 支持向量机(Support Vector Machi ...

  5. Andrew Ng机器学习编程作业:Support Vector Machines

    作业: machine-learning-ex6 1. 支持向量机(Support Vector Machines) 在这节,我们将使用支持向量机来处理二维数据.通过实验将会帮助我们获得一个直观感受S ...

  6. Machine Learning - 第7周(Support Vector Machines)

    SVMs are considered by many to be the most powerful 'black box' learning algorithm, and by posing构建 ...

  7. 【Supervised Learning】支持向量机SVM (to explain Support Vector Machines (SVM) like I am a 5 year old )

    Support Vector Machines 引言 内核方法是模式分析中非常有用的算法,其中最著名的一个是支持向量机SVM 工程师在于合理使用你所拥有的toolkit 相关代码 sklearn-SV ...

  8. [C7] 支持向量机(Support Vector Machines) (待整理)

    支持向量机(Support Vector Machines) 优化目标(Optimization Objective) 到目前为止,你已经见过一系列不同的学习算法.在监督学习中,许多学习算法的性能都非 ...

  9. Support Vector Machines for classification

    Support Vector Machines for classification To whet your appetite for support vector machines, here’s ...

随机推荐

  1. Django开发之html交互

    html中用户输入信息,由Django的view.py处理,大致用到了以下几类格式: 1. 文本框 <input type="text" name="vid&quo ...

  2. jQuery.callbacks 注释

    (function( jQuery ) { // String to Object flags format cache var flagsCache = {}; // Convert String- ...

  3. centos出现-bash: /usr/bin/php: 没有那个文件或目录解决方法

    造成这个的原因是因为找不到php的执行文件导致的,原先我是安装的php5.4,然后卸载了重新安装php7,导致php可执行文件没有放到$PATH中,可以在终端测试:php -v,如果报错bash: / ...

  4. Swift来了,是不是能够入手IOS开发了?

    在今天的WWDC2014上,苹果公布了一种全新的Swift.在苹果高管 Craig Federighi 的描写叙述中,Swift 在各个方面优于 Objective-C,也不会有那么多复杂的符号和表达 ...

  5. Unicode Category

    Lu(letter,uppercase):大写字母. Ll(letter.lowercase):小写字母. Lt(letter,titlecase):词首字母大写的字母. Lm(letter,modi ...

  6. JVM类加载流程

    1.加载 a.装载类的第一个阶段 b.取得类的二进制流 c.转为方法区数据结构 d.在Java堆中生成对应的java.lang.Class对象 2.链接 a.验证(保证Class流的格式是正确的) 文 ...

  7. 4.对urls.py的解释

    解释: 路由配置文件(URL分发器),它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表.就是以这种方式告诉Django对于每个URL的处理类.Django启动的时候回去加载urls. ...

  8. anaconda + opencv3

    直接运行 pip install opencv-python 或者 pip install opencv-contrib-python 参照如下网页 https://blog.csdn.net/sin ...

  9. angular中按需加载js

    按需加载估计是大家在使用angular之后最想解决的问题吧,因为angular的依赖机制,导致了必须在第一次加载的时候就加载所有js文件,小项目还好,稍大一点的项目如果有上百个js文件,不管是从效率还 ...

  10. 读:Instance-aware Image and Sentence Matching with Selective Multimodal LSTM

    摘要:有效图像和句子匹配取决于如何很好地度量其全局视觉 - 语义相似度.基于观察到这样的全局相似性是由图像(对象)和句子(词)的成对实例之间的多个局部相似性的复合聚集,我们提出了一个实例感知图像和句子 ...