【cs229-Lecture8】顺序最小优化算法

ref:    blog:http://zhihaozhang.github.io/2014/05/20/svm4/

《数据挖掘导论》


真正的大神是当采用的算法表现出不是非常好的性能的时候,懂得如何去更改算法的人。

本节课的三个内容:

  • Kernels:核,用于构建非线性的分类器

  • Soft Margin:软间隔,减小噪声对分类的影响
  • SMO算法:

1:核

当我们遇到左边的数据,显然,通过一条线是无法讲两种类别分开,那么,为什么利用核技术就可以呢?

a:属性变换

说的通俗一些,就是原来用变量一个变量表示,现在用两个或者多个变量表示,这样做的好处是什么呢?

显然,这样变量的“表现能力”更强大了,而且,不再局限于原始的维数。但是,也会带来一些问题:如更高维时,计算量会增加,维数灾难。

当然,这里还有一个相似度的概念,一个变量表示和多个向量表示,虽然表现能力更强大了,但是,必须要相似,不然就失去了映射的意义。

b:学习非线性SVM模型

问题转化为:

c:核技术

d:Mercer定理

2:软间隔

之前的SVM公式只能构造没有错误的决策边界,利用软间隔,我们可以“原谅”一些错误的存在。避免一些噪声的影响,上图中,我们认为B1作为分类超平面比B2更加适合。

a:松弛变量

那么,问题来了,我们能够容忍多大的误差呢?这里有个度,如下图:

显然,这种属于不能忍的情况。

b:KKT

3:SMO算法

a:坐标上升算法(coordinate assent algorithm)

由于种种原因,同时优化所有变量不太可能,为了得到全局最优,一次只优化一个变量,而保持其他变量不动的方法。这种方法可行的原因是通常优化一个变量的效率高且算法会比较容易实现。
特别地,当只有x,y两个变量的时候,优化的过程如下图:

图中的直线迭代优化的路径,可以看到每一步都会朝着最优解前进一小步,前进的路线是沿着坐标轴方向的,因为每一次都只优化一个变量,而保持另一个变量不变。

b:SMO算法

简化版SMO算法

和坐标上升法的思想类似,SMO算法也想每次只更新一个变量,但是很可惜,

上式限定了,当固定其他所有参数,那么α1上也是个定值,变不了;因此不得不将多增加一个αi,这样α1才能变动,关于αi的选择,有启发式方法,这里先不考虑,介绍一种简单的SMO实现方法。

简化版SMO算法的主要步骤

创建一个alpha向量并将其初始化为0向量
当迭代次数小于最大迭代次数时(外循环)
	对数据集中的每个数据向量(内循环):
		如果该数据向量可以被优化:
		随机选择另一个数据向量
		同时优化这两个向量
		如果两个向量都不能被优化,退出内循环
	如果所有向量都没有被优化,增加迭代数目,继续下一次循环

如何更新α

SMO之所以高效是因为,当固定了其他参数后,对一个参数的优化过程很高效,现在我们就来看看到底怎么优化这一个参数。
假设我们选取了初始值{α1,α2,…,αn}并且满足KKT条件,下面固定{α3,…,αn},这样W就是α1,α2的函数,而α1,α2满足条件:

为了方便,我们将等式右边的常数值表示为k。
根据y1、y2符号是否相同,可以分为以下两种情况:

接下来以左边的图为例,来说明以下α的选取范围。
当y1、y2异号时,直线的斜率是1,由于KKT条件限定了α1、α2的范围必须在边长为c的正方形内,因此直线有下面两种可能性,

从图中不难总结出取值的上限H和下限L:
L=max(0,α2-α1),H=min(C,C+α2-α1)
同理,y1、y2同号时,
L=max(0,α2+α1-c),H=min(C,α2+α1)

将α1用α2来表示,带回W中,W会被表示成一个二次函数,a(α2)^2+bα2+c,二次函数求最值问题是高中最常做的一个问题了,基本思想是数形结合,找对称轴,然后看变量的取值范围里是否包含了对称轴,如下图:

根据能否取得对称轴,我们可以得到以下更新α2的原则:

有了α2,求解新的α1就不是难事了。

时间: 2024-10-10 16:08:56

【cs229-Lecture8】顺序最小优化算法的相关文章

机器学习(七、八):SVM(支持向量机)【最优间隔分类、顺序最小优化算法】

由于网上有讲得非常详细的博文,所以这一节就不自己写了,写也写不到别人那么好和透彻. jerrylead支持向量机系列: 支持向量机(一):http://www.cnblogs.com/jerrylead/archive/2011/03/13/1982639.html 支持向量机(二):http://www.cnblogs.com/jerrylead/archive/2011/03/13/1982684.html 支持向量机(三):http://www.cnblogs.com/jerrylead/

