1. 程式人生 > >機器學習之線性迴歸公式推導

機器學習之線性迴歸公式推導

leboop文章,禁止轉載!

本文所有符號約定參見機器學習之矩陣微積分及其性質

假設我們獲得了m個數據,每一個數據由n個特徵和一個真實值構成,如下:

  feature_1 feature_2   feature_n value
1 x_{11} x_{12} ... x_{1n} y_1
2 x_{21} x_{22} ... x_{2n} y_2

     .

     .

     .

           .

           .

           .

           .

           .

           .

 

           .

           .

           .

           .

           .

           .

m x_{m1} x_{m2} ... x_{mn} y_m

任意給定一組由n個特徵構成的資料(x_1,x_2,...,x_n),如何預測y?線性迴歸就是尋找一個由n個特徵構成的最優線性組合,數學表述如下:

                                                                        y=c_0+c_1x_1+...+c_nx_n

如果我們已經求出了上式中的每個係數c_k\; \; (0=<k<=n),那麼對於獲得的每個資料,都有一個對應的預測值\hat{y_i}=c_0+c_1x_{i1}+...+c_nx_{in}\; \; (1=<i<=m)。直覺告訴我們,使每個預測值\hat{y_i}和真實值y_i非常接近的係數c_k將是我們需要的。所謂預測值和真實值的接近程度可以使用他們間的距離來度量,比如我們最熟悉的|\hat{y_i}-y_i|,那麼對於表中m個數據,應該使用距離之和來度量,也就是

d(c_0,c_1,...,c_n)=\sum_{i=1}^{m}|\hat{y_i}-y_i|

那麼使d(c_0,c_1,...,c_n)取最小值的係數c_k就是我們需要的。但是求解d(c_0,c_1,...,c_n)的最小值,需要d(c_0,c_1,...,c_n)對每個分量c_k求偏導數,而絕對值求導不太方便。所以,我們使用另外一種更方便求偏導的距離度量方式,如下:

d(c_0,c_1,...,c_n)=\sum_{i=1}^{m}(\hat{y_i}-y_i)^2

為了方便求解係數c_k,下面我們使用矩陣形式來表述d(c_0,c_1,...,c_n)。先做一些記號,

m個數據矩陣:

\mathbf{X}=\begin{bmatrix} 1 &x_{11} &... &x_{1n} \\ 1&x_{21} &... &x_{2n} \\ \vdots &\vdots & &\vdots \\ 1&x_{m1} &... &x_{mn} \end{bmatrix}

真實值:

\mathbf{y}=\begin{bmatrix} y_1\\ \vdots\\ y_m \end{bmatrix}

預測值:

\mathbf{\hat{y}}=\begin{bmatrix} \hat{y_1}\\ \vdots\\ \hat{y_m} \end{bmatrix}

係數:

\mathbf{c }=\begin{bmatrix} c_0\\ \vdots\\ c_n \end{bmatrix}

d(c_0,c_1,...,c_n)=\sum_{i=1}^{m}|\hat{y_i}-y_i|可如下表示:

                                                                           d(\mathbf{c})=||\mathbf{Xc-y}||_2^2

這裡||\cdot ||_2表示向量的2-範數,例如||\mathbf{a} ||_2表示向量

\mathbf{a}=\begin{bmatrix} a_1\\ \vdots\\ a_p \end{bmatrix}

的2-範數,它如下定義:

||\mathbf{a}||_2=\sqrt{\sum_{i=1}^pa_i^2}

從定義我們能得到||\cdot ||_2的另一種表達方式:

                                                                        ||\mathbf{a}||_2=\sqrt{\mathbf{a}^T\mathbf{a}}

注意到\mathbf{\hat{y}}=\mathbf{Xc},我們有

d(\mathbf{c})=||\mathbf{Xc-y}||_2^2=||\mathbf{\hat{y}-y}||_2^2 ={(\sqrt{\sum_{i=1}^m(\hat{y_i}-y_i)^2})}^2=\sum_{i=1}^m(\hat{y_i}-y_i)^2

所以d(\mathbf{c})=\sum_{i=1}^{m}(\hat{y_i}-y_i)^2d(\mathbf{c})=||\mathbf{Xc-y}||_2^2是等價的。優化問題轉化為求解\min_\mathbf{c}||\mathbf{Xc-y}||_2^2

d(\mathbf{c})=||\mathbf{Xc-y}||_2^2=(\mathbf{Xc-y})^T (\mathbf{Xc-y})

根據機器學習之矩陣微積分及其性質,我們有:

\frac{\partial d(\mathbf{c})}{\partial \mathbf{c}}=\frac{\partial (\mathbf{c}^T\mathbf{X}^T\mathbf{Xc}-2\mathbf{y}^T\mathbf{Xc}+\mathbf{y}^T\mathbf{y})}{\partial \mathbf{c}}

=\frac{\partial \mathbf{Xc}\cdot \mathbf{Xc}}{\partial \mathbf{c}}-2\frac{\partial \mathbf{y}^T\mathbf{Xc}}{\partial \mathbf{c}}+\frac{\partial \mathbf{y}^T\mathbf{y}}{\partial \mathbf{c}}

=\mathbf{(Xc)}^T\frac{\partial \mathbf{Xc}}{\partial \mathbf{c}}+\mathbf{(Xc)}^T\frac{\partial \mathbf{Xc}}{\partial \mathbf{c}}-2\mathbf{y}^T\mathbf{X}+\mathbf{0}

=2\mathbf{c}^T\mathbf{X}^T\mathbf{X}-2\mathbf{y}^T\mathbf{X}

\frac{\partial d(\mathbf{c})}{\partial \mathbf{c}}=\mathbf{0},則

\mathbf{c}^T\mathbf{X}^T\mathbf{X}=\mathbf{y}^T\mathbf{X}

\mathbf{X}^T\mathbf{X}\mathbf{c}=\mathbf{X}^T\mathbf{y}

\mathbf{X}^T\mathbf{X}是非奇異矩陣,即|\mathbf{X}^T\mathbf{X}|\neq 0,則

                                                                                    \mathbf{c}=(\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y}

有一點需要提醒的是:

\mathbf{X}=\begin{bmatrix} 1 &x_{11} &... &x_{1n} \\ 1&x_{21} &... &x_{2n} \\ \vdots &\vdots & &\vdots \\ 1&x_{m1} &... &x_{mn} \end{bmatrix}

的第一列全部是1,有時候y=c_0+c_1x_1+...+c_nx_n是經過中心化的,如:

y=c_1x_1+...+c_nx_n

那麼此時

\mathbf{X}=\begin{bmatrix} x_{11} &... &x_{1n} \\ x_{21} &... &x_{2n} \\ \vdots & &\vdots \\ x_{m1} &... &x_{mn} \end{bmatrix},但是結果是一樣的,也就是

\mathbf{c}=(\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y}