第一章 单变量线性回归

  • 假设函数
  • 代价函数
  • 梯度下降
  • 线性回归的梯度下降


假设函数

多元线性回归自变量是分类变量 多元线性回归 分类变量_初始化


  这就是课程中给出的单变量线性假设函数,其实和我们学的y=kx+b没啥区别。

代价函数

多元线性回归自变量是分类变量 多元线性回归 分类变量_梯度下降_02


  这个函数的目的就是度量我们的假设函数得到的预测值与训练样本的差距,这里右上角的i就是指第几组训练样本,这里相当于用两者差值平方的一半来计算一组样本的差距,然后把所有样本的差距累加起来球平均值。我们在做这个线性回归的时候的目的就是通过算法找到合适的theta值让这个函数的值尽量减小。

这里我感觉需要注意三个问题:

  1.不用差的绝对值是因为绝对值不好求导。

  2.这里前面乘上了½是为了求导之后式子更简洁

  3.关于h,y的顺序问题也是要注意的,虽然对于这个代价函数的值来说并没有什么不同,但是在对theta求导之后会有正负号的区别,这点在自己实现梯度下降更新参数的时候需要注意。

梯度下降

这个算法就是机器学习里面一个经典的算法,其主要步骤就是:

  1.初始化theta

  2.不断的改变theta的值,让损失函数不断减小。

至于如何改变请自行百度梯度下降算法,我在这里只是说最需要注意的几点:

  1.一般采用随机初始化的方式来完成对theta的初始化,但是需要注意的是初始化值的不同可能会导致找到的局部最小值不同,但是凸函数在其他参数设置合理的情况下会找到一个全局最小值。

  2.梯度算法更新theta的时候一定要注意同时性,如果没有高数基础可以这样比较形象地理解,梯度下降在选择下坡路的时,要选择的梯度方向在平面上面是由theta0和theta1同时决定的,如下图:

  

多元线性回归自变量是分类变量 多元线性回归 分类变量_多元线性回归自变量是分类变量_03

当然不是说不同时更新就不能实现梯度下降,但是不同时更新的算法就不是我们平常说的梯度下降算法而是另一种算法。

实现梯度下降同时更新的伪代码:

多元线性回归自变量是分类变量 多元线性回归 分类变量_初始化_04

3.同样学习率的选择也十分重要,如何选择学习率的技巧我会在以后的文章里面详细地说明的。

线性回归的梯度下降

在掌握了梯度算法之后自然就可以实现线性回归了,另外再说一点就是,这里的梯度下降算法又叫做Batch Gradient Descent也就是每次更新的时候会遍历全部的训练集。