天天看點

機器學習入門~複習正規方程

正規方程與梯度下降的差別

  • 梯度下降給出的是一種不斷疊代的方法,通過計算機進行反複的運算,找到最優的θ向量使代價函數J(θ)收斂,此時得到最優的假設函數參數θ。
  • 正規方程則是給出了一種數學方法,通過數學的推導得到了正規方程,必須經過反複疊代,隻需一步計算即可解出最優的θ。

如何使用正規方程

以一個n = 3,m = 4,即有四個特征量和四個訓練樣本的資料為例。

機器學習入門~複習正規方程

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
           

繼續閱讀