如何判断一个线性方程组无解:如果拿上面那个方程组\(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)\),就是最终要寻找的最优平面的参数。