我们是否需要梯度下降来找到线性回归模型的系数?


31

我正在尝试使用 Coursera资料。在本讲座中,Andrew Ng使用梯度下降算法来找到将误差函数(成本函数)最小化的线性回归模型的系数。

对于线性回归,是否需要梯度下降?看来我可以分析误差函数并将其设置为零以求解系数。那正确吗?


3
自1700年代以来,线性模型就得到了很好的处理。有很多不需要梯度下降(GD)的方法来处理它们。在非线性模型中,大多数方法都无法解决。安德鲁让您对一个非常简单的问题使用一种陌生但非常有用的方法,以便您可以调试方法。如果您对这种方法比较满意,则可以将其应用于令人震惊的非线性问题,而GD是获得结果的唯一方法。
EngrStudent-恢复莫妮卡2015年

10
不,您不必使用梯度下降之类的方法(在任何情况下,这都不是唯一的优化方法)。您确实可以按照您的建议分析地解决它;您可以针对每个参数进行微分,因此每个参数可获得一个方程式。但是,解决可以用其他方法完成的简单问题很有用;如果您已经知道答案,则可以确定何时使用梯度下降得到正确的答案。
Glen_b-恢复莫妮卡

如果成本函数是通常的二次(“距离”)罚分,则有一个封闭形式的解决方案。但是,梯度下降通常要快得多,因此通常使用它。
aginensky

此外,可以使用梯度下降法来找到解析上难以解决的问题的数值解。我怀疑他很早就使用梯度下降来适应它。我相信他随后将梯度下降与神经网络结合使用。不用说神经网络的情况更加复杂。从教学的情况来看,我认为从以前看过它们,使用线性模型,用于神经网络的梯度下降似乎更合理。
aginensky

3
感谢您将它们的链接发布到我看过的Andre Ng视频中。我已经知道了,尽管还没有达到极限,但是看到绝大多数人在“学习”优化中正在学习什么,更不用说至少他们中的一些人正在学习统计计算了,这是令人恐惧的。如果他知道斯坦福计算机科学系现在正在教的内容,那么计算和使用SVD的先驱Gene Golub将会在坟墓中翻滚。“最有趣的”视频是youtube.com/watch?v=B3vseKmgi8E,建议和2种最差算法最小二乘进行比较。
标记L.斯通

Answers:


43

线性最小二乘可以通过

0)如下所述,基于高质量的线性最小二乘法求解器,基于SVD或QR,用于无约束的线性最小二乘法,或者基于二次编程或圆锥优化的版本用于有界或线性约束的最小二乘法,如下所述。这种求解器已预先罐装,经过严格测试并准备就绪,可以使用。

1)SVD是最可靠且数值上最准确的方法,但比其他方法需要更多的计算量。在MATLAB中,无约束线性最小二乘问题A * X = b的SVD解为pinv(A)* b,这是非常准确和可靠的。

2)QR,相当可靠且在数值上准确,但不如SVD,而且比SVD快。在MATLAB中,无约束线性最小二乘问题A * X = b的QR解为A \ b,这是相当准确和可靠的,除非A病态,即条件数大。A \ b的计算速度比pinv(A)* b快,但不那么可靠或准确。

3)形成法线方程(从可靠性和数值精度的角度来看这是很困难的,因为它对条件数进行平方,这是一件很糟糕的事情)

3a)通过Cholesky分解解决(不好)

3b)显式求逆矩阵(HORRIBLE)

4)解决为二次规划问题或二阶锥问题

4a)使用高质量二次编程软件进行求解。这是可靠的并且在数值上准确,但是比SVD或QR需要更长的时间。但是,很容易在目标函数中添加有界或一般线性约束或线性或二次(两个范数)罚分或正则化项,并且仍然可以使用二次编程软件解决问题。

4b)使用高质量的圆锥优化软件解决二阶锥问题。备注与二次编程软件相同,但您也可以添加有界或一般线性约束以及其他圆锥约束或目标函数项,例如各种规范中的罚则或正则项。

