线性回归损失函数求解

如何判断一个线性方程组无解:如果拿上面那个方程组\(Ax=b\)举例,那就是向量\(b\)不在矩阵A对应的列空间中,至于列空间的概念,可以参考四个基本子空间那篇笔记

如何对无解的方程组求近似解:根据上一篇笔记如何寻找一个投影矩阵可以有这么一个思路,将向量\(b\)往矩阵\(A\)所在的列空间投影得到向量\(f\),得到新的方程组\(A\hat{x}=f\),这个\(\hat{x}\)便为近似解了。如果仅仅为了求近似解可以直接在\(Ax=b\)等式左右两侧同时左乘\(A^{\mathrm{T}}\),即\(A^{\mathrm{T}}Ax=A^{\mathrm{T}}b\)。这个和上面先求投影向量再求解是一样的。

这篇笔记将会探究在机器学习的线性回归如何求解损失函数。

\(Ax=b\)无解时求近似解

今天我们需要求一个线性方程组,长成这样\[ \begin{equation} \left \{ \begin{array}{lr} 2 * w_1 + 2 * w_2 + b = 14 \\ 4 * w_1 - 1 * w_2 + b = 5 \\ 4 * w_1 + 0 * w_2 + b = 4 \\ 4 * w_1 - 2 * w_2 + b = 3 \\ 0 * w_1 - 3 * w_2 + b = -20 \end{array} \right. \end{equation} \]
将(1)式写成矩阵形式,也就是\[ \begin{equation} \left [ \begin{matrix} 2 & 2 & 1 \\ 4 & -1 & 1 \\ 4 & 0 & 1 \\ 4 & -2 & 1 \\ 0 & -3 & 1 \end{matrix} \right] \left [ \begin{matrix} w_1 \\ w_2 \\ b \end{matrix} \right]= \left [ \begin{matrix} 14 \\ 5 \\ 4 \\ 3 \\ -20 \end{matrix} \right] \end{equation} \]
凭我多年的做题经验,这个方程是无解的。太好了,之前学的东西总算可以用上场了(参考笔记如何寻找一个投影矩阵等式13)。我们将等式两边同时左乘矩阵的转置,我们会惊讶的发现这个新的等式(3)有解了:\[ \begin{equation} \left [ \begin{matrix} 2 & 4 & 4 & 4 & 0 \\ 2 & -1 & 0 & -2 & -3\\ 1 & 1 & 1 & 1 & 1 \end{matrix} \right] \left [ \begin{matrix} 2 & 2 & 1 \\ 4 & -1 & 1 \\ 4 & 0 & 1 \\ 4 & -2 & 1 \\ 0 & -3 & 1 \end{matrix} \right] \left [ \begin{matrix} \hat{w_1} \\ \hat{w_2} \\ \hat{b} \end{matrix} \right]= \left [ \begin{matrix} 2 & 4 & 4 & 4 & 0 \\ 2 & -1 & 0 & -2 & -3\\ 1 & 1 & 1 & 1 & 1 \end{matrix} \right] \left [ \begin{matrix} 14 \\ 5 \\ 4 \\ 3 \\ -20 \end{matrix} \right] \end{equation} \]
将(3)式化解得到:\[ \begin{equation} \left [ \begin{matrix} 52 & -8 & 14 \\ -8 & 18 & -4 \\ 14 & -4 & 5 \end{matrix} \right] \left [ \begin{matrix} w_1 \\ w_2 \\ b \end{matrix} \right]= \left [ \begin{matrix} 72 \\ 73 \\ 6 \end{matrix} \right] \end{equation} \]
由等式(4)解出的\(\hat{w_1},\hat{w_2},\hat{b}\)就是等式(1)的近似解,我们也认为它是最优解。

线性回归

拿预测房价举例,谈谈最小二乘法在线性回归中的作用。比如我们假设房价(price)与2个特征即面积(x1)、楼层(x2)有关。那么我们的目标是找到一张三维空间中的平面去拟合一些数据(假设这些数据都经过归一化处理)。先来看看平面怎么定义的?\[ \begin{equation} price = w_1 * x_1 + w_2 * x_2 + b \end{equation} \]
我们希望所有的数据点都在这个平面上,那样可以通过解线性方程组来算出这个平面的参数\(w_1,w_2,b\),这正是线性代数中学到过的。

好的,我们现在有5笔数据(2, 2, 14)、(4, -1, 5)、(4, 0, 4)、(4 -2 3)、(0 -3 -20),将它们代入(5)式得到我们的方程组吧,解出来\(w_1,w_2,b\)这样一个线性模型就ok了。
可是这一步我们在最小二乘法的应用已经做过了,我们已经知道将这些数据代入方程组是无解的,即给出的这些数据根本不在用一个平面上。那么,现在我们放松条件,既然找不到一个平面能令所有的点都在它上面,我们找一个最优的平面总可以吧。

最优平面如何定义

假设我们已经有n组数据,每一组数据都是\((x_1,x_2,y)\)的集合。将一组数据\((x_1, x_2)\)代入(1)中求出price,我们认为每一组数据产生的误差为\((price-y)^2\),将每一组数据产生的误差累加起来就是(6)式。即:\[ \begin{equation} J(w_1, w_2, b) = \sum_{i=1}^{n}(price_i-y_i)^2 \end{equation} \]
使得\(J(w_1, w_2, b)\)最小的那组参数\((w_1,w_2,b)\),可以认为是最优平面的参数。

下面会给出一个动图来展示最优平面是怎么样的一个情况(画了好久才画出满意的效果,画图的代码也会在末尾给出):

线性回归损失函数求解

可以看到图中,红色的点是我们实际的数据,这个蓝色的透明平面是我画出来的认为能拟合这些数据的最好平面。

如何能找到最优平面?

这仍然是一个数学问题,我们认为使得\(J(w_1, w_2, b)\)最小的那组参数\((w_1,w_2,b)\),就是最终要寻找的最优平面的参数。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjgjs.html