顺序最小化算法

核方法 考虑这样一个问题,如果输入X是房子的面积,我们要使用回归方法预测房子的价格.从样本点的分布中,我们看到三次方程(即使用x,x2,x3进行回归曲线拟合)能够更好的拟合数据.为了区分这两组不同的变量(前者为x,后者为(x,x2,x3)),我们称问题的特征x为原始特征(attribute).当我们把原始特征扩展到一些新的变量的时候,我们称这些新生成的变量为输入特征(features,当然,不同的人对这两种变量也存在不同的命名.但英文中主要采用attribute和feature进行区分).我们使

深度解读最流行的优化算法:梯度下降

深度解读最流行的优化算法:梯度下降 By 机器之心2016年11月21日 15:08 梯度下降法,是当今最流行的优化(optimization)算法,亦是至今最常用的优化神经网络的方法.本文旨在让你对不同的优化梯度下降法的算法有一个直观认识,以帮助你使用这些算法.我们首先会考察梯度下降法的各种变体,然后会简要地总结在训练(神经网络或是机器学习算法)的过程中可能遇到的挑战.(本文的中文版 PDF 下载地址) 目录: 梯度下降的各种变体 批量梯度下降(Batch gradient descent)

梯度下降优化算法综述

本文翻译自Sebastian Ruder的"An overview of gradient descent optimization algoritms",作者首先在其博客中发表了这篇文章,其博客地址为:An overview of gradient descent optimization algoritms,之后,作者将其整理完放在了arxiv中,其地址为:An overview of gradient descent optimization algoritms,在翻译的过程中以

优化算法—梯度下降

转自:https://www.cnblogs.com/shixiangwan/p/7532858.html 梯度下降法,是当今最流行的优化(optimization)算法,亦是至今最常用的优化神经网络的方法.本文旨在让你对不同的优化梯度下降法的算法有一个直观认识,以帮助你使用这些算法.我们首先会考察梯度下降法的各种变体,然后会简要地总结在训练(神经网络或是机器学习算法)的过程中可能遇到的挑战. 目录: 梯度下降的各种变体 批量梯度下降(Batch gradient descent) 随机梯度下降

算法分类 ,时间复杂度 ,空间复杂度,优化算法

算法 今天给大家带来一篇关于算法排序的分类,算法的时间复杂度,空间复杂度,还有怎么去优化算法的文章,喜欢的话,可以关注,有什么问题,可以评论区提问,可以与我私信,有什么好的意见,欢迎提出. 前言: 算法的复杂度分为时间复杂度与空间复杂度,时间复杂度指执行算法需要需要的计算工作量,空间复杂度值执行算法需要的内存量,可能在运行一些小数据的时候,大家体会不到算法的时间与空间带来的体验. 优化算法就是将算法的时间优化到最快,将空间优化到最小,假如你写的mod能够将百度游览器的搜索时间提升0.5秒,那都是

细菌觅食优化算法:理论基础,分析,以及应用(未完)

原作者:Swagatam Das,Arijit Biswas,Sambarta Dasgupta,和Ajith Abraham  [摘 要]细菌觅食优化算法(Bacterial foraging optimization algorithm[BFOA])已经被分布式优化和控制的同行们当作一种全局性的优化算法接受.BFOA是由大肠杆菌的群体觅食行为所启发而总结出来 的.BFOA已经吸引了足够多的研究者的注意,由于它出现在解决真实世界中一些应用领域上优化问题的高效性.E.coli 的群体策略的生物基

max-min fairness 最大最小公平算法

我们总会面临这样的问题,需要给一组用户分配一些稀缺资源,站在资源分配者的角度,他们具有等价的权利获取资源,但实际上,一些用户可能获取较少的资源就能够满足需要,这样看来,他们对资源的获取又不是完全等价的,似乎不适合去平分资源,因此就有了最大最小公平算法. 最大最小公平算法定义如下(不带权):      1.资源按照需求递增的顺序进行分配:      2.不存在用户获得的资源超过自身的需求::      3.对于未满足的用户,等价分享剩余资源: 算法实现逻辑(不带权): 首先假定用户集合有n个用户,

梯度优化算法总结(转载)以及solver中相关参数解释

原文地址:http://sebastianruder.com/optimizing-gradient-descent/ 如果熟悉英文的话,强烈推荐阅读原文,毕竟翻译过程中因为个人理解有限,可能会有谬误,还望读者能不吝指出.另外,由于原文太长,分了两部分翻译,本篇主要是梯度下降优化算法的总结,下篇将会是随机梯度的并行和分布式,以及优化策略的总结. 梯度下降是优化中最流行的算法之一,也是目前用于优化神经网络最常用到的方法.同时,每个优秀的深度学习库都包含了优化梯度下降的多种算法的实现(比如, las