线性回归算法学习

来源:互联网 发布:js中的settimeout 编辑:程序博客网 时间:2024/05/20 01:44

  线性回归(Linear Regression)是利用被陈伟线性回归方程的最小平方函数对一个或多个自变量和应变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为一元回归,大于一个自变量情况的叫做多元回归。

以下就以一元线性回归为例,简要说明何为回归:

  如下表1为随机生成的车辆行驶距离(m)与其预计行驶时间(s)的一个数据集(部分)。该数据集中,只有一个自变量——行驶距离和一个因变量——预计行驶时间。因此我们可以将其在二维坐标系中标记出来,如图1所示。利用该数据集,我们的目的是训练出一个线性方程,使得其能无限逼近所有数据。在本例中,训练所得的线性方程绘图后图像如图2所示。


表1 行驶距离与预计行驶时间对应的数据集

车辆行驶距离(m) 车辆预计行驶时间(s) 1000 58 735 44

图1 车辆行驶距离与预计行驶时间对应关系图


图1 车辆行驶距离与预计行驶时间对应关系图

图2 线性逼近图示

图2 线性逼近图示

  同时,我们可得线性方程如下:

h0(x)=θ0+θ1x1

多元线性回归:

  针对多元线性回归,如果在上述例子中新增一个自变量:沿途经过路口数,那么数据集将如表2所示。


表2 距离、时间与路口数对应关系数据集

行驶距离(m) 经过路口数(个) 预计行驶时间(s) 1000 2 58

  那么,所得到的线性方程应如下所示:


h0(x)=θ0+θ1x1+θ2x2

  因此,无论是一元还是多元线性方程,都可以写成如下格式的方程:

h0(x)=i=0nθixi=θTX


  其中x0=1,而求线性方程就变成了求参数θT

损失函数:

  对于参数θ的求解,在这里我们引进了损失函数(loss function)J(θ),用来描述上式中h函数不好的程度:


J(θ)=12i=1m[hθ(x(i))y(i)]2

minθJθ

  其中系数12是为了求导方便而增设的参数。而如何调整θ使得J(θ)取到最小值常用的方法主要是最小二乘法,也可用梯度下降算法。

最小二乘法与梯度下降算法:

  • 最小二乘法
      采用最小二乘法求解θ时,我们定义训练特征为X矩阵,结果为y向量,则θ可由下列公式求得:

    θ=(XTX)1XTy⃗ 

      最小二乘法在原理上比较简单,但其要求X满秩,且涉及矩阵运算,在实际中处理大量数据会很慢。
  • 梯度下降算法
      梯度下降法可以规避最小二乘法在求解θ时的局限性,但其解得的θ为近似值,在对于求解θ精度不高的情况下可以采用该方法计算。
    1. 批量梯度下降算法
      对于J(θ)函数,求θT的问题就变成了求J(θ)函数的极小值问题。在梯度下降法中梯度方向由J(θ)θ的偏导决定,又由于求的是极小值,梯度方向为偏导数的负方向,如下式:

      θj:=θjαθjJ(θ)

        其中式中α为学习效率,当α过大时,梯度下降过程中可能越过最小值;而当α过小时,迭代收敛速度会较慢。此时需要针对数据实际情况设置合理的α值。
        由于一般情况下样本数量不为0,因此将J(θ)函数带入上式,可得:

      θj:=θj+αi=1m[y(i)hθ(x(i))]x(i)j


        令θT初值为0,再使用该式迭代计算θT中每个参数直至收敛。
    2. 随机梯度下降算法
        由于样本数据量m可能十分大,我们对迭代方式加以改进,在每次迭代计算的时候不再如同批量梯度下降算法使用整个样本集,而是读取其中一条数据对θT进行更新。这样做的好处就是可能不需要读取所有的数据就能达到收敛值,迭代公式如下:

      θj:=θj+α[yhθ(x)]xj


      注:
      判断收敛的方法如下:
      1.当参数 θT 的变化距离为0或小于某一设定阈值
      2.在最求计算精度时,主要验证 J(θ) 是否会变化,或者变化小于某一设定阈值,但该方法要求的计算复杂度就相对较高了
原创粉丝点击