將梯度下降用於線性回歸的主要原因是計算複雜性:在某些情況下,使用梯度下降來尋找解決方案在計算上更便宜(更快)。
您編寫的公式看起來非常簡單,甚至在計算上也很簡單,因為它僅適用於單變量情況,即只有一個變量時。在多變量情況下,當您有很多變量時,公式在紙上稍微複雜一些,並且在軟件中實現時,需要更多much的計算:
$$ \ beta =(X'X)^ {-1} X'Y $$
在這裡,您需要計算矩陣$ X'X $,然後將其求逆(請參見下面的註釋)。這是一個昂貴的計算。供您參考,(設計)矩陣X具有K + 1列,其中K是預測變量數和N行觀測值。在機器學習算法中,您可以得到K> 1000和N> 1,000,000。 $ X'X $矩陣本身需要花費一些時間來計算,因此您必須將$ K \ times K $矩陣求逆-這很昂貴。
因此,梯度下降可節省大量計算時間。而且,它的完成方式允許微不足道的並行化,即在多個處理器或機器之間分佈計算。線性代數解也可以並行化,但是它更複雜且仍然昂貴。
此外,當您僅將一部分數據保留在內存中時,會有梯度下降的版本,從而降低了對計算機內存的需求。總體而言,對於特大問題,它比線性代數解決方案更有效。
當像機器學習中那樣有成千上萬個變量時,隨著維數的增加,這一點變得更加重要。
Remark。 Ng的演講對梯度下降給予瞭如此多的關注,令我感到驚訝。他花了很短的時間來談論它,可能佔整個課程的20%。對我來說,這只是實現細節,這就是您找到最佳方案的確切方式。關鍵在於製定優化問題,而您發現它的精確程度無關緊要。我不會太擔心。將其交給計算機科學人員,並專注於對您作為統計學家重要的事情。
必須要說的是,了解求解算法的計算複雜度和數值穩定性確實對來說是很重要的。我仍然認為您不必了解算法的實現細節和代碼。通常,這不是最好的時間來用作統計學家。
注1。我寫道,出於教學目的,您必須將矩陣求逆,這並不是平時求解方程式的方式。在實踐中,線性代數問題是通過使用某種因數分解(例如QR)來解決的,其中您不直接求矩陣求反,而是進行其他數學上等效的操作以獲得答案。這樣做是因為在許多情況下矩陣求反是一項昂貴且數值不穩定的操作。
這帶來了梯度下降算法的另一個小優點:副作用:即使設計矩陣存在共線性問題,它也可以工作。即使對於共線性預測變量,通常的線性代數路徑也會爆炸,並且梯度下降將繼續進行。