热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

斯坦福大学公开课:机器学习课程(AndrewNg)——6、监督学习:SupportVectorMachine,破

6)拉格朗日对偶(Lagrangeduality)7)最优间隔分类器(optimalmarginclassi

6)拉格朗日对偶(Lagrange duality)

7)最优间隔分类器(optimal margin classifier)

8)核函数(Kernel)

9)核函数的有效性



6)拉格朗日对偶(Lagrange duality)

先抛开上一节的二次规划(最小值)问题

对于存在等式约束的极值问题求解,通过引入拉格朗日算子构造拉格朗日公式就可以完美解决。

对于存在不等式约束的极值问题求解,如下:    clip_image007[6]    

我们定义更一般化的拉格朗日公式:clip_image008[6]

因为我们求解的是最小值,而这里的
clip_image014[6]已经不严格等于0,而是小于等于0,我们虽然可以将
clip_image010[51]调整成很大的正值以使函数的结果是负无穷,但这种“虚假最小值”并不是我们想要的,因此我们为了排除这种情况定义下面的函数:

    clip_image015[6]这里的P代表primal。

进一步分析(假设clip_image017[6]或者clip_image019[6],那么我们总是可以调整clip_image010[52]clip_image012[15]来使得clip_image021[10]有最大值为正无穷。而只有g和h同时满足约束时,clip_image021[11]才有最小值f(w),这时gi和hi都等于0。)可知:

    clip_image024[6]


这样我们原来要求解的二次规划(最小值)问题min f(w)可以转换成求clip_image026[10]。而clip_image026[10]可以进一步转换为:

clip_image027[6] 

如果直接求解上式,首先要面对两个参数,且clip_image010[53]是不等式约束,然后还要在w上求最小值。这个过程不容易做,所以我们引入该问题的对偶形式:

clip_image034[6]

相对于原问题&#xff0c;对偶问题只是更换了min和max的顺序&#xff0c;而一般更换顺序的结果是Max Min(X) <&#61; MinMax(X)&#xff0c;即&#xff1a;

clip_image037[6]

通过引入的对偶形式&#xff0c;我们只要找到clip_image042[14]使d*&#61;p*&#xff0c;那么这组clip_image042[14]中的W*肯定就是我们原来要求解的二次规划&#xff08;最小值&#xff09;问题min f(w)的解了&#xff0c;那么怎么找这组clip_image042[14]&#xff1f;根据当前知识&#xff0c;我们只知道&#xff1a;假设存在clip_image042[14]使得clip_image044[14]是原问题的解&#xff0c;clip_image046[6]是对偶问题的解&#xff0c;如果clip_image042[16]满足了库恩-塔克条件&#xff08;Karush-Kuhn-Tucker, KKT condition&#xff09;&#xff0c;那么他们就是原问题和对偶问题的解&#xff08;即&#xff0c;使原问题和对偶问题等价&#xff09;。下面给出库恩-塔克条件&#xff08;Karush-Kuhn-Tucker, KKT condition&#xff09;&#xff1a;

clip_image048[6]

公式&#xff08;5&#xff09;称为KKT dual complementarity&#xff08;KKT对偶互补&#xff09;条件。这个条件隐含了如果clip_image050[6]&#xff0c;那么clip_image052[10]&#xff0c;此时的w*正处于可行域的边界上&#xff08;正好取到“&#61;0”&#xff09;&#xff0c;之后我们会明白&#xff0c;gi(w)&#61;0才是真正起作用的约束&#xff1b;而其他位于可行域内部&#xff08;clip_image054[6]&#xff09;的点对应的clip_image056[6]&#xff0c;之后我们会明白&#xff0c;gi(w)<0都是不起作用的约束。这个KKT双重补足条件会用来解释支持向量和SMO的收敛测试。

KKT的总体思想是&#xff1a;极值会在可行域边界上取得&#xff0c;也就是在不等式等于0的gi(w)约束或等式hi(w)约束里取得&#xff0c;而最优下降方向一般是这些“不等式等于0的gi(w)约束或等式hi(w)约束”的线性组合。对于在可行域边界内&#xff08;clip_image054[6]&#xff09;的点&#xff0c;对最优解不起作用&#xff0c;因此前面的系数clip_image056[6]


7&#xff09;最优间隔分类器&#xff08;optimal margin classifier&#xff09;

