Normal Equation
之前我們用梯度下降來求解線性迴歸問題的最優參數,除此之外我們還可以用正規方程法(Normal Equation)來求解其最優參數。
Normal Equation方法的推導有兩種方式
矩陣求導(matrix derivative)
其中
其中X的行表示樣本,列表示特徵:
令導數等於零:
因此:
關於矩陣求導的公式可以參見:常用的向量矩陣求導公式
下面解釋一下部分求導的過程:
線性代數視角
一、求解不可解的方程組
先看一個最最簡單的例子——
例1.0 如圖,在空間中有兩個向量,求一個常數使兩個向量滿足。
這個方程明顯不可解,因爲與不共線,無法通過對數乘得到。
再看下一個比較簡單的例子——
例2.0 在空間中的平面有一組基和,如圖所示,求出常數與使向量滿足條件。
這個方程也明顯不可解,因爲不在平面上,而與的線性組合只能得到平面上的向量。
以上兩個問題非常的典型,因爲在解決實際問題的時候,我們很難得到Perfect Solution,我們只能盡力而爲的爭取Best Solution。以上兩個例子明顯沒有做到perfect(連基本的方向都錯了),那麼如何找到Best Solution呢?
二、投影的應用(Projection)
思路很簡單:我們只要找到一個使方向上的向量距離最近。
回到最簡單的例子例1.0,這裏重複一遍
如圖,在空間中有兩個向量,求一個常數使兩個向量滿足。
現在應該如何尋找的解呢?
最好的方法就是拋棄向量中垂直的分量,只要計算使等於向量在方向的分量(即在上的投影(Proj)),同時我們把向量垂直方向的分量稱爲(error)。
原來的問題變成了求解(是的估計量)
因爲與合成了向量(),而且垂直於(),所以我們得出了一個非常重要的結論(敲黑板)!!!核心啊!!!
這個方程的核心就是寫成向量內積形式的與的垂直關係,只不過被拆開書寫。其實這個方程也可以寫作,但是寫作轉置向量的形式可以讓這個方程更自然的拓展到高維(向量內積)。好了,我們繼續改寫方程……
在這一步我們就得到了best的,但考慮到這並不perfect,所以我們稱之爲。
P.S.如果想用投影矩陣P來簡化從轉換到的過程,可以把的結果帶入到中。我們發現投影矩陣在形式上就等於乘數,即滿足。
向量a·向量b=| a |*| b |*cosΘ
Θ爲兩向量夾角
| b |*cosΘ叫做向量b在向量a上的投影
| a |*cosΘ叫做向量a在向量b上的投影
分子爲在上的投影,分母爲在上的投影,同乘了向量的模,投影的比值即爲
現在我們再看看怎麼在中解決不可解方程。
例2.0 在空間中的平面有一組基和,如圖所示,求出常數與使向量滿足條件。
平面有基向量和,故投影可以表示成基的線性組合,即
令基向量組成的矩陣,參數組成的向量,與平面垂直的誤差向量。(這裏插一句話,最小二乘法的核心就是找出一個就是讓最小化)
我們發現在中的問題在這裏拓展成爲了。
相應的,問題在這裏拓展成了,其中。
還是一樣的套路,我們還是從垂直關係入手——因爲,而且,所以有以下方程組——
整理成矩陣的形式——
(敲黑板!!!敲黑板!!!)
寫到這裏回頭看看情景下的核心公式,可以這傢伙換一套馬甲又出現了!!!看來方程是一種高維的拓展。我們可以把中的看成一個只有一列的矩陣。
我們繼續整理這個公式——
寫到這裏我們就沒什麼可以乾的了。
有人可能想說——明明還可以繼續化簡啊!!!
但實際的情況中,我們不能保證矩陣總是方陣(square),但是總是可以保證是方陣。因爲只有方陣纔有逆矩陣,所以我們只能保證有,而不能保證有。
所以我們只能回到這裏。如果你有讀過Andrew Ng著名的公開課CS229的Lecture Notes,你一定記得他用矩陣求導得出的Normal Equation——
你會發現除了和不一樣以外,我們已經把Normal Equation()推出來了……我居然在下一部分還沒有開始講就把內容說完了,場面一度非常尷尬啊。可見從投影推出Normal Equation是一件多麼自然的事情啊~~~我都不知道哪裏切開。
說到這裏先總結一下投影的幾個意義(敲黑板)!!!
的所有可能結果都在一個固定的區域中,在線性代數中我們稱這個區域爲列空間(column space),列空間顧名思義就是矩陣各列的所有線性組合。在1-D的情況下列空間就是一條線,在2-D的情況下列空間就是一個平面。但是我們的數據哪裏會這麼恰好的落在矩陣的列空間裏呢?天底下哪有這樣的好事啊!!!
特別是在數據量特別大的情況下,矩陣特別是在數據量特別大的情況下,矩陣會成爲一個的超級高大的矩陣(如下圖)。在這種等式數量遠大於未知數數量的情況中,我們很難滿足每一個等式的約束。
但是目標不再在空間裏並不代表不能求出解,只能說沒有perfect solution(語出Gilbert Strang),但是我們努力一下還是可以做到最好的(best solution)。我們用投影向量來尋找最合適的。就是並不存在的完美解的估計值。
三、矩陣求導與投影推導之間的聯繫
回顧矩陣求導得到的Normal Equation:
以及投影視角得到的公式
兩者除了在符號表示上有所區別,其它的一模一樣,現在從符號本身的含義去聯繫兩者。
歸根結底,Normal Equation是用來求解一個最優化問題。在投影的方法中,矩陣A作爲一個基向量空間,用於尋找最優的以使得最接近。
矩陣A有多少行就表示基向量空間有多少維(每個特徵有多少樣本量,就表明在這個空間中有多少維度),有多少列,就表示有多少個基向量。
在線性迴歸中矩陣A就等同於X,行數爲樣本量,列數爲特徵量,b等同於Y,爲目標向量。
當特徵遠遠少於樣本量的時候說明基向量的空間維數很高,但基向量很少。也就是說在一個很大的空間中,只有少數幾個方向給定,需要去擬合向量Y,那難度當然很大,誤差就很大。
當特徵數量遠遠大於樣本量的時候就相反,基向量空間不大,但基向量的個數很多。也就是說在一個不大的空間中,有很多的基向量,基本涵蓋了所有的方向,此時我想要找到一個基向量的線性組合去逼近目標向量Y,那就容易很多了。此時就會強依賴於當前的樣本,泛化能力就很差,過擬合。
四、Normal Equation應用
既然Normal Equation在上文都推導完了,這裏我們就隨便帶幾個數據來玩玩咯。
練手案例 找一條直線來擬合點 (1,1)、(2,2)、(3,2)
我們如果用一條直線來擬合的話,設,我們先得到以下值——
我們發現很遺憾的沒有解,於是我們左右各乘上,祭出了投影大招——。
再把這個方程變換成Normal Equation:
帶入數值在Matlab中小跑一下就得到了結果
即直線是上述三個點的擬合結果。
五、其他想說的話
1.關於的暴力使用
在前一步可以不用判斷是否可解,可以直接使用。事實上,在最小二乘時遇到長方形矩陣,我們就可以用上替代計算。這是是一種路子很野的但是很簡單實用的經驗規則,可以簡單實驗如下——
用直線擬合三個點 (1,1)、(2,2)、(3,2)時,自然希望真實值和估計值的誤差越小越好。分別對和求偏導數等於的零的值——
這邊有個小筆誤,是對做偏導整理以上公式我們得到了方程組——
再整理一下,把這個方程寫成矩陣乘法的形式——
在最後一步整理以後我們發現剛纔千辛萬苦算出來的就是上文的啊!!!
說明這個經驗方法是可以信得過的!!!
2.關於化簡的問題
因爲投影的性質非常美妙,如果矩陣是各行線性無關的方陣(square),說明存在,則Normal Equation會變成如下形式——
說明如果存在一個perfect solution,該解不會受到影響。
3.多次投影有影響嗎?
已經在空間中的向量乘上投影矩陣仍然等於本身,二次投影不會有任何副作用!也就是說。證明如下——
參考文章: