当我们可以解析地解决线性回归时,为啥梯度下降

Posted

技术标签:

【中文标题】当我们可以解析地解决线性回归时,为啥梯度下降【英文标题】:why gradient descent when we can solve linear regression analytically当我们可以解析地解决线性回归时,为什么梯度下降 【发布时间】:2013-08-14 01:17:27 【问题描述】:

在线性回归空间中使用梯度下降有什么好处?看起来我们可以用分析方法解决问题(找到最小成本函数的 theta0-n)那么为什么我们仍然想使用梯度下降来做同样的事情呢?谢谢

【问题讨论】:

这是一个很好的问题。讲师直接进入梯度下降来寻找解是很常见的,当学生记住普通最小二乘解不需要优化算法时,这会令人困惑;通过承认@jabaldonedo 在这里提供的内容,可以很快消除混淆。 【参考方案1】:

您应该提供有关您的问题的更多详细信息-您到底在问什么-我们是在谈论一维还是多维线性回归?简单的还是概括的?

一般来说,人们为什么要使用 GD?

很容易实现 这是一种非常通用的优化技术 - 即使您将模型更改为更通用的模型,您仍然可以使用它

那么分析解决方案呢?好吧,我们确实使用它们,您的说法在这里完全是错误的(如果我们在谈论一般情况),例如OLS 方法是一种封闭形式的解析解,它被广泛使用。如果您可以使用分析解决方案,那么它在计算上是负担得起的(因为有时 GD 更便宜或更快)那么您可以,甚至应该 - 使用它。

尽管如此,这始终是一些利弊的问题 - 分析解决方案与模型密切相关,因此如果您计划在未来推广/更改模型,那么实施它们可能效率低下。有时它们的效率不如数值近似,有时更难实现。如果以上都不是真的 - 你应该使用分析解决方案,而且人们确实这样做了。

总而言之,如果满足以下条件,您宁愿使用 GD 而不是解析解:

您正在考虑更改模型、概括、添加一些更复杂的术语/正则化/修改 您需要一个通用方法,因为您对代码和模型的未来了解不多(您只是开发人员之一) 分析解决方案的计算成本更高,您需要效率 分析解决方案需要更多内存,而您没有 分析解决方案难以实现,您需要简单、简单的代码

【讨论】:

【参考方案2】:

当您使用正规方程解析成本函数时,您必须计算:

其中 X 是您的输入观察矩阵,y 是您的输出向量。此操作的问题在于计算 nxn 矩阵的逆矩阵的时间复杂度为 O(n^3),并且随着 n 的增加,它可能需要很长时间才能完成。

当 n 较低(n 梯度下降要快得多,因此唯一的原因是时间:)

【讨论】:

n是样本数还是特征数? n 是特征的数量。 这不一定是瓶颈。为了使用正规方程,我们通常会做出一个非奇异假设,使得 $n > p$(这里我使用的符号是 $n$ 是数据点的数量,$p$ 是特征的数量)。这意味着瓶颈是 $O(np^2)$ 以形成 $X^\top X$,而不是 $O(p^3)$ 反转。 只是一个细节...矩阵求逆可以在 O(n^3) 以下执行 en.wikipedia.org/wiki/… 我在阅读@fr_andres 评论后兴奋了一秒,但最好的矩阵求逆是 O(n^2.4)【参考方案3】:

我看到https://stats.stackexchange.com/questions/23128/solving-for-regression-parameters-in-closed-form-vs-gradient-descent的回答很好

基本上,原因是:

1.对于大多数非线性回归问题,没有封闭形式的解决方案。

2.即使在线性回归中(可以使用封闭形式解决方案的少数情况之一),使用该公式也可能不切实际。以下示例显示了这种情况发生的一种方式。

【讨论】:

【参考方案4】:

其他原因是,当您推广线性回归时,梯度下降会立即有用,特别是如果问题没有封闭形式的解决方案,例如在Lasso 中(它添加了由绝对值之和组成的正则化项权重向量)。

【讨论】:

以上是关于当我们可以解析地解决线性回归时,为啥梯度下降的主要内容,如果未能解决你的问题,请参考以下文章

关于对率回归的求解,梯度下降和解析解相比有啥特点和优势,为啥?

线性回归的梯度下降

机器学习100天(十四):014 梯度下降算法求解线性回归

机器学习100天(十四):014 梯度下降算法求解线性回归

梯度下降法及一元线性回归的python实现

梯度下降法线性回归模拟