机器学习之线性回归公式推导

版权声明:原创文章,转载请注明出处! https://blog.csdn.net/L_15156024189/article/details/84975636

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}

猜你喜欢

转载自blog.csdn.net/L_15156024189/article/details/84975636