5)使用高质量的通用非线性优化软件进行求解。这可能仍然可以很好地工作,但是通常会比二次编程或圆锥优化软件慢,并且可能不那么可靠。但是,有可能不仅在最小二乘优化中包括边界约束和一般线性约束,而且还包括非线性约束。此外,还可用于非线性最小二乘法,以及是否将其他非线性项添加到目标函数。

6)使用糟糕的通用非线性优化算法解决->永远不要这样做。

7)使用最坏的通用非线性优化算法进行求解,即梯度下降。仅当您想了解求解方法的糟糕程度和不可靠性时才使用此方法,如果有人告诉您使用梯度下降来解决线性最小二乘问题

7 i)向了解计算的人学习统计计算

7 ii)向对它有所了解的人学习优化。


好的帖子,为什么您认为Cholesky 不好,因为您的系统是PD?顺便说一句(而不是带有荒谬的条件编号),顺便说一句,我想在您想说(或添加)“ SVD”或“明确倒置”点的广义逆(显然主要用于教育目的)的概念。
usεr11852恢复单胞菌说,

2
顺便说一句,生成具有非常高条件数的矩阵的频率是荒谬的,尤其是那些未经清洗的群众(即,大多数人做线性最小二乘,特别是考虑到访问中的民主化问题),他们对此并不协调。
马克·L·斯通

1
mldivide,即 反斜杠,即\当m〜= n(最小二乘)时使用QR,如我在上面的第(2)款第二句中所述。但是,您会惊讶于MATLAB中有很多废话-不仅在工具箱中,其中的一些绝对是可怕的,而且在某些核心函数中的程度也较小。
Mark L. Stone

1
@ MarkL.Stone,很好的答案!您能否再解释一下为什么不建议使用Gradient下降来求解最小二乘!(据我了解,与您上面提到的其他方法(方向解决方案方法相比),这只是一种迭代方法)。此外,您还可以对此问题发表评论吗:“如果我有n> = 30,000个问题的特征,则法线方程方法将非常慢,因为将n * n矩阵求逆会很糟糕!另一方面,GD可以在此工作很漂亮!对SVD和QR的性能有任何想法”。任何建议都会有所帮助。
阿努

1
@ anu仅可将梯度下降用作最后的选择。仅当问题太大而无法通过SVD或QR解决时。永远不要形成法线方程,更不用说显式地将矩阵求逆来求解法线方程了。如今,30,000个功能听起来并不多。
Mark L. Stone

0

查找线性模型的系数从技术上讲是寻找一组线性方程组的解的过程

为了计算这样的解决方案,optimization techniques已经开发了很多解决方案,并且Gradient Descent是其中之一。
因此,梯度下降并不是唯一的方法

Ng在课程中使用它是因为它易于理解,而无需处理高级线性代数和数值计算。


虽然没错,但我认为您的答案将重点放在非标准案例上,从而错过了更大的前景。在绝大多数线性回归模型的通过使用采用闭合形式解QR分解装配。GD-gradient decent-用作为例介绍更先进的方法(例如,SGD-随机GD)。
usεr11852恢复单胞菌说,

您能详细说明什么是QR分解吗?
维克多

3
你想解决 一种X=b。给定一种=[R 哪里 [R 是上三角形, 是正交的 一种X=b[RX=b[RX=Ťb 可以通过向后替换(即快速)解决 [R 是三角形的 Ť=一世。对于非常大的矩阵(数百万个条目),这可能比迭代求解器昂贵。SGD。由于大多数人没有很大的矩阵,QR分解更好。总的来说,QR分解影响了数字世界。SIAM选择它作为20世纪十大算法之一。
usεr11852恢复单胞菌说,

@usεr11852当然可以。那是因为,我想保持答案简单,以避免像QR分解这样的概念与Ng的课程水平相关。
维卡斯·拉图里

3
QR是20世纪十大算法之一。但是随着时间的流逝,即使用于计算SVD的有效算法可以追溯到1960年代,您也必须研究应用领域的重要性。因此,我相信SVD是21世纪的TOP算法。坦率地说,您有没有听说过QR被用来推荐电影?不,SVD用于该关键应用程序。当Twitter向保守的老顽童发送未经请求的建议时,SVD显然是首选算法,他们应遵循哪些青少年名人。让我们看看QR做到了!!!
Mark L. Stone
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.