优化的边界分类器

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

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

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. ios 深入讲解iOS键盘一:控制键盘隐藏显示

    在iOS的开发中,我们一般使用UITextField.UITextView处理文字输入等操作,大部分情况下我们只需要一两行代码去手动管理键盘的显示隐藏:让UITextField或UITextView成 ...

  2. ios -富文本和尺寸

    /** *  计算文本的宽高 方法 2 * *  @param str     需要计算的文本 *  @param font    文本显示的字体 *  @param maxSize 文本显示的范围 ...

  3. cocos2d-x 3.0rc1 使用iconv库 解决UTF8乱码问题

    多国语言要用到开源字符转换 iconv 先贴出自己的使用代码 你能够做成头文件 #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) #include &qu ...

  4. Python的Django框架中的Context使用

    Python的Django框架中的Context使用 近期整理些Python方面的知识,一旦你创建一个 Template 对象,你能够用 context 来传递数据给它. 一个context是一系列变 ...

  5. fiddler 清除证书+重新添加证书

    1. 清除证书 ①任意浏览器,打开Internet属性弹窗,点击内容页签下<证书> ②删除个人页签下,颁发者为DO_NOT_TRUST_Fiddler**的数据 2. 重新认证证书 ①打开 ...

  6. CAFFE学习笔记(一)Caffe_Example之训练mnist

    0.参考文献 [1]caffe官网<Training LeNet on MNIST with Caffe>; [2]薛开宇<读书笔记4学习搭建自己的网络MNIST在caffe上进行训 ...

  7. Webpack探索【4】--- entry和output详解

    本文主要讲entry和output相关内容.

  8. spring 3.2 后 annotation-driven 注册新的类

    DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter 的使用已经过时! DefaultAnnotationHandlerMa ...

  9. python基础2 ---python数据类型一

    python的数据类型 一.什么是数据类型以及数据类型的分类 1.数据类型的定义:python使用对象模型来存储数据,每一个数据类型都有一个内置的类,每新建一个数据,实际就是在初始化生成一个对象,即所 ...

  10. shell中替换json中指定的值

    在linux中部署软件的时候,有时会遇到用shell动态改动json格式的配置文件,比如一下rabbitmq.json文件: { "rabbitmq": { "ssl&q ...