当前位置: 代码迷 >> 综合 >> 单变量线性回归(Linear Regression with One Variable)
  详细解决方案

单变量线性回归(Linear Regression with One Variable)

热度:88   发布时间:2023-11-26 12:54:06.0

文章目录

  • 前言
  • 一、模型描述
  • 二、代价函数
  • 三、梯度下降算法
  • 四、线性回归算法
  • 总结


前言


一、模型描述

前面我们了解到监督学习,给定学习算法一个数据集,这个数据集由“正确答案”组成,最常用的监督学习算法解决的两类问题:

1.回归问题:使用监督学习算法预测线性输出,通过房子的面积来预测房价
2.分类问题:使用监督学习算法预测离散输出,例如通过肿瘤的大小来预测肿瘤是良性的还是恶性的

所以,在监督学习中我们有一个数据集,数据集也被称训练集

训练集( Training Set)
以房屋交易为例,如下图
在这里插入图片描述
符号定义:

? 代表训练集中实例的数量
? 代表特征/输入变量
? 代表目标变量/输出变量
(?, ?) 代表训练集中的实例
(?(?), ?(?)) 代表第? 个观察实例
? 代表学习算法的解决方案或函数也称为假设( hypothesis)

监督学习算法的工作方式
在这里插入图片描述可以看到训练集里有房屋价格,把它喂给学习算法,学习算法的工作后,然后输出一个函数,通常表示为小写 ?表示, ? 代表 hypothesis(假设)函数,输入是房屋尺寸大小, ? 根据输入的 ?值来得出 ? 值, ? 值对应房子的价格 ,因此, ? 是一个从?到 ? 的函数映射

我们可以选择最初的使用规则?代表 hypothesis,来解决房价预测问题,我们实际上是将训练集“喂”给我们的学习算法, 进而学习得到一个假设?,然后将我们要预测的房屋的尺寸作为输入变量输入给?,预测出该房屋的交易价格作为输出变量输出为结果

但是,对于的房价预测问题,我们该如何表达 ??
一种可能的表达方式为: ??(?) = ?0 + ?1?,因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题

二、代价函数

代价函数(cost function)有助于我们弄清楚如何用一条更好的直线将我们的训练集中的数据进行拟合

假设在线性回归中我们有一个训练集, 假设函数也就是用来进行预测的函数形式: ??(?) = ?0 + ?1?

给定数据集与假设函数,如何为模型选择合适的参数( parameters) ?0 和 ?1,在房价问题中就是是直线的斜率和在? 轴上的截距,我们选择的参数决定了我们得到的直线相对于我们的训练集的准确程度

建模误差( modeling error):模型所预测的值与训练集中实际值之间的差距
在这里插入图片描述
如图,蓝色的一段距离便是建模误差。

我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。
在这里插入图片描述
即使得代价函数最小。

绘制一个等高线图,三个坐标分别为?0和?1 和?(?0, ?1),则可以看出在三维空间中存在一个使得?(?0, ?1)最小的点
在这里插入图片描述
代价函数被称作平方误差函数,也被称为平方误差代价函数。之所以要求出误差的平方和,是因为误差平方代价函数,对于大多数问题,特别是回归问题,是一个合理的选择。可能还有其他的代价函数也能很好地发挥作用,但是平方误差代价函数可能是解决回归问题最常用的手段了

我们将原来假设函数和代价函数含有两个参数简化为只有一个参数,先从二维去探究到底什么是代价函数?
在这里插入图片描述
现将假设函数做一个简化处理,让θ0 = 0,只剩下θ1一个参数,这样我们就可以在一个二维平面画出代价函数

如图假设三个特殊的数据集(1,1),(2,2),(3,3)
在这里插入图片描述
令θ等于不同的值,作出如右图的图像,找到一个θ1的值来将J(θ1)最小化

对于每个θ1的值,都对应着一个不同的假设函数,上图左边函数图像中的浅蓝线条,粉色线条,深蓝线条所表示的函数对应着不同的θ1 的值,对于每个不同的θ1 的值,我们可以个求这些值绘制出J (θ1)的图像如上图右边的函数图像所示。当θ1=1时,假设函数完全拟合所有数据,所以代价函数的值为0

在上述的简化线性回归模型中,即令θ0=0来在一个二维平面上直观的理解代价函数

但是实际应用中的情况往往不能讲模型简化,所以当θ0 !=0时,我们可以用轮廓图或等高曲线图来绘制J (θ0,θ1) 的图像
在这里插入图片描述
如左图为不同的假设函数,绘制出右图的等高曲线

