【机器学习】最小二乘法(代数&矩阵推导)

时间:2024-03-14 18:08:08

前置知识

平方损失函数

【机器学习】最小二乘法(代数&矩阵推导)假设上图的红线就是拟合出的函数y=w0+w1xy=w_0+w_1x,那么每个数据点(xi,yi)所对应的误差就是yi(w0+w1xi)y_{i}-(w_0+w_1x_i)上面的误差往往也称之为「残差」。但是在机器学习中,我们更喜欢称作「损失」,即真实值和预测值之间的偏离程度。那么,对 ????个全部数据点而言,其对应的残差损失总和就为:

i=1n(yi(w0+w1xi))\sum_{i=1}^{n}(y_{i}-(w_0+w_1x_i))

更进一步,在线性回归中,我们一般使用残差的平方和来表示所有样本点的误差。公式如下:

i=1n(yi(w0+w1xi))2\sum_{i=1}^{n}(y_{i}-(w_0+w_1x_i))^2

使用残差平方和的好处在于能保证损失始终是累加的正数,而不会存在正负残差抵消的问题。对于此公式而言,机器学习中有一个专门的名词,那就是平方损失函数。而为了得到拟合参数 ????0 和 ????1 最优的数值,我们的目标就是让平方损失函数最小。

最小二乘法

代数求解

step1:f=i=1n(yi(w0+w1xi))2f=\sum_{i=1}^{n}(y_{i}-(w_0+w_1x_i))^2为平方损失函数;

step2:分别对该函数的w0w_0w1w_1求偏导;

fw0=2i=1nyinw0i=1nw1xi\frac{\partial{f}}{\partial{w_0}}=-2\sum_{i=1}^ny_i-nw_0-\sum_{i=1}^nw_1x_ifw1=2i=1n(xiyiw0xi+w1xi2)\frac{\partial{f}}{\partial{w_1}}=-2\sum_{i=1}^n(x_iy_i-w_0x_i+w_1x_i^2)

step3:分别令偏导为零;

首先,这是一个二次函数,极值就是最值。其次只要足够偏移,平方损失函数的值就会不断变大,所以是不可能取到极大值的,那么偏导为0的时候就只可能取到极小值了。

w1=nxiyixiyinxi2(xi)2(7b) w_{1}=\frac {n\sum_{}^{}{x_iy_i}-\sum_{}^{}{x_i}\sum_{}^{}{y_i}} {n\sum_{}^{}{x_i}^2-(\sum_{}^{}{x_i})^2} \tag{7b} w0=xi2yixixiyinxi2(xi)2(7b) w_{0}=\frac {\sum_{}^{}{x_i}^2\sum_{}^{}{y_i}-\sum_{}^{}{x_i}\sum_{}^{}{x_iy_i}} {n\sum_{}^{}{x_i}^2-(\sum_{}^{}{x_i})^2} \tag{7b} 到目前为止,已经求出了平方损失函数最小时对应的参数值,这也就是最佳拟合直线。

矩阵推导

讲在前面,矩阵推到较为复杂,之所以还要赘述,是因为当数据量较大时,矩阵方式求解速度会更快。

step1:函数式转化为矩阵形式;

一元线性函数的表达式为 y(x,w)=w0+w1xy(x,w)=w_0+w_1x,表达成矩阵形式为:
[1,x11,x21,x91,x10][w0w1]=[y1y2y9y10] \left[ \begin{array}{c}{1, x_{1}} \\ {1, x_{2}} \\ {\cdots} \\ {1, x_{9}} \\ {1, x_{10}}\end{array}\right] \left[ \begin{array}{c}{w_{0}} \\ {w_{1}}\end{array}\right] = \left[ \begin{array}{c}{y_{1}} \\ {y_{2}} \\ {\cdots} \\ {y_{9}} \\ {y_{10}}\end{array}\right] 即:y(x,w)=XW y(x, w) = XW 平方损失函数为:f=i=1n(yi(w0+w1xi))2=(yXW)T(yXW) f = \sum\limits_{i = 1}^n {{{(y_{i}-(w_0 + w_1x_{i}))}}}^2 =(y-XW)^T(y-XW) 计算乘法分配律得到:f=yTyyT(XW)(XW)Ty+(XW)T(XW) f = y^{T}y - y^{T}(XW) - (XW)^{T}y + (XW)^{T}(XW) 在该公式中 yyXWXW 皆为相同形式的 (m,1)(m,1) 矩阵,由此两者相乘属于线性关系,所以等价转换如下:f=yTy(XW)Ty(XW)Ty+(XW)T(XW)=yTy2(XW)Ty+(XW)T(XW) f = y^{T}y - (XW)^{T}y - (XW)^{T}y + (XW)^{T}(XW)\\ = y^{T}y - 2 (XW)^{T}y + (XW)^{T}(XW)

step2:矩阵对系数WW求偏导;

f=yTy2(XW)Ty+(XW)T(XW)f= y^{T}y - 2 (XW)^{T}y + (XW)^{T}(XW) 第一项为常数项可以直接省去,第二项为一次项根据求导公式:
xTx=I\frac{\partial{x^T}}{\partial{x}}=I可得第二项求导结果为2XTy2X^Ty,第三项为二次项,根据求导公式:
uTvx=uTxv+vTxu\frac{\partial{u^Tv}}{\partial{x}}=\frac{\partial{u^T}}{\partial{x}}v+\frac{\partial{v^T}}{\partial{x}}u
可以求得:
((XW)T(XW))W=(WTXT)WWX+(WTXT)WWX=2XTXW\frac{\partial{((XW)^T(XW))}}{\partial{W}}=\frac{\partial{(W^TX^T)}}{\partial{W}}WX+\frac{\partial{(W^TX^T)}}{\partial{W}}WX=2X^TXW

step3:令偏导为0;

此步骤原因请参考代数部分解释,不再赘述。

fW=2XTXW2XTy=0\frac{\partial{f}}{\partial{W}}=2X^TXW-2X^Ty=0化简得:W=(XTX)1XTyW=(X^TX)^{-1}X^Ty

至此,两种方法推导均已完成。