【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)
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()推出來了……我居然在下一部分還沒有開始講就把內容說完了,場面一度非常尷尬啊??梢姀耐队巴瞥鯪ormal 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.多次投影有影響嗎?
已經在空間中的向量乘上投影矩陣仍然等于本身,二次投影不會有任何副作用!也就是說。證明如下——
參考文章:
線性回歸及其概率解釋
NormalEquation推導過程
總結
以上是生活随笔為你收集整理的【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习】线性回归之梯度下降、多元线性
- 下一篇: 【机器学习】线性回归之概率解释及局部加权