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

机器学习中最小二乘与梯度下降发的区别

http:www.zhihu.comquestion20822481知乎用户,非文,非理Spirit_Dongdong、Wildog、mtPractices等人赞同同意@张子权的说

http://www.zhihu.com/question/20822481

知乎用户,非文, 非理

Spirit_Dongdong、Wildog、mt Practices 等人赞同
同意 @张子权 的说法, 稍微再补充一下. 看问题估计, 题主可能是在学 machine learning 的东西, 所以才会有此问题. 但正如其他人指出的, 其实两种方法并不太具有可比性. 不过我当时在学的时候也有类似的问题. 当时我的问题是, 最小二乘法的矩阵解法和梯度下降法的区别在哪里? 我估摸着题主可能是想问这个问题, 所以稍微回答一下. 如果我理解错了, 直接忽视下文即可.

其实, 在计算量方面, 两者有很大的不同, 因而在面对给定的问题时, 可以有选择性的根据问题的性质选择两种方法中的一个.
具体来说, 最小二乘法的矩阵公式是 ,, 这里的 A 是一个矩阵, b 是一个向量. 如果有离散数据点, ,, 而想要拟合的方程又大致形如 ,, 那么, A 就是一个 , 的矩阵, 第 i 行的数据点分别是 ,, 而 b 则是一个向量, 其值为 ,. 而又已知, 计算一个矩阵的逆是相当耗费时间的, 而且求逆也会存在数值不稳定的情况 (比如对希尔伯特矩阵求逆就几乎是不可能的). 因而这样的计算方法有时不值得提倡.
相比之下, 梯度下降法虽然有一些弊端, 迭代的次数可能也比较高, 但是相对来说计算量并不是特别大. 而且, 在最小二乘法这个问题上, 收敛性有保证. 故在大数据量的时候, 反而是梯度下降法 (其实应该是其他一些更好的迭代方法) 更加值得被使用.

当然, 其实梯度下降法还有别的其他用处, 比如其他找极值问题. 另外, 牛顿法也是一种不错的方法, 迭代收敛速度快于梯度下降法, 只是计算代价也比较高. 题主有兴趣可以查阅相关资料
编辑于 2013-11-16 1 条评论 感谢 分享 收藏 • 没有帮助 • 举报 

,张子权,Ph.D candidate in mathematical finance

王木木子、冲月、杨炎其 等人赞同
相同
1.本质相同:两种方法都是在给定已知数据(independent & dependent variables)的前提下对dependent variables算出出一个一般性的估值函数。然后对给定新数据的dependent variables进行估算。
2.目标相同:都是在已知数据的框架内,使得估算值与实际值的总平方差尽量更小(事实上未必一定要使用平方),估算值与实际值的总平方差的公式为:
,其中,为第i组数据的independent variable,,为第i组数据的dependent variable,,为系数向量。

不同
1.实现方法和结果不同:最小二乘法是直接对,求导找出全局最小,是非迭代法。而梯度下降法是一种迭代法,先给定一个,,然后向,下降最快的方向调整,,在若干次迭代之后找到局部最小。梯度下降法的缺点是到最小点的时候收敛速度变慢,并且对初始点的选择极为敏感,其改进大多是在这两方面下功夫。
编辑于 2013-03-21 1 条评论        

,知乎用户,近期实在无所事事

Spirit_Dongdong、知乎用户、王小小 赞同
最小二乘法源自线性回归,属于数理统计。在回归中样本量(n)会远大于变量数量(m),最小二乘法目的在于解决n个方程解m个未知数的问题。求极值的过程不是最小二乘法的重点,其重点在于平衡了n个样本得出m个方程进而去解m个未知参数。再说其中的极值,线性回归这一前提决定了其天生就只有一个极值点,即全局最小。

梯度上升(下降)法是一个单纯的求极值方法,用以应对各种古怪的极值求解,属于优化算法。具体的@张子权已经说清楚了。
发布于 2013-03-21 添加评论        

,江磊,计算数学在读 骑车

tidy honey、Ansel Ting、知乎用户 等人赞同
最速下降法是一种最优化求极值的方法。与此相关的还有共轭梯度法,牛顿法,拟牛顿法(为解决海森矩阵求逆代价过大的问题)等。
当然很多线性方程组也可以看做一个优化问题,因为只需要优化所谓残差即可,Ax-b。
最小二乘法本质上是一个优化问题,或者说本质上是一个解线性方程组问题,如上面所提到的,当然这个方程组很有可能是超定的,简单说即方程个数远大于未知量个数,这样的方程在线性代数意义下是无解的,但我们可以在一个更广阔的空间中去求解它,比如说将残差(Ax-b)极小化,就是最小二乘。
至于之前答案提到的数值稳定性,收敛性又是另一些问题了。不知道是否说清楚了,欢迎讨论。
编辑于 2013-07-10 添加评论        

,知乎用户,A follower in the Church of Emacs

杨炎其、方琨、mt Practices 等人赞同
最小二乘法的目标:求误差的最小平方和,对应有两种:线性和非线性。线性最小二乘的解是closed-form即,,而非线性最小二乘没有closed-form,通常用迭代法求解。

迭代法,即在每一步update未知量逐渐逼近解,可以用于各种各样的问题(包括最小二乘),比如求的不是误差的最小平方和而是最小立方和。

机器学习中最小二乘与梯度下降发的区别


推荐阅读
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
author-avatar
魏承辉符合_821
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有