正規方程與梯度下降的差別
- 梯度下降給出的是一種不斷疊代的方法,通過計算機進行反複的運算,找到最優的θ向量使代價函數J(θ)收斂,此時得到最優的假設函數參數θ。
- 正規方程則是給出了一種數學方法,通過數學的推導得到了正規方程,必須經過反複疊代,隻需一步計算即可解出最優的θ。
如何使用正規方程
以一個n = 3,m = 4,即有四個特征量和四個訓練樣本的資料為例。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL9sGWlVjSYFGaadEZoplMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwkTO2AjM1cDM2EjMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
x對應的是特征量,由于其n = 3,m = 4,将每一個特征量x存儲在矩陣中,得到的當然是4*4( (n+1)*m 階的矩陣,n還需要+1因為包含x0,而x0預設為1 )的矩陣X。而y為訓練樣本中特征量對應的真實值,将每一個y存儲成為一個列向量,得到了四維列向量。
得到矩陣X和列向量y後,即可進行正規方程運算。其運算公式為:
θ = (XTX)-1XTy。T為矩陣的轉置,-1為求逆,在Octave中使用inv()或pinv()實作。
梯度下降與正規方程的對比
梯度下降法的缺點:
- 梯度下降法需要選擇學習率α。
-
梯度下降需要多次疊代。
梯度下降法的優點:
-
當n( 特征量 xi 的個數 )很大時,也能運作的很好。
正規方程的缺點:
- n很大時,運作的速度很慢(對于大多數算法,求解矩陣的逆時的時間複雜度時O(n3))。是以,當n很大時,傾向于使用梯度下降法 ( n = 10000時,可以開始考慮使用梯度下降法 ) 。
- 正規方程并不适用于更複雜的算法,此時仍需使用梯度下降法。
Python實作
def normalEqn(X, y):
theta = np.linalg.pinv(X.[email protected])@X.[email protected]
return theta