zoukankan      html  css  js  c++  java
  • 吴恩达机器学习笔记1-单变量线性回归

    一、关于回归方程的直观印象

      我们有一批关于'房屋面积'和'房子价格'的数据,如图1-1:

                    【图 1-1】

      从图右边中可以很直观地看出,大致上,随着房屋面积的增加,房屋的售价也在提高,也就是它俩之间有'某种关系'。

      而后,我们想,要是我有一套房子,面积是x平方,那应该标价多少钱才合适呢?

      于是我们就在现有的数据中,找出面积与售价之间的关系,该关系以数学语言表达就是一条线性回归方程(h(x)=kx+b,y为价格,x为面积),面积为自变量,售价为因变量。

      最后将我们手上这套房子的面积代入到方程中,就可以计算出应该标价多少钱。

                    【图 1-2】

      如图1-2右边橙色的线,便是我们通过计算得出的回归方程所绘制的线,再回代房子面积所得出的预测价格,它很'直'。

      尽管线性回归方程不是百分之百符合现实数据,但是它使得一些看起来杂乱的数据更加可量化、计算以及利用,回归方程是一种'折中'。

    二、方程误差

      由图1-2右边可以看出,我们的预测价格与实际价格是有误差的,每处的误差为(预测价格-实际价格),所有误差加起来便是总误差,求总误差的方程便称为代价函数(或 损失函数、成本函数、loss function),以J(k,b)表示。

      其中每处的误差为(预测价格-实际价格),用符号表示便是 h(xi) - yi  (h(x)为回归方程所计算的预测价格,xi,yi表示第i个数据);

      总误差便为∑(h(xi) - yi),但这样做有一个问题,误差有负有正,它们会相互抵消,因此我们为每处误差加上平方,即 ∑(h(xi) - yi2,其中为了方便后续计算,我们将其写成J(k,b)=1/2m·∑(h(xi) - yi2

      当我们想用回归方程去预测房子价格时,当然希望误差最小,即求出代价函数的最小值。

    三、最小误差

      在数学中如何计算最小值?

      答:求导->求驻点、断点、不可导点->通过比较

      但是实际生活的数据中往往很复杂,可能找到驻点很困难、可能数据量大或没有边界(端点)......所以我们只能采取近似的方法去求的最小值。

      求最小值的方法是,选择一个起点,一步一步地去探索最小值,最终收敛。

      在代价函数J(k,b)中,xi ,yi  都是已知数据,唯有h(x)中的k,b未知,求最小值实质就是求'合适'的k,b,使得该代价函数最小。

      求'合适'的k,b的公式,k0=0,b0=0为初始值:

        

      其中:a为学习率,即每次要迈多大的步子去探索,a值太大(容易扯着蛋)容易‘跨’过最小值;太小,则探索时间长。

      为什么要对k,b分别求偏导呢?我们以二维的图像来阐明。设代价函数为J(θ)

                【图3-1】

      图3-1中,图中红色切点便是初始值,求导所得的便是切线的斜率,由图可见该绿色切线斜率为正数。

      于是 θ = θ - a*一个正数,此时θ变小了点,红点往下移,更加靠近图像最低点(代价函数最小值);

      不断重复该过程,切线将趋于平缓,斜率趋于0,函数最小值便收敛了,此过程称之为梯度下降。

                【图3-2】

    四、补充,关于导数的本质

      导数是什么?

      导数是变化率,导数是切线斜率,导数是速度........

      以一元函数而言,导数其实是: 当x变化一点点,y会变化了多少,这个“多少”便是导数。

  • 相关阅读:
    oracle 监听 添加ip
    重装系统windows
    oracle user pwd
    mybatis
    sum行列合计
    IIS8.5 运行WCF
    exp自动备份在bat中不执行
    oem 重建
    yum install oracle-validated
    MSHflexgrid控件删除选中行
  • 原文地址:https://www.cnblogs.com/Drajun/p/10998463.html
Copyright © 2011-2022 走看看