zoukankan      html  css  js  c++  java
  • 斯坦福2014机器学习笔记三----多变量线性回归与梯度下降法

    一、纲要

      多变量线性回归

      特征缩放与均值归一化

      学习速率α对梯度下降法的影响

      正规方程

    二、内容详述

      1、多变量线性回归

      上一篇我们看到了单变量的线性回归,只有一个变量x,,这里如果有多个变量的话,该方程就变为,我们可以假设X0=1,所以上式变为。那么多变量的代价函数为,我们可以得出多变量的梯度下降法的表示式,同样地,我们对这个表达式的每个变量进行偏导数,结果表示为,然后就是我们之前说过的同时更新theta0,theta1,...,thetan,直到我们得到最优解。

      2、特征缩放与均值归一化

      特征缩放的目的是为了让这些特征的值相近,可以使梯度下降法更快的收敛。这个怎么理解呢?看图

    我们可以先考虑有两个特征变量的代价函数,当两个参数theta1和theta2相差较大时,绘出的曲线如作图。我们设定一个起点,从这个点去到最低处(最优解),由于“瘦长”的椭圆,我们可能会走很多的弯路,如图中红线所画出的那样,也就是需要迭代很多次才能达到理想的效果。所以我们另两个变量theta1和theta2尽量接近,那么画出来的曲线就比较接近圆,这样的话梯度下降法选择的路径就会很快接近最低处,迭代的次数也就会少很多了,这就是特征缩放要解决的问题。

      那么特征缩放我们应该怎么做呢?用Xi/Si,Xi为特征的值,Si为这组特征值的范围,例如X=500,而X的取值范围是(0,2000),所以Xi/Si = 500/2000。比较理想的情况是将缩放后的特征的值控制在-1<=Xi<=1,当然这里的-1和1也不是绝对的,-3<=Xi<=3也是可以的,只要特征的值接近即可,就可以实现特征缩放的效果

      均值归一化就是在特征缩放的基础上减去这组特征的均值,即(Xi-Ui)/Si,这也就是为什么缩放后或者特征会有负值的原因。

      3、学习速率α对梯度下降法的影响

      我们如何判断梯度下降法是否正常工作了呢?这时我们可以绘制代价函数J与迭代次数No. of iterations的曲线。就像这样

      

      当我们看到代价函数J随着迭代次数确实在下降的时候,证明我们的梯度下降法的程序是正确的。从曲线中我们也可以看出迭代次数为多少的时候代价函数收敛。还有一种判断是否收敛的方法,就是当J的下降幅度小于某个很小的阀值常数a的时候,就可以认为J已经收敛了,但是由于a很难选择,所以一般不用这种方法。

      如果J-No. of iters曲线出现下图的情况时,我们考虑的原因就是可能学习速率α的值过大,适当减少α再进行调试

       

      4、正规方程

      我们将M组的N个特征向量用矩阵X表示出来,那么我们可以利用正规方程来求解代价函数J的最优解。

      梯度下降法与正规方程的优缺点比较:

      

      注:当特征向量的数量n<10000时,可以考虑用正规方程,性能比较客观,当n>10000时,梯度下降法会更快!

  • 相关阅读:
    函数和常用模块【day06】:shutil模块(四)
    函数和常用模块【day06】:time模块 (一)
    函数和常用模块【day05】:生成器并行计算(五)
    函数和常用模块【day05】:装饰器前奏(一)
    函数和常用模块【day04】:内置函数(八)
    函数和常用模块【day04】:作用域、局部和全局变量(四)
    函数和常用模块【day04】:函数的非固定参数(三)
    Python基础【day02】:元组和购物车练习的知识点
    Python基础【day02】:字符串(四)
    Python基础【day03】:入门知识拾遗(八)
  • 原文地址:https://www.cnblogs.com/kl2blog/p/7696255.html
Copyright © 2011-2022 走看看