Normal Equations 的由來
假設我們有m個樣本。特征向量的維度為n。因此,可知樣本為{(x(1),y(1)), (x(2),y(2)),... ..., (x(m),y(m))},其中對於每一個樣本中的x(i),都有x(i)={x1(i), xn(i),... ...,xn(i)}。令 H(θ)=θ0 + θ1x1 +θ2x2 +... + θnxn,則有
若希望H(θ)=Y,則有
X · θ = Y
我們先來回憶一下兩個概念:單位矩陣 和 矩陣的逆,看看它們有什么性質。
(1)單位矩陣E
AE=EA=A
(2)矩陣的逆A-1
要求:A必須為方陣
性質:AA-1=A-1A=E
再來看看式子 X · θ = Y
若想求出θ,那么我們需要做一些轉換:
step1:先把θ左邊的矩陣變成一個方陣。通過乘以XT可以實現,則有
XTX · θ = XTY
step2:把θ左邊的部分變成一個單位矩陣,這樣就可以讓它消失於無形了……
(XTX)-1(XTX) · θ = (XTX)-1XTY
step3:由於(XTX)-1(XTX) = E,因此式子變為
Eθ = (XTX)-1XTY
E可以去掉,因此得到
θ = (XTX)-1XTY
這就是我們所說的Normal Equation了。
Normal Equation VS Gradient Descent
Normal Equation 跟 Gradient Descent(梯度下降)一樣,可以用來求權重向量θ。但它與Gradient Descent相比,既有優勢也有劣勢。
優勢:
Normal Equation可以不在意x特征的scale。比如,有特征向量X={x1, x2}, 其中x1的range為1~2000,而x2的range為1~4,可以看到它們的范圍相差了500倍。如果使用Gradient Descent方法的話,會導致橢圓變得很窄很長,而出現梯度下降困難,甚至無法下降梯度(因為導數乘上步長后可能會沖出橢圓的外面)。但是,如果用Normal Equation方法的話,就不用擔心這個問題了。因為它是純粹的矩陣算法。
劣勢:
相比於Gradient Descent,Normal Equation需要大量的矩陣運算,特別是求矩陣的逆。在矩陣很大的情況下,會大大增加計算復雜性以及對計算機內存容量的要求。
什么情況下會出現Normal Equation,該如何應對?
(1)當特征向量的維度過多時(如,m <= n 時)
解決方法:① 使用regularization方式
or ②delete一些特征維度
(2)有redundant features(也稱為linearly dependent feature)
例如, x1= size in feet2
x2 = size in m2
feet和m的換算為 1m≈3.28feet所以,x1 ≈ 3.282 * x2, 因此x1和x2是線性相關的(也可以說x1和x2之間有一個是冗余的)
解決方法:找出冗余的特征維度,刪除之。
練習
練習的介紹頁面見Ng的openclassroom Exercise: Multivariate Linear Regression
下載頁面上的數據,然后載入matlab中。
y(i)表示價格,x(i)表示房屋面積和房間數:
樣本數m=47。
step1:對數據進行預處理
給每一個x向量,都增加一個x0=1的分量。
m = 47;
x=[ones(m,1),ex3x];
查看x矩陣:
step2:帶入normal equation公式θ = (XTX)-1XTY,求解權重向量。
y=ex3y; theta = inv(x'*x)*x'*y;
求得θ向量為
如果我想預計“1650-square-foot house with 3 bedrooms”的價格,那么由X * θ = Y可知:
price = [1,1650,3]* theta ;
我們取消matlab中的科學計數法,看看price的價格是多少:
>> format long g
>> price
price = 293081.464334897
我們在給出的樣本中,找一個接近的樣本比比看:
23號樣本的房屋面積為1604,房間數也為3,它的價格為
我們可以嘗試畫出H(θ)函數的圖像看看:
先分別用min和max函數找出房屋面積(x1)和房間個數(x2)的最大和最小值,有
x1∈[852,4478]
x2∈[1,5]
x1=linspace(852,4478,47); x2=linspace(1,5,47);
[xx1,xx2]=meshgrid(x1,x2);
h_theta = theta(1)*ones(47,47) + theta(2)*xx1 + theta(3)*xx2;
surf(xx1,xx2,h_theta);
可以看到H(θ)為如下平面: