DAY 2
单变量线性回归模型
通过给定数据集,预测实际值。(因为是单一变量,故称单变量线性回归)
代价函数
代价函数有助于弄清楚如何把最有可能的直线与我们的数据进行拟合。
我们这里要聊的就是如何选择不同的参数 θ0 和 θ1 的值。
通过设置不同的θ0 和 θ1 的值,我们可以得到不同的回归模型:
在线性回归中,最开始会给定一个训练集(如红X所示),我们要做的就是得出θ0 和 θ1 的值,来让假设函数表示的直线,尽量与这些数据点很好的拟合。
那么如何得出θ0 和 θ1 的值呢?
想法是针对h(x)模型,能使输入x的值得到的y,尽可能的与训练样本的值相同(预测值 = 真实值)
线性回归其实解决的是一个最小化的问题(真实值与预测值误差尽可能小)
代价函数对于大多数问题(特别是回归问题),是一个合理的选择
平方差误差代价函数可能是解决回归问题最常用的手段了。
DAY 3
本节我们将看一些例子来直观地理解代价函数是用来做什么的,以及为什么我们要使用它。
通过简化的代价函数 θ0 = 0,帮助我们更好理解代价函数的概念:
假设函数 h(x) 是一个关于 x(房子尺寸) 的函数;
代价函数是关于参数 θ1 的函数,它控制着直线的斜率。
将假设函数与代价函数的曲线绘制如下:
代价函数后面跟着求和平方的部分实则是样本点到预测函数对应点之间的距离的平方求和,以此来反映偏离程度
我们的目标函数是使J(θ)最小,由图当 J(θ)= 0 时是最小的,此时 θ1= 1,由左边的图可知确实当θ1= 1时,所有的样本点都被完美拟合了。
接下来将回到最初的假设函数,看看2个参数控制时的代价函数情况:
上一节是一个参数,所绘制出的代价函数是一个碗状,现在有2个参数,所得的代价函数依然是碗状的
曲面的高度即是J(θ0,θ1)的值。在这里使用高线图(等高图)来展示代价函数的曲面
每一个椭圆形显示了一系列J(θ0,θ1)值相等的点(如红点标注所示),最小值在椭圆圆心处,圈起来的红点双参数决定了一条代价曲线
例如这张图所显示的点(虽然不是最小值)但已经非常接近了,代价函数的值即是所有的样本点到直线对应预测点的距离平方求和。
总结
接近代价函数J最小值的点对应着更好的假设函数。
接下来的工作:一个高效的算法,自动寻找代价函数J的最小值,对应的 θ0,θ1
DAY 4
梯度下降
本节将使用梯度下降法最小化任意函数J
思路方法如下:
通常的做法是将 θ0 和 θ1 的值都赋为0,然后从该点出发进行梯度下降
想象自己在山的一点,环顾四周看看最快的下山路径;而后站在新的起点,环顾四周看看最快的下山路径…直至收敛至局部最低点。
但如果我们稍微再右移一点,重复刚才的动作,梯度下降会将我们带到第二个局部最优处:
回归到算法的数学原理上来:
- 认识 := 符号,该符号代表赋值,而 = 符号则是判定2者是否相等
- α是学习率,指的是梯度下降时,我们每一步迈出多大的步子;如果α很大,那么梯度下降就特别快,反之则缓慢下降。
- 梯度下降的正确做法是同步更新 θ0 和 θ1 的值,采用两个temp来实现。(左侧正确,右侧未能实现同步更新)
错误点在于使用了更新后的 θ0 来计算 θ1 的值
接下来接着揭示这个算法的数学原理:
首先讨论导数项的深层次含义:
为了直观先让 θ0 = 0
后面这个导数项其实是曲线的切线,也就是斜率
如上面的图所示,当点在右侧时,切线为正,学习率也是一个正数,且 θ1 > 0,所以 θ1 - 一个正数 会慢慢变小,确实是在往最低点靠拢,算法正确;
当点在左侧时,θ1 + 一个负数,且 θ1 < 0,θ1会逐渐变大,也是在往最低点靠拢,算法正确;
接下来探讨学习率α对算法的影响:
如果α太小,会花很多步直至收敛至最低点;
如果α太大,梯度下降可能会越过最低点,甚至可能无法收敛或者发散;
一个问题:如果一个点最开始研究处于局部最优点,那么下一步梯度下降会怎样?
如果一个点已经处于最低点,那么该点的切线斜率=0,因此导数项也为0
所以其乘积也等于0,所以θ1还是等于θ1,没有更新
梯度下降算法其实什么也没做。
这也可以解释,及时学习率α保持不变,梯度下降也可以收敛到局部最优点的原因。
梯度下降法和斜率有着很大的关系,如图,当点离最低点较远时,斜率较大,此时下降也较快,当越靠近局部最优点时斜率越小,下降会越来越慢
所以没有必要再减小学习率α的值
下节我们将回到它的本质,线性回归的代价函数中,也就是我们前面得到的平方代价函数,结合梯度下降算法以及平方代价函数,得出第一个机器学习算法——线性回归算法
DAY 5
梯度下降 + 线性回归模型
我们要做的是将梯度下降运用到最小化平方差代价函数中
做这部的关键是写好导数项的代码:
偏导数的数学表达式如下:
将上述式子代入进去:
接下来即可编写相关程序用其完成线性回归自动梯度下降,并进行相关预测:
这个梯度下降算法也叫做“Batch”梯度下降,其特点是遍历了整个数据集,但有的梯度下降算法则不一样,它每次只关注了小子集。
后文提要:
有一种算法可以直接算出代价函数的最小值,而不用像梯度下降这样的迭代算法,它被称为正规方程组方法。相比与正规方程组方法,梯度下降更适合于更大的数据集。
似乎课后还有习题 之后再看看再总结了。 #22.02.03