美文网首页
吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(

吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(

作者: Jorunk | 来源:发表于2020-11-13 09:03 被阅读0次

2.单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Desce

2.1 模型表示

线性回归算法,根据不同房屋尺寸预测住房价格,如果房子是1250平方尺大小,这房子能卖多少钱?首先可以构建一个模型,可能是条直线,从这个数据模型上来看,大约220000(美元)左右的价格可以卖掉这个房子。


对于每个数据来说,我们给出了“正确的答案”,这是一个回归问题,即根据之前的数据预测出一个准确的输出值,对于这个例子就是价格。
在监督学习中的数据集被称训练集。

以房价预测问题为例,回归问题的训练集(Training Set)如下表所示:


m 代表训练集中实例的数量
x 代表特征/输入变量
y代表目标变量/输出变量
( x , y ) \left( x,y \right)(x,y) 代表训练集中的实例
({{x}^{(i)}},{{y}^{(i)}})代表第i个观察实例
  这就是监督学习算法的工作方式,可以看到训练集里的房屋价格把它给学习算法计算了,然后输出一个函数,通常表示为小写 h 表示。 h代表hypothesis(假设), 输入是房屋尺寸大小,输出是对应房子的价格,因此 h 是一个从xy的函数映射。
  对于房价预测问题,该如何表达h
  h_θ ( x ) = θ_0 + θ_1 x,只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题

2.2代价函数


  接下来要做的便是为模型选择合适的参数(parameters)θ_0θ_1 ,在房价问题例子中便是直线的斜率和在y 轴上的截距。

  参数的选择决定了得到的直线相对于训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模误差(modeling error)。


目标是选择出可以使得建模误差的平方和能够最小的模型参数。
即使得代价函数 J(θ_0 , θ_1) = \frac{1}{2m}\sum\limits_{i=1}^m ( h_θ ( x^{(i)} ) − y ^{(i)} ) ^2 最小

  绘制一个等高线图,三个坐标分别为θ_0θ_1J(θ_0 , θ_1)

  可以看出在三维空间中存在一个使得J ( θ_0 , θ_1 )最小的点
  对于代价函数的直观理解

  代价函数也被称作平方误差函数,也被称为平方误差代价函数

为什么是除以2m

无论除以2m还是m,代价函数最优化的结果\theta都是相同的。利用梯度下降法对J求导,如果是2m,求导结果为:

\frac{∂J}{∂{θ}_{i}}=\frac{1}{m}\sum_{i=1}^{m}\left({h}_{\theta} ({x}^{(i)})−{y}^{(i)}\right)\frac{∂{h}_{\theta}{\left ({x}^{(i)}\right)}}{∂θ}
这里正好除以m,便于计算。

2.3 梯度下降

  梯度下降是用来求函数最小值的算法,使用梯度下降算法来求出代价函数J(θ_0 , θ_1) 的最小值。
   梯度下降背后的思想是:开始时随机选择一个参数的组合( θ_0 , θ_1 , . . . . . . , θ_n )来计算代价函数,然后寻找下一个能让代价函数值下降最多的参数组合。持续这么做直到找到一个局部最小值(local minimum),因为并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否是
全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。


  批量梯度下降(batch gradient descent)算法的公式:


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

  在梯度下降中,我们要更新θ_0θ_1,当 j = 0或者j = 1时更新,所以将更新J\left( {\theta_{0}} \right)和)J(θ_1)。实现梯度下降算法的微妙之处是在这个表达式中,如果要更新这个等式,需要同时更新θ_0θ_1,需要这样更新:
θ_0:=θ_0θ_1:=θ_1
  实现方法:计算出θ_0θ_1的值,然后同时更新θ_0θ_1

2.4 梯度下降的直观理解

  梯度下降算法是做什么的,梯度下降算法的更新过程有什么意义?
梯度下降算法:θ_j:= θ_j−α \frac{∂}{∂θ_j} J(θ)
  对 θ赋值,使得J ( θ )按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值


  取该曲线在红点的切线,这条红色直线的斜率正好是这个三角形的高度除以这个水平长度,这条线有一个正斜率,也就是说它有正导数,因此,可以得到的新的{\theta_{1}}{\theta_{1}}更新后等于{\theta_{1}}减去一个正数乘以a

  这就是梯度下降法的更新规则:{\theta_{j}}:={\theta_{j}}-\alpha \frac{\partial }{\partial {\theta_{j}}}J\left( \theta \right)

如果a太小或a太大会出现什么情况?
  • 如果a太小,即学习速率太小,结果就是只能一点点地挪动,可能会很慢,需要很多步才能到达全局最低点。
  • 如果a太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到发现离最低点越来越远,所以,a太大会导致无法收敛,甚至发散。

  如果{\theta_{1}}初始化在局部最低点,结果是局部最优点的导数将等于零,它使得{\theta_{1}}的值不再改变,也就是新的{\theta_{1}}等于原来的{\theta_{1}}
  如果参数已经处于局部最低点,那么其实梯度下降法更新什么都没做,它不会改变参数的值。这也解释了为什么即使学习速率a保持不变时,梯度下降也可以收敛到局部最低点。

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

梯度下降的线性回归

梯度下降算法和线性回归算法的比较


对比之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:
\frac{\partial }{\partial {{\theta }_{j}}}J({{\theta }_{0}},{{\theta }_{1}})=\frac{\partial }{\partial {{\theta }_{j}}}\frac{1}{2m}{{\sum\limits_{i=1}^{m}{\left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}}^{2}}

j = 0时:\frac{\partial }{\partial {{\theta }_{0}}}J({{\theta }_{0}},{{\theta}_{1}})=\frac{1}{m}{{\sum\limits_{i=1}^{m}{\left( {{h}_{\theta}}({{x}^{(i)}})-{{y}^{(i)}} \right)}}}

j = 1时:\frac{\partial }{\partial {{\theta }_{1}}}J({{\theta }_{0}},{{\theta }_{1}})=\frac{1}{m}\sum\limits_{i=1}^{m}{\left( \left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}^{(i)}} \right)}

