r语言 梯度提升决策树有没有最优化中梯度下降法的包

文章 - 276
评论 - 391最小二乘法和梯度下降法有哪些区别?
按投票排序
最小二乘法的目标:求误差的最小平方和,对应有两种:线性和非线性。线性最小二乘的解是closed-form即,而非线性最小二乘没有closed-form,通常用迭代法求解。迭代法,即在每一步update未知量逐渐逼近解,可以用于各种各样的问题(包括最小二乘),比如求的不是误差的最小平方和而是最小立方和。梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。高斯-牛顿法是另一种经常用于求解非线性最小二乘的迭代法(一定程度上可视为标准非线性最小二乘求解方法)。还有一种叫做Levenberg-Marquardt的迭代法用于求解非线性最小二乘问题,就结合了梯度下降和高斯-牛顿法。所以如果把最小二乘看做是优化问题的话,那么梯度下降是求解方法的一种,是求解线性最小二乘的一种,高斯-牛顿法和Levenberg-Marquardt则能用于求解非线性最小二乘。具体可参考维基百科(, , , )
相同1.本质相同:两种方法都是在给定已知数据(independent & dependent variables)的前提下对dependent variables算出出一个一般性的估值函数。然后对给定新数据的dependent variables进行估算。2.目标相同:都是在已知数据的框架内,使得估算值与实际值的总平方差尽量更小(事实上未必一定要使用平方),估算值与实际值的总平方差的公式为:其中为第i组数据的independent variable,为第i组数据的dependent variable,为系数向量。不同1.实现方法和结果不同:最小二乘法是直接对求导找出全局最小,是非迭代法。而梯度下降法是一种迭代法,先给定一个,然后向下降最快的方向调整,在若干次迭代之后找到局部最小。梯度下降法的缺点是到最小点的时候收敛速度变慢,并且对初始点的选择极为敏感,其改进大多是在这两方面下功夫。
的说法, 稍微再补充一下. 看问题估计, 题主可能是在学 machine learning 的东西, 所以才会有此问题. 但正如其他人指出的, 其实两种方法并不太具有可比性. 不过我当时在学的时候也有类似的问题. 当时我的问题是, 最小二乘法的矩阵解法和梯度下降法的区别在哪里? 我估摸着题主可能是想问这个问题, 所以稍微回答一下. 如果我理解错了, 直接忽视下文即可.其实, 在计算量方面, 两者有很大的不同, 因而在面对给定的问题时, 可以有选择性的根据问题的性质选择两种方法中的一个.具体来说, 最小二乘法的矩阵公式是 , 这里的 A 是一个矩阵, b 是一个向量. 如果有离散数据点, , 而想要拟合的方程又大致形如 , 那么, A 就是一个
的矩阵, 第 i 行的数据点分别是 , 而 b 则是一个向量, 其值为 . 而又已知, 计算一个矩阵的逆是相当耗费时间的, 而且求逆也会存在数值不稳定的情况 (比如对希尔伯特矩阵求逆就几乎是不可能的). 因而这样的计算方法有时不值得提倡.相比之下, 梯度下降法虽然有一些弊端, 迭代的次数可能也比较高, 但是相对来说计算量并不是特别大. 而且, 在最小二乘法这个问题上, 收敛性有保证. 故在大数据量的时候, 反而是梯度下降法 (其实应该是其他一些更好的迭代方法) 更加值得被使用.当然, 其实梯度下降法还有别的其他用处, 比如其他找极值问题. 另外, 牛顿法也是一种不错的方法, 迭代收敛速度快于梯度下降法, 只是计算代价也比较高. 题主有兴趣可以查阅相关资料
最小二乘法源自线性回归,属于数理统计。在回归中样本量(n)会远大于变量数量(m),最小二乘法目的在于解决n个方程解m个未知数的问题。求极值的过程不是最小二乘法的重点,其重点在于平衡了n个样本得出m个方程进而去解m个未知参数。再说其中的极值,线性回归这一前提决定了其天生就只有一个极值点,即全局最小。梯度上升(下降)法是一个单纯的求极值方法,用以应对各种古怪的极值求解,属于优化算法。具体的已经说清楚了。
  通常我们所说的狭义的最小二乘,指的是在线性回归下采用最小二乘准则(或者说叫做最小平方),进行线性拟合参数求解的、矩阵形式的公式方法。所以,这里的「最小二乘法」应叫做「最小二乘算法」或者「最小二乘方法」,百度百科「最小二乘法」词条中对应的英文为「The least square
