通俗理解线性回归(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/alw_123/article/details/82825785

题外话:在上一篇中聊了一下线性回归的一些概念和损失函数的形式,那这篇就接着上一篇的思路来聊聊线性回归的正规方程解。(如果你是小白,可以点进上一篇的传送门看看,没准能让你对线性回归有个大概的认识)

3.怎样计算出线性回归的解?

上一篇中的最后聊到了损失函数是个什么鬼,看懂了的老铁们现在应该已经弄清楚了一个事实。那就是我只要找到一组参数(也就是线性方程每一项上的系数)能让我的损失函数的值最小,那我这一组参数就能最好的拟合我现在的训练数据。OK,那怎么来找到这一组参数咩。。。其实要找这一组参数有两种套路,一种是大名鼎鼎的梯度下降,其大概思路就是根据每个参数对损失函数的偏导来更新参数。另一种就是线性回归的正规方程解,这名字听起来高大上,其实就是根据一个固定的式子来计算出参数。那在这篇博文中,主要聊聊线性回归的正规方程解,梯度下降的话,下一篇博文再单独拎出来聊。

4.正规方程解

正规方程解其实是通过一堆数学运算推出来的式子。这里呢先给出这个式子的最终形态,然后再揉碎了掰开了聊货到底怎么来的。
登登登登登登。。。这货的完全体长这样(其中的θ,就是我们要算出来的参数):
在这里插入图片描述

那祭出完全体之后,我们就来看看这货怎么从幼年期成长到完全体的。。。

在上一篇聊到线性回归的损失函数的时候,我们知道了线性回归的损失函数是酱紫:
在这里插入图片描述
如果我们想用线性回归来预测天朝某市的房价的话,式子中的y(i)就是训练数据中的label,也就是真实的房价,y^(i)呢就是我们线性回归模型预测出来结果,也就是预测出来的房价。此时此刻,y(i)其实是已知的。因为既然是监督学习,那数据的label就是已知的。你可以想象成是某房产交易平台上天朝某市的历史房价数据,这些数据通常都是用当时真实房价的对不对[/滑稽]。

那y^(i)捏?这个其实就是一个线性表达式,样子就长这样:
在这里插入图片描述
这个式子其实非常好理解,θ0到θn是我们要求的结果。如果只看θ0到θ1的部分的话,那尼玛就是个直线方程嘛(y=kx+b),如果只看θ0到θ2的话那还不是三维空间中的一条直线咩。。那拓展到θn的时候,也就是n维空间中的一条线。

那如果用房价这个例子来解释这个式子的话,就更好理解了。假如X1代表的是房子的总面积,X2代表的是房子的房间数量,X3代表的是楼间距,X4代表的是离学校的距离,等等等等。那这个时候里面的θ1就代表房子总面积对房价的重要程度,那如果θ1是个比较大的数,那就是说明房子总面积越大,那房价可能就越高。如果θ1等于0,就说明房价的高低跟房子的总面积没有半毛钱关系。(其他的θ请自行脑补)

那现在虽然已经明白了这个式子代表的意思,但是我们发现这式子太尼玛长了,而且如果扔给GPU去算的话,GPU会说:MMP,老子可不擅长这件事。这就很尴尬。。。所以我们不妨把这个式子进化一下(亚古。。啊呸。。损失函数进化。。。)。

如果你收悉线代的话,我估计你会有种条件反射。。。。就是看到一个式子的样子是一堆乘法的加和的话,立马会想到把它向量化。额,没错,接下来就是把那又臭又长的式子给向量化。

如果我们把θ0,θ1,θ2…θn排成一列的话,那其实就是个列向量啦
在这里插入图片描述
同样,如果我们把一行数据中的每个属性,或者说每个字段把他排成一行的话,那其实就是个行向量啦(上标i表示房价数据中的第i条数据,因为你历史数据不可能只有一条嘛。0到n代表每一条数据中0到n个字段。PS:X0=1
在这里插入图片描述
那如果我们把Xi和θ做一个矩阵乘法的话,不就是我们的y^i嘛
在这里插入图片描述
所以啊,y^i就进化成了酱紫:
在这里插入图片描述

-------------------------------------------我是分割线----------------------------------------------

那刚刚所做的进化仅仅是考虑了数据集中的一条数据,但我们算损失函数的时候,我们是要算所有数据的损失值的和。所以啊,我们还要进化一波。那假如我的房价特征数据长酱紫:

房子面积 房间数量 楼间距 离学校距离
60 2 10 5000
90 2 7 10000
120 3 8 4000
40 1 4 2000
89 2 10 22000

也就是说X,表示

房子面积 房间数量 楼间距 离学校距离
60 2 10 5000
90 2 7 10000
120 3 8 4000
40 1 4 2000
89 2 10 22000

那OK,刚刚我们知道y^i进化后成了:
在这里插入图片描述
现在如果把y^i排成一列的话,不就成了一个矩阵了嘛
在这里插入图片描述

也就相当于Xb表示的是

无所谓 房子面积 房间数量 楼间距 离学校距离
1 60 2 10 5000
1 90 2 7 10000
1 120 3 8 4000
1 40 1 4 2000
1 89 2 10 22000

如果这个时候和θ这个列向量做矩阵乘法的话,就能把y^进化成酱紫(如果不知道为什么能这么进化。。请预习一下矩阵乘法。。而且请自行脑补结果的形状):
在这里插入图片描述

此时此刻,你会发现,我们的预测房价的公式非常的线性。。这也就是线性回归这个名字的由来。

-------------------------------------------我是分割线----------------------------------------------

OJBK,我们已经知道y^的样子了,那我们不妨回过头来看看损失函数的样子。损失函数呢长这样:
在这里插入图片描述
其实损失函数也可以向量化,因为可以把所有的yi排成一列撸成个列向量叫y,y^i也是个列向量叫y ^。然后假设y-y ^这个列向量叫U。那其实y-y ^的平方和就是U的平方和。那U的平方和无非可以想象成U的转置和U做个矩阵乘法。所以进化后就是酱紫:
在这里插入图片描述

这个时候,我们要做的事情就很明朗了。因为y是已知的,Xb是已知的,θ是未知的,也就是说我们要解出θ,让这个等式成立。接下来我们来看看怎么解θ!!

-------------------------------------------我是分割线----------------------------------------------
这个时候,我们可以先把式子给展开,展开后成酱紫(J(θ)表示损失函数):
在这里插入图片描述
嗯,发现就算展开后θ还是不知道怎么算。。。但是如果我们算θ对J(θ)的导数的话就知道怎么算了,因为J(θ)我们是想找一个θ(这时的θ是个向量)来最小化J(θ),所以求导后我们有酱紫的式子:
在这里插入图片描述
然后左右一移一就有:
在这里插入图片描述
然后两边同时乘以X^TX的逆就能得到θ的表达式(θ的完全体):
在这里插入图片描述

喏,这就是线性回归的正规方程解。也就是说你想用线性回归预测房价的话,直接套这个式子算你就能得到一组参数θ。有了θ之后,如果你要预测新的一条房子数据可能的房价的话,套这个式子就能预测出房价啦。
在这里插入图片描述

-------------------------------------------我是分割线----------------------------------------------
到此为止,线性回归的一些东西已经撸完了。希望当你看到这篇博文后能够对你有所帮助吧。下一篇可能写啥还没想好。。可能是梯度下降吧。。。

猜你喜欢

转载自blog.csdn.net/alw_123/article/details/82825785