则算法改写成:
Repeat {
  {\theta_{0}}:={\theta_{0}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{ \left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}
  {\theta_{1}}:={\theta_{1}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{\left( \left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}^{(i)}} \right)}
}
  这种算法,也被叫为批量梯度下降,指的是在梯度下降的每一步中,都用到了所有的训练样本,在梯度下降过程中,计算微分求导项时,需要进行求和运算,所以在每一个单独的梯度下降中,最终都要对所有m个训练样本求和。因此,批量梯度下降法这个名字说明了需要考虑所有这一"批"训练样本。

相关文章

  • 单变量线性回归

    最近在看吴恩达的机器学习,做个笔记总结总结。方便自己复习吧。 主要是学习了梯度下降算法和线性回归算法...

  • 吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(

    2.单变量线性回归和梯度下降(Linear Regression with One Variable and Gr...

  • 单变量线性回归

      本文档基于吴恩达机器学习课程单变量线性回归部分内容,记录自己对该部分内容的理解,并给出了MATLAB代码实现,...

  • 线性回归

    单变量线性回归 多变量线性回归 局限性 梯度下降法 优点 缺点 单变量线性回归 模型线性回归假设数据集中每个yi和...

  • 2019-06-02

    网易云课堂-吴恩达机器学习课程 1-19课时 第一章:初识机器学习;第二章:单变量线性回归;第三章:线性代数回顾 ...

  • 深度之眼吴恩达机器学习 百度网盘分享

    教学大纲 【第一阶段】 学习吴恩达机器学习原版视频: 1.了解机器学习基本概念 2.学习单变量线性回归,体验最基本...

  • 第2章 单变量&多变量线性回归

    单变量线性回归 梯度下降法 Gradient descent 用梯度下降法最小化代价函数J 多变量线性回归 mul...

  • 吴恩达-机器学习 百度网盘分享

    【第一阶段】 学习吴恩达机器学习原版视频:1.了解机器学习基本概念2.学习单变量线性回归,体验最基本模型的魅力3....

  • 2018-09-09学习计划

    1.机器学习的课程两个章节, 把书里面的线性回归代码还有逻辑回归代码写一下下载机器学习实战的代码还有吴恩达的课程的...

  • 线性回归及梯度下降

    线性回归及梯度下降 参考资料:网址 本文会讲到: (1) 线性回归的定义 (2) 单变量线性回归 (3) cost...

网友评论

      本文标题:吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(

      本文链接:https://www.haomeiwen.com/subject/mzilbktx.html