zl程序教程

您现在的位置是:首页 >  IT要闻

当前栏目

02:机器学习实战:最小二乘法

2023-03-07 09:05:53 时间

最小二乘法推导

多元线性回归的写法

$$ y = w_1x_1+w_2x_2+...+w_dx_d+b $$

与数学中不同的是,在机器学习中,系数w和截距b是需要求得的未知数,而特征x和标签y则是已知的。

将上边的方程写成矩阵形式便是

$$ y = w^Tx+b $$

此时的,w和x都是矩阵,$w = w_1,w_2,...w_d^T$,$x = x_1,x_2,...x_d^T$

普通线性回归中的目标便是求的w和b两个参数,w其实是weight的简写,意为自变量的权重。

  • 普通线性回归常用的损失函数(L)是SSE(误差平方和),即(真实值-预测值)的平方之和

$$L(\hat w) = \sum{i=1}^{m}\left(y{i}-\hat{y}{i}\right)^{2}=\sum{i=1}^{m}\left(y{i}-\boldsymbol{X}{i} \boldsymbol{w}\right)^{2}= ||y - X\hat w||_2^2 = (y - X\hat w)^T(y - X\hat w)$$

其中 $||y - X\hat w||_2^2$ 称为2范数,不过在这里暂时用不到。

可以看到,损失函数是关于参数w的函数。

目标是对损失函数求最小值,因此可以让其偏导数=0

如果只有一个特征那么可以在二维图中展示:

可以看到,模型使用一条直线拟合散点,损失函数就是真实值到预测值的欧式距离的和,求损失函数最小值即是使直线尽可能拟合到更多的点。

对w求偏导

$$\begin{aligned}

\frac{SSELoss(\hat w)}{\partial{\boldsymbol{\hat w}}}

&= \frac{\partial{||\boldsymbol{y} - \boldsymbol{X\hat w}||_2}^2}{\partial{\boldsymbol{\hat w}}}

\

&= \frac{\partial(\boldsymbol{y} - \boldsymbol{X\hat w})^T(\boldsymbol{y} - \boldsymbol{X\hat w})}{\partial{\boldsymbol{\hat w}}} \

& =\frac{\partial(\boldsymbol{y}^T - \boldsymbol{\hat w^T X^T})(\boldsymbol{y} - \boldsymbol{X\hat w})}{\partial{\boldsymbol{\hat w}}}\

&=\frac{\partial(\boldsymbol{y}^T\boldsymbol{y} - \boldsymbol{\hat w^T X^Ty}-\boldsymbol{y}^T\boldsymbol{X \hat w} +\boldsymbol{\hat w^TX^T}\boldsymbol{X\hat w})}{\partial{\boldsymbol{\hat w}}}\

& = 0 - \boldsymbol{X^Ty} - \boldsymbol{X^Ty}+X^TX\hat w+(X^TX)^T\hat w \

&= 0 - \boldsymbol{X^Ty} - \boldsymbol{X^Ty} + 2\boldsymbol{X^TX\hat w}\

&= 2(\boldsymbol{X^TX\hat w} - \boldsymbol{X^Ty}) = 0

\end{aligned}$$

得到 $X^TX\hat w = X^Ty$

要使得此式有解,等价于$X^TX$存在逆矩阵,即 $\hat w = (X^TX)^{-1}X^Ty$

$X$ 和$y$都已知,带入即可求的$w$矩阵,最终求的$b$。

所以使用最小二乘法是有条件的,其中一个便是$X^TX$存在逆矩阵,因此在机器学习中有更普适的求解损失函数最小值的方法比如梯度下降。

矩阵A存在逆矩阵的条件

  • A满秩、A的行列式≠0、A存在逆矩阵 是等价的。
  • 若A存在逆矩阵,A的性质:$A$ 和 $A^{-1}$ 是方阵(行列数相同);$AA^{-1}=E$ (E是单位矩阵)
  • 类比倒数概念,a存在倒数的充要条件是 $a≠0$;类似的性质,$a*\frac{1}{a}=1$,

线性代数的一些概念:

初等行(列)变换包括

  • 某一行(列),乘以一个非零倍数。
  • 某一行(列),乘以一个非零倍数,加到另一行(列)。
  • 某两行(列),互换。

阶梯型矩阵:所给矩阵为行阶梯型矩阵,则矩阵中每一行的第一个不为零的元素的左边及其所在列以下全为零。

阶梯型矩阵

矩阵的秩(rank):把矩阵经过初等行变换成阶梯型矩阵,非0行的个数即为其秩。

满秩:矩阵的秩=其行数,或者说阶梯型矩阵没有非0行,或者说其行列式≠0

求A的逆矩阵

A|E是在矩阵A的右边cbind一个单位矩阵(称为增广矩阵),这样A和E经过相同的经过初等行变换,当A变为单位矩阵时,右边的E也就变成了A的逆矩阵,这种方法叫做初等变换法,当然还有其他很多方法求逆矩阵。

$$A|E \rightarrow E|A^{-1}$$

与特征矩阵数据的关系

逆矩阵存在的充分必要条件是特征矩阵不存在多重共线性。

多重共线性:是指线性回归模型中的解释变量之间由于存在精确相关关系或高度相关关系而使模型估计失真或难以估计准确。

精确相关: 比如 $x_1 = 2x_2$

高度相关:比如 $x_1 \approx 2x_2$

模型估计失真或难以估计准确:比如下式,$x_1$和$x_2$是精确关系,那么下y就可以写成$y=2x_2$或$y=2x_1$,那么x和y的值就不能确定了,模型也就失效了。

$$y=x{1}+x{2}\x{1}=2 x{2}$$

因此,比如我们的两个基因表达量相关性过高,就会造成多重共线性,建模中解决多重共线性的方法是可以对损失函数加上惩罚项,比如拉索回归、岭回归和弹性网络。

参考:

https://baike.baidu.com/item/%E5%A4%9A%E9%87%8D%E5%85%B1%E7%BA%BF%E6%80%A7/10201978?fr=aladdin

https://www.bilibili.com/video/BV1UU4y1M73o?vd_source=d18945ce98e39afc8362968bf50c8dde

https://www.bilibili.com/video/BV1vJ41187hk?p=59&vd_source=d18945ce98e39afc8362968bf50c8dde

https://zhuanlan.zhihu.com/p/355241680

https://zhuanlan.zhihu.com/p/486971703