上一节中我们只是给出了clip_image042[14]满足KKT条件就是原问题和对偶问题的解的结论&#xff0c;但实际上并没有告诉我们具体怎么求clip_image042[14]。这里我们仍然不给出具体求解clip_image042[14]的方法&#xff0c;但只是告诉我们&#xff0c;如果求出了α*&#xff08;对于α*的具体求解方法&#xff0c;我们交给下一节的SMO算法&#xff09;&#xff0c;那么就可以求出β*&#xff0c;进而求出w*&#xff0c;下面我们看一下这些结论是怎么得到的。


从KKT条件得知只有函数间隔是1&#xff08;离超平面最近的点&#xff09;的线性约束式前面的系数clip_image060[14]&#xff0c;对应的约束式为clip_image062[6]&#xff0c;对于其他的不在线上的点(clip_image064[6])&#xff0c;极值不会在他们所在的范围内取得&#xff0c;因此前面的系数clip_image066[14]。看下面的图&#xff1a;

    clip_image067[6]

实线是最大间隔超平面&#xff0c;假设×号的是正例&#xff0c;圆圈的是负例。在虚线上的点就是函数间隔是1的点&#xff0c;那么他们前面的系数clip_image060[15]&#xff0c;其他点都是clip_image066[15]。这三个点称作支持向量


重新回到SVM的最初优化问题&#xff1a;

    clip_image057[6]

我们将约束条件改写为&#xff1a;    clip_image058[6]构造拉格朗日函数如下&#xff1a;    

    clip_image068[6]这里只有clip_image010[54]没有clip_image012[16]是因为原问题中没有等式约束&#xff0c;只有不等式约束。

下面我们按照对偶问题的求解步骤来一步步进行&#xff1a;

对于对偶问题clip_image069[10]&#xff0c;我们分为最小化clip_image070[10]和最大化min L(w,b,α)两步。

首先求解clip_image070[10]的最小值&#xff0c;我们先固定clip_image010[55]&#xff0c;那么clip_image070[11]的最小值只与w和b有关&#xff0c;对w和b分别求偏导数&#xff1a;

    clip_image071[6]  &#xff08;d1&#xff09;            clip_image072[6]&#xff08;d2&#xff09;

化简&#xff08;d1&#xff09;得到&#xff1a;    clip_image073[6]&#xff0c;将该式带回到构造的拉格朗日函数中&#xff0c;化简&#xff08;化简过程参考&#xff1a;http://www.cnblogs.com/jerrylead/archive/2011/03/13/1982684.html&#xff09;得到&#xff1a;

clip_image075[6]。注意虽然写的是L(w,b,α)&#xff0c;实际上却是L(w,b,α)关于自变量w的最小值&#xff08;目标函数是凸函数&#xff09;。



接着是极大化上面求得关于自变量w的最小值函数clip_image075[6]&#xff0c;

clip_image078[6]这里我们将向量内积clip_image076[6]表示为clip_image077[6]


其实它是满足KKT条件的&#xff0c;所以&#xff0c;一定存在clip_image080[6]使得clip_image044[15]是原问题的解&#xff0c;clip_image082[10]是对偶问题的解。

同样的&#xff0c;clip_image082[10]的求解留给下一节的SMO算法。这里仅仅假设已经求出了clip_image082[10]&#xff0c;那么根据clip_image083[6]即可求出clip_image044[16]&#xff08;原问题的解&#xff09;&#xff0c;进而求出

    clip_image084[6]即离超平面最近的正的函数间隔要等于离超平面最近的负的函数间隔



最后考虑一个“题外话”&#xff0c;将前面求解中得到的    clip_image086[6]带入clip_image088[6]得&#xff1a;

    clip_image089[6]

也就是说&#xff0c;以前新来的要分类的样本首先根据w和b做一次线性运算&#xff0c;然后看求的结果是大于0还是小于0来判断是正例还是负例。现在有了clip_image010[61]&#xff0c;我们不需要求出w&#xff0c;只需将新来的样本和训练数据中的所有样本做内积和即可。那有人会说&#xff0c;与前面所有的样本都做运算是不是太耗时了&#xff1f;其实不然&#xff0c;我们从KKT条件中得到&#xff0c;只有支持向量的clip_image060[16]&#xff0c;其他情况clip_image066[16]。因此&#xff0c;我们只需求新来的样本和支持向量的内积&#xff0c;然后运算即可。这种写法为下面要提到的核函数&#xff08;kernel&#xff09;做了很好的铺垫。


8&#xff09;核函数&#xff08;Kernel&#xff09;

考虑“线性回归”问题&#xff0c;假设我们从样本点的分布中看到x和y符合3次曲线&#xff0c;那么我们希望使用x的三次多项式来逼近这些样本点。那么首先需要将特征x扩展到三维clip_image002[6]&#xff0c;然后寻找特征和结果之间的模型。我们将这种特征变换称作特征映射&#xff08;feature mapping&#xff09;。映射函数称作clip_image004[10]&#xff0c;在这个例子中

