单变量线性回归问题的模型:
这就是一个监督学习算法的工作方式,h代表的就是一个模型,可以将其表示为
因为只含有一个输入变量x,因此这样的问题叫做单变量线性回归问题。
代价函数
代价函数用于衡量模型预测值和真实值间的差距。
在要为参数
选择合适的值。
选择的参数决定了得到的直线相对于训练集的准确程度,模型所预测的值与训练集中的实际值间的差距(建模误差)。
所以目标就是选出可以使建模误差平方和最小的模型参数,即代价函数
梯度下降
梯度下降是一个用来求函数最小值的算法,使用梯度下降算法来求出代价函数的最小值。
梯度下降背后的思想是: 开始时我们随机选择一个参数的组合(0o,04.....,0n),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。
在上图中,梯度下降算法就是要在某一个方向多次分段移动,每移动一次就在判断一次该向那个方向移动可以到达局部最低点。
其中𝑎是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向 向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率 乘以代价函数的导数。
如果𝑎太小了,即我的学习速率太小,结果就是只能这样像小宝宝一样一点点地挪动, 去努力接近最低点,这样就需要很多步才能到达最低点,所以如果𝑎太小的话,可能会很慢, 因为它会一点点挪动,它会需要很多步才能到达全局最低点。 如果𝑎太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移 动了一大步,越过一次,又越过一次,一次次越过最低点,直到你发现实际上离最低点越来越远,所以,如果𝑎太大,它会导致无法收敛,甚至发散。
梯度下降的线性回归:
将梯度下降和线性回归的代价函数结合,在线性回归模型中,通过梯度下降算法找出使代价函数J最小的参数。
对我们之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:
上面这个算法就被称为“批量梯度下降”, ,在计算微分求导项时,我们需要进行求和运算,所以,在每一个单独的梯度下降中,我们最终都要计算这样一个东西,这个项需要对所有𝑚个训练样 本求和。因此,批量梯度下降法这个名字说明了我们需要考虑所有这一"批"训练样本,而事 实上,有时也有其他类型的梯度下降法,不是这种"批量"型的,不考虑整个的训练集,而是每次只关注训练集中的一些小的子集。