method」。  这里,基于线性回归,有两个细节比较重要:  第一,线性回归的模型假设,这是最小二乘方法的优越性前提,否则不能推出最小二乘是最佳(即方差最小)的无偏估计,具体请参考高斯-马尔科夫定理。特别地,当随机噪声服从正态分布时,最小二乘与最大似然等价。  第二,由于是线性回归/拟合,因此可以很容易的求出全局最优的闭式解close form solution,也即我们通常看到的那几个矩阵形式,给了input data可以一步到位算拟合参数,而不是像梯度下降法或者牛顿法那样一点点地迭代优化调参最后到达极值点。  而广义的最小二乘,指的是上文提到过的最小二乘准则,本质上是一种evaluation rule或者说objective funcion,这里的「最小二乘法」应叫做「最小二乘法则」或者「最小二乘准则」,英文可呼为LSE(least square error)。  举个例子,我要优化一个深度神经网络DNN(Deep neural network)的网络参数(换言之,优化此网络对于已知数据拟合结果的正确性),可不可以用最小二乘准则去衡量某一拟合结果相对于标准答案的偏差程度呢?可以。而同时,由于DNN模型本身的复杂性,我们没有办法像线性拟合时那样,在理论和公式的层面求出一个close form solution,因此需要引入所谓的BP算法(实质上就是梯度下降法)进行参数的迭代求解。  But(^_^),上面虽然给出了最小二乘准则+梯度下降法串联使用的例子,但实际的拟合效果必定会比较一般,原因在于DNN这一体系相当于非线性回归,因此最小二乘不好,反而是logistic回归+最大似然=交叉熵准则Cross Entropy在DNN参数优化算法中的更有效和广泛一些。当然,这就是另一个话题了。综上:  狭义的最小二乘方法,是线性假设下的一种有闭式解的参数求解方法,最终结果为全局最优;  梯度下降法,是假设条件更为广泛(无约束)的,一种通过迭代更新来逐步进行的参数优化方法,最终结果为局部最优;  广义的最小二乘准则,是一种对于偏差程度的评估准则,与上两者不同。  水平所限,欢迎讨论指正。
最速下降法是一种最优化求极值的方法。与此相关的还有共轭梯度法,牛顿法,拟牛顿法(为解决海森矩阵求逆代价过大的问题)等。当然很多线性方程组也可以看做一个优化问题,因为只需要优化所谓残差即可,Ax-b。最小二乘法本质上是一个优化问题,或者说本质上是一个解线性方程组问题,如上面所提到的,当然这个方程组很有可能是超定的,简单说即方程个数远大于未知量个数,这样的方程在线性代数意义下是无解的,但我们可以在一个更广阔的空间中去求解它,比如说将残差(Ax-b)极小化,就是最小二乘。至于之前答案提到的数值稳定性,收敛性又是另一些问题了。不知道是否说清楚了,欢迎讨论。
最小二乘法是通过平方损失函数建立模型优化目标函数的一种思路,此时求解最优模型过程便具体化为最优化目标函数的过程了;而梯度下降法便对应最优化目标函数的一种优化算法,具体求解的是使得目标函数能达到最优或者近似最优的参数集.
已有帐号?
社交帐号登录
无法登录?
社交帐号登录机器学习中的梯度下降法
最优化问题是算法中非常重要的一部分,几乎每一个机器学习算法的核心都是在处理最优化问题。
本文中我讲介绍一些机器学习领域中常用的且非常掌握的最优化算法,看完本篇文章后你将会明白:
什么是梯度下降法?
如何将梯度下降法运用到线性回归模型中?
如何利用梯度下降法处理大规模的数据?
梯度下降法的一些技巧
让我们开始吧!
梯度下降法
梯度下降法是一个用于寻找最小化成本函数的参数值的最优化算法。当我们无法通过计算(比如线性代数运算)求得函数的最优解时,我们可以利用梯度下降法来求解该问题。
梯度下降法的直觉体验
想象一个你经常用来吃谷物或储存受过的大碗,成本函数的形状类似于这个碗的造型。
碗表面上的任一随机位置表示当前系数对应的成本值,碗的底部则表示最优解集对应的成本函数值。梯度下降法的目标就是不断地尝试不同的系数值,然后评估成本函数并选择能够降低成本函数的参数值。重复迭代计算上述步骤直到收敛,我们就能获得最小成本函数值对应的最优解。
梯度下降法的过程
梯度下降法首先需要设定一个初始参数值,通常情况下我们将初值设为零(coefficient=0coefficient=0),接下来需要计算成本函数
cost=f(coefficient)cost=f(coefficient) 或者
cost=evaluate(f(coefficient))cost=evaluate(f(coefficient))。然后我们需要计算函数的导数(导数是微积分的一个概念,它是指函数中某个点处的斜率值),并设定学习效率参数(alpha)的值。
coefficient=coefficient&(alpha&delta)
coefficient=coefficient&(alpha&delta)
重复执行上述过程,直到参数值收敛,这样我们就能获得函数的最优解。
你可以看出梯度下降法的思路多么简单,你只需知道成本函数的梯度值或者需要优化的函数情况即可。接下来我将介绍如何将梯度下降法运用到机器学习领域中。
批量梯度下降法
所有的有监督机器学习算法的目标都是利用已知的自变量(X)数据来预测因变量(Y)的值。所有的分类和回归模型都是在处理这个问题。
机器学习算法会利用某个统计量来刻画目标函数的拟合情况。虽然不同的算法拥有不同的目标函数表示方法和不同的系数值,但是它们拥有一个共同的目标——即通过最优化目标函数来获取最佳参数值。
线性回归模型和逻辑斯蒂回归模型是利用梯度下降法来寻找最佳参数值的经典案例。
我们可以利用多种衡量方法来评估机器学习模型对目标函数的拟合情况。成本函数法是通过计算每个训练集的预测值和真实值之间的差异程度(比如残差平方和)来度量模型的拟合情况。
我们可以计算成本函数中每个参数所对应的导数值,然后通过上述的更新方程进行迭代计算。
在梯度下降法的每一步迭代计算后,我们都需要计算成本函数及其导数的情况。每一次的迭代计算过程就被称为一批次,因此这个形式的梯度下降法也被称为批量梯度下降法。
批量梯度下降法是机器学习领域中常见的一种梯度下降方法。
随机梯度下降法
处理大规模的数据时,梯度下降法的运算效率非常低。
因为梯度下降法在每次迭代过程中都需要计算训练集的预测情况,所以当数据量非常大时需要耗费较长的时间。
当你处理大规模的数据时,你可以利用随机梯度下降法来提高计算效率。
该算法与上述梯度下降法的不同之处在于它对每个随机训练样本都执行系数更新过程,而不是在每批样本运算完后才执行系数更新过程。
随机梯度下降法的第一个步骤要求训练集的样本是随机排序的,这是为了打乱系数的更新过程。因为我们将在每次训练实例结束后更新系数值,所以系数值和成本函数值将会出现随机跳跃的情况。通过打乱系数更新过程的顺序,我们可以利用这个随机游走的性质来避免模型不收敛的问题。
除了成本函数的计算方式不一致外,随机梯度下降法的系数更新过程和上述的梯度下降法一模一样。
对于大规模数据来说,随机梯度下降法的收敛速度明显高于其他算法,通常情况下你只需要一个小的迭代次数就能得到一个相对较优的拟合参数。
梯度下降法的一些建议
本节列出了几个可以帮助你更好地掌握机器学习中梯度下降算法的技巧:
绘制成本函数随时间变化的曲线:收集并绘制每次迭代过程中所得到的成本函数值。对于梯度下降法来说,每次迭代计算都能降低成本函数值。如果无法降低成本函数值,那么可以尝试减少学习效率值。
学习效率:梯度下降算法中的学习效率值通常为0.1,0.001或者0.0001。你可以尝试不同的值然后选出最佳学习效率值。
标准化处理:如果成本函数不是偏态形式的话,那么梯度下降法很快就能收敛。隐蔽你可以事先对输入变量进行标准化处理。
绘制成本均值趋势图:随机梯度下降法的更新过程通常会带来一些随机噪声,所以我们可以考虑观察10次、100次或1000次更新过程误差均值变化情况来度量算法的收敛趋势。
本文主要介绍了中的梯度下降法,通过阅读本文,你了解到:
最优化理论是机器学习中非常重要的一部分。
梯度下降法是一个简单的最优化算法,你可以将它运用到许多机器学习算法中。
批量梯度下降法先计算所有参数的导数值,然后再执行参数更新过程。
随机梯度下降法是指从每个训练实例中计算出导数并执行参数更新过程。
如果您对于梯度下降法还有疑问,请在评论区留下你的问题,我将尽我所能回答。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
R与最优化包
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口Gradient-Descent 梯度下降(可视化,两个例子),对于初学者来说有用。 matlab 251万源代码下载-
&文件名称: Gradient-Descent& & [
& & & & &&]
&&所属分类:
&&开发工具: matlab
&&文件大小: 3 KB
&&上传时间:
&&下载次数: 11
&&提 供 者:
&详细说明:梯度下降(可视化,两个例子),对于初学者来说有用。-Gradient Descent(visualization,two examples)
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&Gradient Descent 梯度下降\GD_alg_1.m&&.........................\GD_alg_2.m&&.........................\itera_ascent.m&&.........................\itera_descent.m&&.........................\testNaN.m&&Gradient Descent 梯度下降
&[]:很好,推荐下载
&近期下载过的用户:
&输入关键字,在本站251万海量源码库中尽情搜索:
&[] - 梯度下降法是一个最优化算法,常用于机器学习和人工智能当中用来递归性地逼近最小偏差模型
&[] - 梯度下降法在二维函数中的优化寻优,老师上课的例子,可以运行无误
&[] - 用MATLA实现机器学习中的批处理梯度下降法和随机梯度下降法
&[] - 自适应程序matlab代码,有详细说明,很不错,适合初学者!
&[] - 梯度下降算法仿真案例程序(模式识别)希望对您有用
&[] - 最优化算法,单纯形法,两阶段法,大M法,单纯形法(两步法)求解任意LP问题的可视化界面
&[] - 简单梯度下降法,用于迭代求极值,是一种最速下降法
&[] - 最优化方法作业 BFGS方法
有算法分析 步骤 实例 实验结果和C++源程序
&[] - Descent gradient method implement in matlab}

我要回帖

更多关于 梯度下降算法r语言 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信