为什么我们可以通过解析方法解决线性回归,而使用梯度下降法呢?

75

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


1
这是一个很好的问题。讲师通常会直接使用梯度下降法来寻找解决方案,这会让学生感到困惑,因为普通最小二乘解不需要优化算法;如果承认@jabaldonedo在这里提供的内容,这种困惑可以很快地消除。 - Merlin
4个回答

110
当您使用正规方程来解析地求解成本函数时,您需要计算以下内容: X 是输入观察矩阵,y 是输出向量。问题在于计算一个nxn矩阵的逆的时间复杂度为O(n³),随着 n 的增加,计算所需的时间会变得非常长。
当 n 较低(n<1000或n<10000)时,可以将正规方程看作计算θ的更好选项,但对于更大的值,梯度下降法速度更快,所以唯一的原因就是时间 :)

1
n是样本数还是特征数? - Mike Vella
6
n是特征数量。 - gavinmh
2
这不一定是瓶颈。为了使用正常方程,我们通常会做一个非奇异的假设,使得 $n > p$(这里我使用的符号是 $n$ 表示数据点数,$p$ 表示特征数)。这意味着瓶颈是 $O(np^2)$ 来形成 $X^\top X$,而不是 $O(p^3)$ 的求逆运算。 - Dustin Tran
1
仅仅是一些细节问题...矩阵求逆可以在O(n^3)以下的时间内完成。https://en.wikipedia.org/wiki/Computational_complexity_of_mathematical_operations#Matrix_algebra - fr_andres
1
我在阅读@fr_andres的评论后一度感到兴奋,但最好的矩阵求逆复杂度是O(n^2.4)。 - Merlin
显示剩余2条评论

13

您应该更详细地介绍您的问题——您到底在问什么——我们是在谈论一维还是多维线性回归?是简单的还是广义的?

总的来说,人们为什么要使用GD(梯度下降)呢?

  • 它易于实现
  • 它是非常通用的优化技术——即使您将模型更改为更通用的模型,您仍然可以使用它。

那么分析解呢?嗯,我们确实使用它们,如果我们是在一般情况下讨论的话,你的说法就是错误的。例如OLS方法是一种封闭形式、分析解,被广泛使用。如果您可以使用分析解,并且计算上是可行的(因为有时候GD比较便宜或者更快),那么您可以甚至应该使用分析解。

但这总是有一些利弊的权衡——分析解与模型密切相关,因此如果您打算将模型推广/更改,实现它们可能效率低下。他们有时不如数字近似值高效,有时它们也更难实现。如果以上都不是问题——您应该使用分析解,人们真的这样做。

总之,如果您考虑对模型进行更改,泛化,添加一些更复杂的项/正则化/修改,则最好使用GD而不是解析解决方案;如果您需要一种通用方法,因为您不了解代码和模型的未来(您只是开发人员之一);如果解析解法在计算上更昂贵,并且您需要效率;如果解析解决方案需要更多内存,而您没有;如果解析解法难以实现,则使用简单的代码。请保留HTML标签。

7

0
另一个原因是,在推广线性回归时,梯度下降是非常有用的,尤其是当问题没有封闭形式的解决方案时,例如在Lasso中(它添加了正则化项,由权重向量的绝对值之和组成)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接