机器学习--一元线性回归

线性方程

   线性方程可以分为:一元线性方程,多元线性方程,广义线性方程。
   一元线性方程是指拥有一个自变量一个因变量的方程,如y=ax+b
   多元线性方程是指拥有多个自变量一个因变量的方程,如y=ax+bz+c
   广义线性方程是指非线性方程问题可以使用线性求解。

一元线性方程

   我们在得到一些数据的之后,可能需要模拟一个足够接近的函数,去估测一些目前来说不存在的数据得到的结果。如以下数据:
机器学习--一元线性回归_第1张图片
我们可以使用相关系数来判断其可不可以使用线性回归来进行求解。
机器学习--一元线性回归_第2张图片
rxy的值是一个在[-1,1]直接的值,其绝对值越接近1,则表示越能够使用线性回归来进行函数的预测。(一般情况0.5往上就能够使用线性回归预测)

假设函数
   假设函数即使我们希望其能够表示测试数据集的函数,即我们期望能够得到的函数。
   如:假设我们能够使用线性回归预测,此时我们设我们的假设函数(回归函数)为y=ax+b(x为自变量,a、b为参数)
   为了使我们得到的函数与实际的数据误差最小,即每个点到直线的距离最短,但是由于距离不容易算,我们便用实际值与估测值的下标为其误差估计。如下图红线
机器学习--一元线性回归_第3张图片
代价函数
   代价函数:又叫损失函数或成本函数,它是将一个或多个变量的事件阈值映射至直观地表示该事件。如果不懂,没有关系,我们只需要知道它是用来找到最优解地目的函数就行了。
   如:由于直接计算误差和可能存在正负抵消的问题,取其绝对值又存在计算复杂的问题,则我们采用计算误差平方和的方式进行计算,即代价函数
在这里插入图片描述
   其中yie为预测值,即为y=axi+b的计算值,yi为实际值。
最小二乘法实现一元线性方程
   根据最小二乘法原理,取得最小的解为
机器学习--一元线性回归_第4张图片
即可将以上参数带入方程进行求解估测值。

梯度下降实现一元线性回归方程

接着上边的讲解,此时我们设假设函数为:
在这里插入图片描述
代价函数为:
机器学习--一元线性回归_第5张图片
不要忘了,不管是最小二乘法还是梯度下降的算法,我们的目标都是,找到能够使代价函数最小的θ0和θ1,以使我们的假设函数最后的结果能够更贴近真实值。

首先讲解一下梯度下降的原理:
梯度下降(Gradient descent)
梯度下降的思想是:

  1. 我们给定两个θ01的初始值,通常令两个θ等于0;
  2. 我们不停地一点点改变两个θ值,使J变小,直到找到J的最小值或者局部最小值。

如:假设说下面这个图是代价函数J的图像,纵轴表示J的值:
机器学习--一元线性回归_第6张图片
为符合我们的目的,使其J的值最小,那么就要找到其图像中的最低的点。

假如这是我们想要进行梯度下降优化的函数,假设我们此时站在左边的顶部红色区域,我们现在想要下去,我们站在顶部,环顾四周,如果要在某个方向上走一步,我应该走哪里呢?我们将会在此时所处的点上走出此时最短的下山路线,到达新的点,再次走出下手最短的路径。
重复这个问题,直到我们下去为止,路径是这样的:
机器学习--一元线性回归_第7张图片

此时存在一个问题,存在局部最低点的时候,如上图,图中有两个或者多个的最低点:
机器学习--一元线性回归_第8张图片
此时如果我们下山的初始地点不一样的话则会到达不一样的地点,出现不一样的θ0和θ1,如图:
机器学习--一元线性回归_第9张图片
好在我们的一元线性函数的问题不存在其多点的问题,如图:
机器学习--一元线性回归_第10张图片
此时给出每个变量的具体求法:
给出公式:
机器学习--一元线性回归_第11张图片
其中“:=”是一个赋值运算符,其中α为学习率:它用来控制梯度下降时,我们迈出多大的“步子”,若α很大,梯度下降会很快。对于高数好一点的同学来讲,这个公式这并不难懂,我们用单变量来理解一下:
机器学习--一元线性回归_第12张图片
红框的部分代表的就是那一点的斜率,此时斜率为负值,那么θ会变大,即往右边挪,这不正是我们想要的吗?让θ挪动至那个“碗底”。再来看一个例子:
机器学习--一元线性回归_第13张图片
此时,斜率为正数,随着迭代次数的增长,θ会变小,最终我们得到使J(θ)最小的θ值。
单变量线性回归的梯度下降
我们结合梯度下降和代价函数即可得到一个线性回归算法,用直线模型来拟合数据。
结合上面那两个公式,我们可以得到:
机器学习--一元线性回归_第14张图片
结果为:
机器学习--一元线性回归_第15张图片
提示:
梯度下降时各个所求变量(如:θ01)要同步更新!
梯度下降时各个所求变量(如:θ01)要同步更新!
梯度下降时各个所求变量(如:θ01)要同步更新!

重要的事情说三遍。
何为同步更新?
如:机器学习--一元线性回归_第16张图片
左边的为同步,右边的为不同步,因为右边的在求temp1的时候,θ0的值已经改变了,不是同步更新的。
使用Python实现梯度下降的具体示例可以参考博客:
https://blog.csdn.net/weixin_42751456/article/details/91351993

你可能感兴趣的:(python,机器学习)