天天看點

線性回歸學習心得

線性回歸學習心得

本文是自己以周志華老師的西瓜書為主要學習媒介,以吳恩達老師的機器學習視訊為補充的線性回歸學習心得。線性回歸是機器學習的入門,雖比較基礎但極為重要。

個人覺得,西瓜書的3.2節寫得已經十分精彩,我再贅述很難達到周老師的高度。下面也推薦一個部落格連結,我覺得他對線性回歸的整理也是非常精彩了,本文僅僅是它的一個補充:

https://blog.csdn.net/KevinBetterQ/article/details/83117342

本文的主要精力集中在西瓜書中不夠詳細的公式推導和滿秩矩陣上。

1.式(3.10)的矩陣求導

線性回歸學習心得

在西瓜書交流群裡,這一步的推導是許多群友大惑不解的。這裡的關鍵是矩陣求導,因為在我們學微積分的時候學了求導沒學矩陣求導,講矩陣的時候也沒有講矩陣求導,是以成為了知識盲點。但是矩陣求導的關鍵,是要展開。

參考wiki的矩陣求導公式,對實數的求導公式有:

線性回歸學習心得
線性回歸學習心得

我們先看被求導項,其中每一項矩陣維數為:

y : m × 1 y:m \times 1 y:m×1

x : m × ( d + 1 ) x:m \times (d + 1) x:m×(d+1)

w ^ : ( d + 1 ) × 1 \widehat w:(d + 1) \times 1 w

:(d+1)×1

是以Ew是(1xm維)*(mx1維),最後結果是一個1維實數。實數對一個(d+1)*1維的列向量進行求導,結果依然是一個(d+1)*1維的列向量。

再看Ew的詳細展開式:

E w ^ = ( y − X w ^ ) T ( y − X w ^ ) = y T y − w ^ T X T y − y T X w ^ + ( X w ^ ) T X w ^ {{\rm{E}}_{\widehat w}} = {(y - X\widehat w)^T}(y - X\widehat w) = {y^T}y - {\widehat w^T}{X^T}y - {y^T}X\widehat w + {(X\widehat w)^T}X\widehat w Ew

​=(y−Xw

)T(y−Xw

)=yTy−w

TXTy−yTXw

+(Xw

)TXw

式子中第二、三項關系為轉置,即:

w ^ T X T y = ( y T X w ^ ) T {\widehat w^T}{X^T}y = {({y^T}X\widehat w)^T} w

TXTy=(yTXw

)T

且根據前面的次元概述,可很容易知道Ew的每一項都是實數。實數的轉置=實數本身,故有:

E w ^ = y T y − 2 y T X w ^ + ( X w ^ ) T X w ^ {{\rm{E}}_{\widehat w}} = {y^T}y - 2{y^T}X\widehat w + {(X\widehat w)^T}X\widehat w Ew

​=yTy−2yTXw

+(Xw

)TXw

根據矩陣求導的公式有:

∂ ( A w ) ∂ w = A T {{\partial (Aw)} \over {\partial w}} = {A^T} ∂w∂(Aw)​=AT

∂ ( ( A w ^ ) T A w ^ ) ∂ w ^ = 2 A T A w ^ {{\partial ({{(A\widehat w)}^T}A\widehat w)} \over {\partial \widehat w}} = 2{A^T}A\widehat w ∂w

∂((Aw

)TAw

)​=2ATAw

故得到最終(3.10)的結論:

E w ^ = 2 X T X w ^ − 2 X T y {{\rm{E}}_{\widehat w}} = 2{X^T}X\widehat w - 2{X^T}y Ew

​=2XTXw

−2XTy

2.滿秩矩陣

線性回歸的最優化系數w要想求解,有多種方法,包括一步到位的正規方程法、梯度下降法等。詳細請見參考資料2的部落格。本文補充一下滿秩矩陣的說明。

矩陣的秩——假設m*n的矩陣的秩為k,它指的是能從矩陣中任意抽取k行k列,位于這些行列交叉處的元素按原來順序構成k階行列式(又稱k階子式),其值不為0.而任意階數>k的子式行列式的值都為0。

正規方程法的求解方式為(3.11)式:

線性回歸學習心得

正規方程法能生效的前提,要求矩陣滿秩,即矩陣的秩為d+1,d為樣本的特征個數。

西瓜書裡并沒有提到的是下面的細節:

如果是滿秩矩陣,那就有唯一解,使用正規方程法能非常友善地求出最優解w,使得均方誤差最小化。不過根據吳恩達等老師的視訊資料,建議在n<10000時使用正規方程法能得到較小的時間複雜度。由于時間複雜度為o(n^3),n過大時時間複雜度過高,不如梯度下降等方法的成本效益。

如果不是滿秩矩陣,那就有無窮多個解。此時建議引入L1或者L2正則化項。

參考資料:

1.https://en.wikipedia.org/wiki/Matrix_calculus#Scalar-by-vector_identities

2.https://blog.csdn.net/KevinBetterQ/article/details/83117342

繼續閱讀