Regression

當有封閉式數學解決方案可用時,為什麼要使用梯度下降進行線性回歸?

  • May 10, 2017

我正在在線學習機器學習課程,並了解了梯度下降以計算假設中的最佳值。

h(x) = B0 + B1X

如果我們可以通過以下公式輕鬆找到值,為什麼我們需要使用梯度下降?這看起來很簡單也很容易。但是GD需要多次迭代才能獲得價值。

B1 = Correlation * (Std. Dev. of y/ Std. Dev. of x)

B0 = Mean(Y) – B1 * Mean(X)

**注意:**取自https://www.dezyre.com/data-science-in-r-programming-tutorial/linear-regression-tutorial

我確實檢查了以下問題,對我來說還不清楚。

為什麼需要梯度下降?

為什麼用梯度下降而不是解析解來解決優化問題?

上面的答案比較了 GD 與使用導數。

梯度下降用於線性回歸的主要原因是計算複雜性:在某些情況下使用梯度下降找到解決方案的計算成本更低(更快)。

您編寫的公式看起來非常簡單,甚至在計算上也是如此,因為它僅適用於單變量情況,即當您只有一個變量時。在多變量情況下,當您有很多變量時,公式在紙上會稍微複雜一些,並且在軟件中實現時需要更多的計算:

在這裡,您需要計算矩陣然後反轉它(見下面的註釋)。這是一個昂貴的計算。供您參考,(設計)矩陣 X 有 K+1 列,其中 K 是預測變量的數量和 N 行觀察值。在機器學習算法中,您最終可能會得到 K>1000 和 N>1,000,000。這矩陣本身需要一點時間來計算,然後你必須反轉矩陣 - 這是昂貴的。 因此,梯度下降可以節省大量計算時間。此外,它的完成方式允許微不足道的並行化,即將計算分佈在多個處理器或機器上。線性代數解決方案也可以並行化,但它更複雜且仍然昂貴。

此外,當您只將一部分數據保留在內存中時,還有一些梯度下降版本,從而降低了對計算機內存的要求。總體而言,對於超大問題,它比線性代數解決方案更有效。

隨著維度的增加,當你有成千上萬的變量時,這變得更加重要,就像機器學習一樣。

備註。Ng 的講座中對梯度下降的關注程度讓我感到驚訝。他花了很多時間談論它,也許是整個課程的 20%。對我來說,這只是一個實現細節,它是你如何找到最佳的。關鍵在於製定優化問題,以及您如何找到它是無關緊要的。我不會擔心太多。把它留給計算機科學人員,專注於對你作為統計學家來說重要的事情。

話雖如此,我必須說理解解算法的計算複雜性和數值穩定性確實**很重要。**我仍然認為您不必知道算法的實現和代碼的細節。通常,這不是您作為統計學家的最佳時間利用方式。

注 1。我寫道,出於教學目的,您必須反轉矩陣,而不是您通常如何求解方程。在實踐中,線性代數問題是通過使用某種因式分解(例如 QR)來解決的,在這種情況下,您不直接反轉矩陣,而是進行一些其他數學上等效的操作來獲得答案。您這樣做是因為在許多情況下,矩陣求逆是一項昂貴且數值不穩定的操作。

這帶來了梯度下降算法的另一個小優勢作為副作用:即使設計矩陣存在共線性問題,它也可以工作。通常的線性代數路徑會爆炸,即使對於共線預測變量,梯度下降也會繼續進行。

引用自:https://stats.stackexchange.com/questions/278755

comments powered by Disqus