Ng第十二课:支持向量机(Support Vector Machines)(二)

时间:2022-09-14 18:07:07

7 核函数(Kernels)

最初在“线性回归”中提出的问题,特征是房子的面积x,结果y是房子的价格。假设从样本点的分布中看到x和y符合3次曲线,那么我们希望使用x的三次多项式来逼近这些样本点。那么首先需要将特征x扩展到三维Ng第十二课:支持向量机(Support Vector Machines)(二),然后寻找特征和结果之间的模型。将这种特征变换称作特征映射(feature mapping)。映射函数称作Ng第十二课:支持向量机(Support Vector Machines)(二),在这个例子中

Ng第十二课:支持向量机(Support Vector Machines)(二)

我们希望将得到的特征映射后的特征应用于SVM分类,而不是最初的特征。这样,需要将前面Ng第十二课:支持向量机(Support Vector Machines)(二)公式中的内积从Ng第十二课:支持向量机(Support Vector Machines)(二),映射到Ng第十二课:支持向量机(Support Vector Machines)(二)

至于为什么需要映射后的特征而不是最初的特征来参与计算,上面提到的(为了更好地拟合)是其中一个原因,另外的一个重要原因是样例可能存在线性不可分的情况,而将特征映射到高维空间后,往往就可分了。(在《数据挖掘导论》Pang-Ning Tan等人著的《支持向量机》那一章有个很好的例子说明)

将核函数形式化定义,如果原始特征内积是Ng第十二课:支持向量机(Support Vector Machines)(二),映射后为Ng第十二课:支持向量机(Support Vector Machines)(二),那么定义核函数(Kernel)为

Ng第十二课:支持向量机(Support Vector Machines)(二)

到这里,可以得出结论,如果要实现该节开头的效果,只需先计算Ng第十二课:支持向量机(Support Vector Machines)(二),然后计算Ng第十二课:支持向量机(Support Vector Machines)(二)即可,然而这种计算方式是非常低效的。比如最初的特征是n维的,我们将其映射到Ng第十二课:支持向量机(Support Vector Machines)(二)维,然后再计算,这样需要Ng第十二课:支持向量机(Support Vector Machines)(二)的时间。那么我们能不能想办法减少计算时间呢?

先看一个例子,假设x和z都是n维的,

Ng第十二课:支持向量机(Support Vector Machines)(二)

展开后,得

Ng第十二课:支持向量机(Support Vector Machines)(二)

这个时候发现我们可以只计算原始特征x和z内积的平方(时间复杂度是O(n)),就等价与计算映射后特征的内积。也就是说不需要花Ng第十二课:支持向量机(Support Vector Machines)(二)时间了。

现在看一下映射函数(n=3时),根据上面的公式,得到

Ng第十二课:支持向量机(Support Vector Machines)(二)

也就是说核函数Ng第十二课:支持向量机(Support Vector Machines)(二)只能在选择这样的Ng第十二课:支持向量机(Support Vector Machines)(二)作为映射函数时才能够等价于映射后特征的内积。

再看一个核函数

Ng第十二课:支持向量机(Support Vector Machines)(二)

对应的映射函数(n=3时)是

Ng第十二课:支持向量机(Support Vector Machines)(二)