clip_image006[6]

我们希望将得到的映射后的特征应用于SVM分类&#xff0c;而不是最初的属性。这样&#xff0c;我们需要将前面clip_image008[4]公式中的内积从clip_image010[16]&#xff0c;映射到clip_image012[42]。将核函数形式化定义&#xff0c;如果原始属性内积是clip_image014[4]&#xff0c;映射后的特征内积为clip_image016[6]&#xff0c;那么定义核函数&#xff08;Kernel&#xff09;为clip_image018[8]

除了从属性向特征的映射的角度理解核函数外&#xff0c;领悟核函数的另一种视角是&#xff1a;由于计算的是内积&#xff0c;我们可以想到余弦相似度&#xff0c;如果x和z向量夹角越小&#xff0c;那么核函数值越大&#xff0c;反之&#xff0c;越小。因此&#xff0c;核函数clip_image018[8]的值可以看做是clip_image020[11]clip_image041[4]相似度的度量。

到这里&#xff0c;我们可以得出结论&#xff0c;要使用核函数&#xff0c;只需先计算clip_image020[10]&#xff0c;然后计算clip_image022[10]即可&#xff0c;然而这种计算方式是非常低效的&#xff0c;那么我们能不能想办法减少计算时间呢&#xff1f;为了回答这个问题&#xff0c;我们先看一个核函数&#xff1a;clip_image028[4]&#xff0c;假设x和z都是n维的&#xff0c;那么展开后得&#xff1a;

clip_image030[4]&#xff0c;这个时候发现我们可以只计算原始特征x和z内积的平方&#xff08;时间复杂度是O(n)&#xff09;&#xff0c;就等价与计算映射后特征的内积&#xff0c;也就是说我们不需要花clip_image026[7]时间了。

另一个经典核函数是&#xff1a;clip_image042[6]&#xff0c;如果x和z很相近&#xff08;clip_image044[6]&#xff09;&#xff0c;那么核函数值为1&#xff0c;如果x和z相差很大&#xff08;clip_image046[6]&#xff09;&#xff0c;那么核函数值约等于0。由于这个函数类似于高斯分布&#xff0c;因此称为高斯核函数&#xff0c;也叫做径向基函数(Radial Basis Function 简称RBF)。它能够把原始特征映射到无穷维。既然高斯核函数能够比较x和z的相似度&#xff0c;并映射到0到1&#xff0c;回想logistic回归&#xff0c;sigmoid函数可以&#xff0c;因此还有sigmoid核函数等等。


至于为什么需要映射后的特征而不是最初的属性面提到的&#xff08;从样本点的分布中看到x和y符合3次曲线&#xff0c;能更好拟合&#xff09;是其中一个原因&#xff0c;另外的一个重要原因是样例可能存在线性不可分的情况&#xff0c;而将属性映射到高维空间后&#xff0c;特征往往就可分了。&#xff08;在《数据挖掘导论》Pang-Ning Tan等人著的《支持向量机》那一章有个很好的例子说明&#xff09;。下面有张图说明在低维线性不可分时&#xff0c;映射到高维后就可分了&#xff0c;使用高斯核函数。

clip_image048[6]

来自Eric Xing的slides

注意&#xff0c;使用核函数后&#xff0c;怎么分类新来的样本呢&#xff1f;线性的时候我们使用SVM学习出w和b&#xff0c;新来样本x的话&#xff0c;我们使用clip_image050[8]来判断&#xff0c;如果值大于等于1&#xff0c;那么是正类&#xff0c;小于等于1是负类。在两者之间&#xff0c;认为无法确定。如果使用了核函数后&#xff0c;clip_image050[9]就变成了clip_image052[6]&#xff0c;是否先要找到clip_image054[8]&#xff0c;然后再预测&#xff1f;答案肯定不是了&#xff0c;找clip_image054[9]很麻烦&#xff0c;回想上一节说过的clip_image055[4]&#xff0c;只需将clip_image057[4]替换成clip_image059[6]&#xff0c;然后值的判断同上。



9&#xff09;核函数的有效性

问题&#xff1a;给定一个函数K&#xff0c;我们能否使用K来替代计算clip_image022[11]&#xff1f;也就说&#xff0c;对于某个给定的核函数例如clip_image063[8]&#xff0c;是否能够找出一个函数映射clip_image061[12]&#xff0c;使得对于所有的x和z&#xff0c;都有clip_image018[9]&#xff1f;也可以说&#xff0c;怎样判断给出的核函数K是不是一个有效的核函数&#xff08;为什么要判断某个核函数是不是有效地呢&#xff1f;因为核函数是我们根据经验和所要处理的问题自己定义的&#xff0c;这就需要我们检验定义的正确性&#xff01;&#xff09;。

