zoukankan      html  css  js  c++  java
  • Linear Regression(线性回归)(一)—LMS algorithm

    (整理自AndrewNG的课件,转载请注明。整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/

    1.问题的引出

        先从一个简单的例子说起吧,房地产公司有一些关于Portland,Oregon的房子信息,下表是房子的面积和价格的对照表:

    Living area(feet^2) Price(1000﹩s)
    2104 400
    1600 330
    2400 369
    1416 232
    3000 540
    …… ……

        将点画在二维坐标下表示:

    image

        那么问题就来了,面积为2000的房子,价格是多少呢?表中没有直接给出答案,考虑能否根据表中给定的数据,得出价格和面积之间的一个函数,对于重新给定的面积来对其价格进行预测,这就是我们要解决的问题。有人说这不是数据拟合吗?没错这就是数据拟合!若为线性拟合,则表达式为:,拟合结果如些图:

    image

        如果给matlab这组数据,再用一个线性拟合的指令,很快便能得到得值。问题是在计算机内部是如何实现这种线性的数据拟合的,没错这就是线性回归的方法。

        为了便于更一般描述线性回归的问题,也为了更加严谨,先对本课程中出现的一些基本符号与概念作出定义:

        :输入变量(例如本例中的Living area),也称为输入特征;

        :输出变量(例如本例中的Price),也成为目标变量;

        一对数据,称为一个训练样本;我们用来学习的训练样本的集合称为训练集。这里的上标指的是样本在训练集中的序号。

        称为输入变量空间,称为输出空间变量。

        把我们的问题描述的更加正式:给定训练集,去学习一个函数,这样就可以根据给定的来预测了。我们也把这个函数称为假设。过程用图表示如下:

    image

        当我们要预测的目标变量是连续时,例如本例中的房屋价格,我们把这种学习问题称为回归问题(regression problem);当目标变量只能取一些离散的值时,我们称这种问题为分类问题(classification problem)。

        更一般地,为了使我们的问题更加一般化,假设输入特征可以多于一个,像在本例中除了Living area,还有#bedrooms、whether each house has a fireplace、#bathrooms,and so on。如果对于一个线性回归问题,有个输入输入变量,则假设可以写成:就是我们需要确定的参数。为了使表述更加简洁,我们令,所以假设可以写成:,等号右侧都是向量,是输入向量的个数(不含)。那么给定一个训练集,我们应该如何选择或者学习?有种想法很显然,就是使更加接近,至少对于训练样本来说是这样的。为了使这个条件公式化,我们需要提出一个衡量标准的函数,我们定义了一个成本函数(cost function):

        至此,线性回归问题就是学习,使最小。

    2 .LMS算法

         既然已经定义了线性回归问题,那么用什么算法求解呢?在数值分析中,遇到过类似的问题,先给一组初始估计值,通过不断地改变,使不断变小,直到收敛。这里我们应用梯度下降法,它的更新规则是:(对同时更新)。其中称为学习率,通过调整此参数,可以改变迭代速度。在等式右侧,需要计算的偏导数:

               

               

               

        所以更新规则变为:

    这个规则就是LMS(最小均方规则)。可以看出每次更新的值是和成比例的,当的值较大时,每次改变的值就较大,反之较小。当已经很小时,说明已经达到拟合要求,的值就不变了。当只有一个训练样本时,我们得到LMS算法,将LMS算法应用到线性回归有两种方式:批处理梯度下降法和随机梯度下降法。

    2.1 批处理梯度下降法

        算法:

       {

                     

    }

    可以看出,的值每更新一次都要遍历样本集中所有的样本,得到新的,看是否满足阈值要求,若满足,则迭代结束,根据此值就可得到;否则继续迭代。注意到,虽然梯度下降法易受目标函数的局部极小值的影响,但是一般的线性规划问题只有一个极小值,所以梯度下降法一般可以收敛到全局的最小值。例如,是二次凸函数,则梯度下降法的示意图:

    image

    图中,一圈上表示代价函数的函数值相同类似于地理上的等高线哈,从外圈开始逐渐迭代,最终收敛全局最小值。

    2.2 随机梯度下降法

        算法:

        {

               {

                       

               }

      }

        在这个算法中,我们每次更新只用到一个训练样本。若根据当前样本进行迭代得到一个,此时会得到一个,有新样本进来之后,在此基础上继续迭代,有得到一组新的,以此类推。

        总结一下这两个梯度算法:批处理梯度下降法,每更新一次,需要用到样本集中的所有样本;随机梯度下降法,每更新一次,只用到训练集中的一个训练样本,所以一般来说,随机梯度下降法能更快的使目标函数达到最小值(新样本的加入,随机梯度下降法有可能会使目标函数突然变大,迭代过程中在变小。所以实在全局最小值附近徘徊,但对于实际应用来说,误差完全能满足要求。)。另外,对于批处理梯度下降法,如果样本集中增加了些许训练样本,就要重新开始迭代。由于以上原因,当训练样本集较大时,一般应用随机梯度下降法。

  • 相关阅读:
    【NOIP 2003】 加分二叉树
    【POJ 1655】 Balancing Act
    【HDU 3613】Best Reward
    【POJ 3461】 Oulipo
    【POJ 2752】 Seek the Name, Seek the Fame
    【POJ 1961】 Period
    【POJ 2406】 Power Strings
    BZOJ3028 食物(生成函数)
    BZOJ5372 PKUSC2018神仙的游戏(NTT)
    BZOJ4836 二元运算(分治FFT)
  • 原文地址:https://www.cnblogs.com/hust-ghtao/p/3576181.html
Copyright © 2011-2022 走看看