天天看點

機器學習-線性回歸-正規方程

前面幾篇文章裡面我們介紹了求解線性回歸模型第一個算法 <code>梯度下降算法</code>,梯度下降算法最核心的是找到一個學習速率α,通過不斷的疊代最終找到θ0 ... θn, 使得J(θ)值最小。

今天我們要介紹一個解決線性回歸模型新的算法 <code>正規方程</code> 對于函數f(x) = ax^2 + bx + c 而言,要求其最小值,是對其求導數并且設定導數值為0.

我們知道,多元特征變量的線性回歸模型中,代價函數表達式,如下圖所示

機器學習-線性回歸-正規方程

擴充到n+1個參數θ0 ... θn,求函數J(θ)也可以對每個參數求導并另導數為0

機器學習-線性回歸-正規方程

經數學證明,運用線性代數的公式,可以直接求解特征向量θ(θ0,θ1 ... θn)使得代價函數J(θ)最小

機器學習-線性回歸-正規方程

X表示特征向量矩陣

X^T表示的是矩陣X的轉置矩陣

(X^T*X)^-1,表示矩陣X的轉置矩陣和它相乘得到的新的矩陣求逆

Y表示訓練集中,結果矩陣

假設我們預測房價的訓練集如下所示

機器學習-線性回歸-正規方程
機器學習-線性回歸-正規方程
機器學習-線性回歸-正規方程

訓練集m=4,特征次元n=4,同時我們假設X0=1,是以特征矩陣X=m*(n+1)

證明如下

X = m*(n+1)

X^T = (n+1)*m

(X^T * X) = (n+1) * (n+1)

(X^T * X)^-1 = (n+1) * (n+1)

Y = m * 1

X^T * Y = (n+1) * 1

(X^T * X)^-1 * X^T * Y = ((n+1) * (n+1)) * ((n+1) * 1) = (n+1) * 1

由上可知,求出的向量即為θ(θ0,θ1 ... θn)

<code>特别注意: 并不是所有(X^T * X)相乘的結果都可逆,不過我們一般不用太關心這些細節,對于MATLAB或者octave來說</code>無論可逆不可逆,最終都可以求出結果

梯度下降特點:

選擇合适的學習速率α

通過不斷的疊代,找到θ0 ... θn, 使得J(θ)值最小

正規方程特點:

不需要選擇學習速率α,不需要n輪疊代

隻需要一個公式計算即可

但是并不是所有的線性回歸都适合用正規方程,我們知道求解一個矩陣的逆複雜度為O(n^3),是以當特征次元n非常大的時候(X^T * X)^-1需要O(n^3)時間,此時選擇正規方程效率将會特别低

當n &lt; 1000時候選擇正規方程比較合适,但是當n &gt; 1000的時候使用梯度下降算法會是更佳的方案

繼續閱讀