解决这个问题前&#xff0c;先给出核函数矩阵&#xff08;Kernel Matrix&#xff09;的定义&#xff1a;给定m个训练样本clip_image065[6]&#xff0c;每一个clip_image067[8]对应一个特征向量&#xff0c;我们将任意两个clip_image067[9]clip_image069[6]带入核函数K中得到clip_image071[6]。i可以从1到m&#xff0c;j可以从1到m&#xff0c;这样可以计算出m*m的矩阵K称为核函数矩阵&#xff08;Kernel Matrix&#xff09;。这里&#xff0c;我们将核函数矩阵和核函数都使用K来表示。经过一些列推导我们可以得到&#xff1a;如果K是个有效的核函数&#xff08;即clip_image073[11]clip_image080[6]等价&#xff09;&#xff0c;那么&#xff0c;在训练集上得到的核函数矩阵K应该是半正定的&#xff08;clip_image082[6]&#xff09;。

这样我们得到一个核函数的必要条件&#xff1a;K是有效的核函数 &#61;&#61;> 核函数矩阵K是对称半正定的。      其实这个条件也是充分的&#xff0c;由Mercer定理给出&#xff1a;


Mercer定理&#xff1a;

如果函数K是clip_image084[26]上的映射&#xff08;也就是从两个n维向量映射到实数域&#xff09;。那么如果K是一个有效核函数&#xff08;也称为Mercer核函数&#xff09;&#xff0c;那么当且仅当对于训练样例clip_image065[7]&#xff0c;其相应的核函数矩阵是对称半正定的。

Mercer定理表明&#xff1a;为了证明K是有效的核函数&#xff0c;那么我们不用去寻找
clip_image061[13]&#xff0c;而只需要在训练集上求出各个
clip_image086[6]&#xff0c;然后判断矩阵K是否是半正定&#xff08;使用左上角主子式大于等于零等方法&#xff09;即可。

最后说明一点&#xff0c;核函数不仅仅用在SVM上&#xff0c;但凡在一个模型后算法中出现了clip_image090[4]&#xff0c;我们都可以常使用clip_image073[12]去替换&#xff0c;这可能能够很好地改善我们的算法。




参考&#xff1a;

http://www.cnblogs.com/jerrylead/archive/2011/03/13/1982684.html

http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988406.html






推荐阅读
  • Stanford机器学习第九讲. 聚类
    原文:http:blog.csdn.netabcjenniferarticledetails7914952本栏目(Machinelearning)包括单参数的线性回归、多参数的线性 ... [详细]
  • 1.活体相关文献综述调研参考:https:blog.csdn.netCVAIDLarticledetails845673192.基于LBP纹理特征的检测1)基于LBP_256特征提 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 机器学习之数据均衡算法种类大全+Python代码一文详解
    目录前言一、为什么要做数据均衡?二、数据场景1.大数据分布不均衡2.小数据分布不均衡三、均衡算法类型1.过采样2.欠采样3.组合采样四、算法具体种类1 ... [详细]
  • 开源真香 离线识别率高 Python 人脸识别系统
    本文主要介绍关于python,人工智能,计算机视觉的知识点,对【开源真香离线识别率高Python人脸识别系统】和【】有兴趣的朋友可以看下由【000X000】投稿的技术文章,希望该技术和经验能帮到 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 深度学习与神经网络——邱锡鹏
    深度学习与神经网络——邱锡鹏-一、绪论人工智能的一个子领域神经网络:一种以(人工))神经元为基本单元的模型深度学习:一类机器学习问题,主要解决贡献度分配问题知识结构:路线图:顶 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 分享篇:第十届“泰迪杯”数据挖掘挑战赛农田害虫图像识别(特等奖)一
    1.1赛题背景昆虫的种类浩如烟海,农田常见的昆虫是人工生态系统的重要组成部分。分辨益虫和害虫,保留益虫,消灭害虫,对于减轻害 ... [详细]
  • bat大牛带你深度剖析android 十大开源框架_请收好!5大领域,21个必知的机器学习开源工具...
    全文共3744字,预计学习时长7分钟本文将介绍21个你可能没使用过的机器学习开源工具。每个开源工具都为数据科学家处理数据库提供了不同角度。本文将重点介绍五种机器学习的 ... [详细]
author-avatar
雨含的晴天
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有