更一般地,核函数Ng第十二课:支持向量机(Support Vector Machines)(二)对应的映射后特征维度为Ng第十二课:支持向量机(Support Vector Machines)(二)。(求解方法参见http://zhidao.baidu.com/question/16706714.html)。

由于计算的是内积,我们可以想到IR中的余弦相似度,如果x和z向量夹角越小,那么核函数值越大,反之,越小。因此,核函数值是Ng第十二课:支持向量机(Support Vector Machines)(二)Ng第十二课:支持向量机(Support Vector Machines)(二)的相似度。

再看另外一个核函数

Ng第十二课:支持向量机(Support Vector Machines)(二)

这时,如果x和z很相近(Ng第十二课:支持向量机(Support Vector Machines)(二)),那么核函数值为1,如果x和z相差很大(Ng第十二课:支持向量机(Support Vector Machines)(二)),那么核函数值约等于0。由于这个函数类似于高斯分布,因此称为高斯核函数,也叫做径向基函数(Radial Basis Function 简称RBF)。它能够把原始特征映射到无穷维。

既然高斯核函数能够比较x和z的相似度,并映射到0到1,回想logistic回归,sigmoid函数可以,因此还有sigmoid核函数等等。

下面有张图说明在低维线性不可分时,映射到高维后就可分了,使用高斯核函数。

Ng第十二课:支持向量机(Support Vector Machines)(二)

注意,使用核函数后,怎么分类新来的样本呢?线性的时候我们使用SVM学习出w和b,新来样本x的话,我们使用Ng第十二课:支持向量机(Support Vector Machines)(二)来判断,如果值大于等于1,那么是正类,小于等于是负类。在两者之间,认为无法确定。如果使用了核函数后,Ng第十二课:支持向量机(Support Vector Machines)(二)就变成了Ng第十二课:支持向量机(Support Vector Machines)(二),是否先要找到Ng第十二课:支持向量机(Support Vector Machines)(二),然后再预测?答案肯定不是了,找Ng第十二课:支持向量机(Support Vector Machines)(二)很麻烦,回想之前说过的

Ng第十二课:支持向量机(Support Vector Machines)(二)

只需将Ng第十二课:支持向量机(Support Vector Machines)(二)替换成Ng第十二课:支持向量机(Support Vector Machines)(二),然后值的判断同上。

8 核函数有效性判定(应用举例)

问题:给定一个函数K,我们能否使用K来替代计算Ng第十二课:支持向量机(Support Vector Machines)(二),也就说,是否能够找出一个Ng第十二课:支持向量机(Support Vector Machines)(二),使得对于所有的x和z,都有Ng第十二课:支持向量机(Support Vector Machines)(二)

比如给出了Ng第十二课:支持向量机(Support Vector Machines)(二),是否能够认为K是一个有效的核函数。

下面来解决这个问题,给定m个训练样本Ng第十二课:支持向量机(Support Vector Machines)(二),每一个Ng第十二课:支持向量机(Support Vector Machines)(二)对应一个特征向量。那么,我们可以将任意两个Ng第十二课:支持向量机(Support Vector Machines)(二)Ng第十二课:支持向量机(Support Vector Machines)(二)带入K中,计算得到Ng第十二课:支持向量机(Support Vector Machines)(二)。I可以从1到m,j可以从1到m,这样可以计算出m*m的核函数矩阵(Kernel Matrix)。为了方便,我们将核函数矩阵和Ng第十二课:支持向量机(Support Vector Machines)(二)都使用K来表示。

如果假设K是有效地核函数,那么根据核函数定义

Ng第十二课:支持向量机(Support Vector Machines)(二)

可见,矩阵K应该是个对称阵。接着来得出一个更强的结论,首先使用符号Ng第十二课:支持向量机(Support Vector Machines)(二)来表示映射函数Ng第十二课:支持向量机(Support Vector Machines)(二)的第k维属性值。那么对于任意向量z,得

Ng第十二课:支持向量机(Support Vector Machines)(二)

最后一步和前面计算Ng第十二课:支持向量机(Support Vector Machines)(二)时类似。从这个公式可以看出,如果K是个有效的核函数(即Ng第十二课:支持向量机(Support Vector Machines)(二)Ng第十二课:支持向量机(Support Vector Machines)(二)等价),那么,在训练集上得到的核函数矩阵K应该是半正定的(Ng第十二课:支持向量机(Support Vector Machines)(二)

这样我们得到一个核函数的必要条件:

K是有效的核函数 ==> 核函数矩阵K是对称半正定的。

可幸的是,这个条件也是充分的,由Mercer定理来表达。

Mercer定理:

如果函数K是Ng第十二课:支持向量机(Support Vector Machines)(二)上的映射(也就是从两个n维向量映射到实数域)。那么如果K是一个有效核函数(也称为Mercer核函数),那么当且仅当对于训练样例Ng第十二课:支持向量机(Support Vector Machines)(二),其相应的核函数矩阵是对称半正定的。

Mercer定理表明为了证明K是有效的核函数,不用去寻找Ng第十二课:支持向量机(Support Vector Machines)(二),而只需要在训练集上求出各个Ng第十二课:支持向量机(Support Vector Machines)(二),然后判断矩阵K是否是半正定(使用左上角主子式大于等于零等方法)即可。

核函数不仅仅用在SVM上,但凡在一个模型后算法中出现了Ng第十二课:支持向量机(Support Vector Machines)(二),我们都可以常使用Ng第十二课:支持向量机(Support Vector Machines)(二)去替换,这可能能够很好地改善我们的算法。

9 规则化和不可分情况处理(Regularization and the non-separable case)

之前讨论的情况都是建立在样本线性可分的假设上,当样例线性不可分时,可以尝试使用核函数来将特征映射到高维,这样很可能就可分了。然而,映射后我们也不能100%保证可分。那怎么办呢,这就需要将模型进行调整,以保证在不可分的情况下,也能够尽可能地找出分隔超平面。

下面两张图:

Ng第十二课:支持向量机(Support Vector Machines)(二)

可以看到一个离群点(可能是噪声)可以造成超平面的移动,间隔缩小,可见以前的模型对噪声非常敏感。再有甚者,如果离群点在另外一个类中,那么这时候就是线性不可分了。

这时候我们应该允许一些点游离并在在模型中违背限制条件(函数间隔大于1)。设计得到新的模型如下(也称软间隔):

Ng第十二课:支持向量机(Support Vector Machines)(二)

引入非负参数Ng第十二课:支持向量机(Support Vector Machines)(二)后(称为松弛变量),就允许某些样本点的函数间隔小于1,即在最大间隔区间里面,或者函数间隔是负数,即样本点在对方的区域中。而放松限制条件后,我们需要重新调整目标函数,以对离群点进行处罚,目标函数后面加上的Ng第十二课:支持向量机(Support Vector Machines)(二)就表示离群点越多,目标函数值越大,而我们要求的是尽可能小的目标函数值。这里的C是离群点的权重,C越大表明离群点对目标函数影响越大,也就是越不希望看到离群点。我们看到,目标函数控制了离群点的数目和程度,使大部分样本点仍然遵守限制条件。

模型修改后,拉格朗日公式也要修改如下:

Ng第十二课:支持向量机(Support Vector Machines)(二)

这里的Ng第十二课:支持向量机(Support Vector Machines)(二)Ng第十二课:支持向量机(Support Vector Machines)(二)都是拉格朗日乘子,回想在拉格朗日对偶中提到的求法,先写出拉格朗日公式(如上),然后将其看作是变量w和b的函数,分别对其求偏导,得到w和b的表达式。然后代入公式中,求带入后公式的极大值。整个推导过程类似以前的模型,这里只写出最后结果如下:

Ng第十二课:支持向量机(Support Vector Machines)(二)

此时,我们发现没有了参数Ng第十二课:支持向量机(Support Vector Machines)(二),与之前模型唯一不同在于Ng第十二课:支持向量机(Support Vector Machines)(二)又多了Ng第十二课:支持向量机(Support Vector Machines)(二)的限制条件。需要提醒的是,b的求值公式也发生了改变,改变结果在SMO算法里面介绍。先看看KKT条件的变化:

Ng第十二课:支持向量机(Support Vector Machines)(二)

第一个式子表明在两条间隔线外的样本点前面的系数为0,离群样本点前面的系数为C,而支持向量(也就是在超平面两边的最大间隔线上)的样本点前面系数在(0,C)上。通过KKT条件可知,某些在最大间隔线上的样本点也不是支持向量,相反也可能是离群点。

10 坐标上升法(Coordinate ascent)

在最后讨论Ng第十二课:支持向量机(Support Vector Machines)(二)的求解之前,先看看坐标上升法的基本原理。假设要求解下面的优化问题:

Ng第十二课:支持向量机(Support Vector Machines)(二)

这里W是Ng第十二课:支持向量机(Support Vector Machines)(二)向量的函数。之前在回归中提到过两种求最优解的方法,一种是梯度下降法,另外一种是牛顿法。现在我们再讲一种方法称为坐标上升法(求解最小值问题时,称作坐标下降法,原理一样)。

方法过程:

Ng第十二课:支持向量机(Support Vector Machines)(二)

最里面语句的意思是固定除Ng第十二课:支持向量机(Support Vector Machines)(二)之外的所有Ng第十二课:支持向量机(Support Vector Machines)(二),这时W可看作只是关于Ng第十二课:支持向量机(Support Vector Machines)(二)的函数,那么直接对Ng第十二课:支持向量机(Support Vector Machines)(二)求导优化即可。这里我们进行最大化求导的顺序i是从1到m,可以通过更改优化顺序来使W能够更快地增加并收敛。如果W在内循环中能够很快地达到最优,那么坐标上升法会是一个很高效的求极值方法。

通过一张图来展示:

Ng第十二课:支持向量机(Support Vector Machines)(二)

椭圆代表了二次函数的各个等高线,变量数为2,起始坐标是(2,-2)。图中的直线式迭代优化的路径,可以看到每一步都会向最优值前进一步,而且前进路线是平行于坐标轴的,因为每一步只优化一个变量。(如果每次优化两个变量就是曲线收敛了)

Ng第十二课:支持向量机(Support Vector Machines)(二)的更多相关文章

  1. 十二、支持向量机(Support Vector Machines)

    12.1 优化目标 参考视频: 12 - 1 - Optimization Objective (15 min).mkv 到目前为止,你已经见过一系列不同的学习算法.在监督学习中,许多学习算法的性能都 ...

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

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

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

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

  4. Ng第十二课:支持向量机(Support Vector Machines)(三)

    11 SMO优化算法(Sequential minimal optimization) SMO算法由Microsoft Research的John C. Platt在1998年提出,并成为最快的二次规 ...

  5. 斯坦福第十二课:支持向量机(Support Vector Machines)

    12.1  优化目标 12.2  大边界的直观理解 12.3  数学背后的大边界分类(可选) 12.4  核函数 1 12.5  核函数 2 12.6  使用支持向量机 12.1  优化目标 到目前为 ...

  6. 机器学习课程-第7周-支持向量机(Support Vector Machines)

    1. 优化目标 在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法A还是学习算法B,而更重要的是,应用这些算法时,所创建的大量数据在应用这些算法时,表现情况通常依赖于你的 ...

  7. Ng第十二课:支持向量机(Support Vector Machines)(一)

    1 目录 支持向量机基本上是最好的有监督学习算法了,从logistic回归出发,引出了SVM,揭示模型间的联系,过渡自然. 2 重新审视logistic回归 Logistic回归目的是从特征学习出一个 ...

  8. stanford coursera 机器学习编程作业 exercise 6(支持向量机-support vector machines)

    在本练习中,先介绍了SVM的一些基本知识,再使用SVM(支持向量机 )实现一个垃圾邮件分类器. 在开始之前,先简单介绍一下SVM ①从逻辑回归的 cost function 到SVM 的 cost f ...

  9. 机器学习(八)--------支持向量机 (Support Vector Machines)

    与逻辑回归和神经网络相比,支持向量机或者简称 SVM,更为强大. 人们有时将支持向量机看作是大间距分类器. 这是我的支持向量机模型代价函数 这样将得到一个更好的决策边界 理解支持向量机模型的做法,即努 ...

随机推荐

  1. Backtracking algorithm: rat in maze

    Sept. 10, 2015 Study again the back tracking algorithm using recursive solution, rat in maze, a clas ...

  2. yum安装rz和sz

    yum install lrzsz

  3. 2016 11 9遇到问题 http请求的各种方式

    遇到问题:对接网易七鱼 调用他们接口是出现问题 1.对方要求  除上传文件外,其他所有接口请求Content-Type类型为:application/json;charset=utf-8:请求内容需要 ...

  4. 201521123100 《Java程序设计》第3周学习总结

    1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 2. 书面作 ...

  5. Codeforces1062B. Math(合数分解)

    题目链接:传送门 题目: B. Math time limit per test second memory limit per test megabytes input standard input ...

  6. JVisualVM远程监控

    本文主要转自:http://blog.iamzsx.me/show.html?id=394002 http://www.wl566.com/wz/64022.html 1. 通过JMX方式监控远程li ...

  7. Asp.net的生命周期之页生命周期

    参考:http://msdn.microsoft.com/zh-cn/library/ms178472%28v=vs.100%29.aspx http://msdn.microsoft.com/zh- ...

  8. POJ.1797 Heavy Transportation (Dijkstra变形)

    POJ.1797 Heavy Transportation (Dijkstra变形) 题意分析 给出n个点,m条边的城市网络,其中 x y d 代表由x到y(或由y到x)的公路所能承受的最大重量为d, ...

  9. linux--lsof

    lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 ...

  10. [Bzoj1009][HNOI2008]GT考试(KMP)(矩乘优化DP)

    1009: [HNOI2008]GT考试 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 4309  Solved: 2640[Submit][Statu ...