三、梯度下降算法

我们需要的是一种有效的算法,能够自动地找出这些使代价函数?取最小值的参数?0和?1来,不然遇到更复杂、更高维度、更多参数的情况,而这些情况是很难画出图的,因此更无法将其可视化

梯度下降:能够自动地找出能使代价函数 ? 最小化的参数?0和?1的值

梯度下降是一个用来求函数最小值的算法,可以使用梯度下降算法来求出代价函数?(?0, ?1) 的最小值

算法思想:

开始时随机选择一个参数的组合(?0, ?1, . . . . . . , ??),计算代价函数,然后寻找下一个能让代价函数值下降最多的参数组合。持续这么做直到到到一个局部最小值( local minimum),因为并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值( global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值

假设你正站立在山的一点上,站立在公园红色的山上,在梯度下降算
法中,我们要做的就是旋转 360 度,看看周围,并问自己要在某个方向上,用小碎步尽快下山。这些小碎步需要朝什么方向?看一下周围,你会发现最佳的下山方向,然后往下走一步,然后再一次想想,我应该从什么方向迈着小碎步下山?然后你按照自己的判断又迈出一步,重复上面的步骤,从这个新的点,你环顾四周,并决定从什么方向将会最快下山,然后又迈进了一小步,并依此类推,直到你接近局部最低点的位置
在这里插入图片描述

所以,我们开始时随机选取?0, ?1,一般都为0,然后不断的改变?0, ?1的值,为了减小代价函数?(?0, ?1),直到找到所有的局部最小值,然后确定全局最小值
在这里插入图片描述

批量梯度下降( batch gradient descent)算法的公式
在这里插入图片描述

其中?是学习率( learning rate),它决定了沿着能让代价函数下降程度最大的方向向下的距离有多大,在批量梯度下降中,每一次都同时让所有的参数减去学习速率乘以代价函数的导数

在梯度下降算法中,当 ? =0 和? = 1时,会产生更新,我们需要同时
更新?0和?1
,如左下图
在这里插入图片描述
在这里插入图片描述
实际上,上面两个式子就是关于代价函数的偏导数。

对应梯度下降来说,对?赋值,使得?(?)按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值
在这里插入图片描述

如右图,假设开始在右侧粉色的位置,在红色的位置偏导数大于0,所以?1会减小,假如减小的绿色的位置,又再次减小,但是相对于粉色的位置减小的幅度下降,因为偏导数变小,在越靠近局部最小值时,会减得越来越少,因为在局部最小值其偏导等于0,参数已经处于局部最低点,那么梯度下降法更新其实什么都没做,它不会改变参数的值

随着梯度下降法的运行,移动的幅度会自动变得越来越小(偏导数越来越接近零),直到最终移动幅度非常小,会发现,已经收敛到局部极小值

在梯度下降法中,当接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为当我们接近局部最低点时,在局部最低时导数等于零,所以当我们接近局部最低时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,所以实际上没有必要再另外减小?

学习率α对梯度更新的影响
在这里插入图片描述

如果α太小,即学习率太小,梯度更新的距离小,移动可能会很慢,因此可能会需要很多步才能到达全局最低点

如果α太大,即学习率太大,梯度下降可能会越过最低点,并在一次次的迭代中,一次次越过最低点,最后离最低点越来越远,学习率太大,不仅会导致无法收敛,甚至还会发散

四、线性回归算法

我们将梯度下降和代价函数结合,将此算法应用于具体的拟合直线的线性回归算法里
在这里插入图片描述
线性回归问题运用梯度下降法,关键在于求出代价函数的导数,
在这里插入图片描述
所以,算法变为:
在这里插入图片描述

假设函数??(?)是要训练的模型,这个模型由?决定
代价函数 ?(?0, ?1) 目的使其最小化,也就是求出参数?
梯度下降:为自动使化代价函数最小的一种方法

通过梯度下降来自动最小化代价函数从而得到参数θ用来构建我们的线性回归模型

闲谈:
梯度下降有时也称为批量梯度下降,指的是在梯度下降的每一步中, 都用到了所有的训练样本,在梯度下降中,在计算微分求导项时,需要进行求和运算,在每一个单独的梯度下降中,最终都要计算这样一个东西,这个项需要对所有?个训练样本求和


总结

提示:这里对文章进行总结:

  相关解决方案