使用梯度下降进行线性回归的主要原因是计算复杂性:在某些情况下,使用梯度下降找到解决方案的计算成本较低(较快)。
您编写的公式看起来非常简单,甚至在计算上也很简单,因为它仅适用于单变量情况,即只有一个变量时。在多因素情况下,当你有很多变数,该公式是在纸上稍微复杂一些,需要多更多的计算,当你实现它的软件:
在这里,你需要计算矩阵X ' X
β= (X′X)− 1X′ÿ
X′X然后将其反转(请参见下面的注释)。这是一个昂贵的计算。供您参考,(设计)矩阵X具有K + 1列,其中K是预测变量数和N行观测值。在机器学习算法中,您可以得到K> 1000和N> 1,000,000。该矩阵本身需要一些时间来计算,那么你必须反转矩阵-这是昂贵的。
ķ × ķX′Xķ× K
因此,梯度下降可节省大量计算时间。此外,它的完成方式允许进行简单的并行化,即在多个处理器或机器之间分布计算。线性代数解决方案也可以并行化,但是它更复杂且仍然昂贵。
此外,当您仅将一部分数据保留在内存中时,会有梯度下降的版本,从而降低了对计算机内存的需求。总体而言,对于特大问题,它比线性代数解决方案更有效。
当您像机器学习中那样拥有成千上万个变量时,随着维数的增加,这一点变得更加重要。
备注。Ng的演讲对梯度下降给予了如此多的关注,令我感到惊讶。他花了很短的时间来谈论它,可能占整个课程的20%。对我来说,这只是实现细节,这是您找到最佳方案的确切方式。关键在于制定优化问题,而您发现它的精确程度无关紧要。我不会为此担心太多。将其交给计算机科学人员,并专注于对您作为统计学家重要的事情。
说了这么多,我必须说,理解解算法的计算复杂度和数值稳定性确实很重要。我仍然认为您不必了解算法的实现细节和代码。通常,这不是您作为统计学家的时间的最佳利用方式。
注1。我写道,出于教学目的,您必须将矩阵求逆,这并不是平时求解方程式的方式。在实践中,线性代数问题是通过使用某种因数分解(例如QR)来解决的,其中您不直接求矩阵求反,而是进行其他数学上等效的操作以获得答案。您这样做是因为在许多情况下矩阵求反是一项昂贵且数值不稳定的操作。
这带来了梯度下降算法的另一个小优点:副作用:即使设计矩阵存在共线性问题,它也可以工作。通常的线性代数路径会爆炸,即使对于共线性预测变量,梯度下降也会继续。